四、Redis+Keepalived主従ホットスペア配置方案
8150 ワード
目次
一、バックアップ方式
二、インストール配置keepalived
三、インストール配置redis
Redis配置方式は主従方式を採用し、keepalivedを通じて外部に虚IPを提供し、主従自動切替機能を実現する.マスタインスタンスA(master):188.102.2.96スペアインスタンスB(slave):188.102.2.97ダミーIP(VIP):188.102.2.98
正常動作時:ダミーIPはメインインスタンスA上で、データ同期バックアップ:A→BメインインスタンスAダウンタイム:メインインスタンスBは自動的にIPを引き継ぎ、redisをメインモードに変換し、元のメインインスタンスAが回復した後、Aは自動的にバックアップモードに変換し、データ同期バックアップ:A←B、メインスタンバイロール交換、災害対応を実現する.
1、keepalivedを取り付ける
2、keepalived(1)を構成するには、まずmasterで次の構成を作成します.
(2)slaveで次の構成を作成します.
(3)masterとslaveで次の構成を作成します.
3、実行権限の追加
4、keepalivedを起動する
1、redisをインストールし、アドレスをダウンロードする:https://redis.io/download
注意:システム時間は正しく設定する必要があります
2.redisを配置する.config
3、redisを起動する
一、バックアップ方式
二、インストール配置keepalived
三、インストール配置redis
一、バックアップ方式
Redis配置方式は主従方式を採用し、keepalivedを通じて外部に虚IPを提供し、主従自動切替機能を実現する.マスタインスタンスA(master):188.102.2.96スペアインスタンスB(slave):188.102.2.97ダミーIP(VIP):188.102.2.98
正常動作時:ダミーIPはメインインスタンスA上で、データ同期バックアップ:A→BメインインスタンスAダウンタイム:メインインスタンスBは自動的にIPを引き継ぎ、redisをメインモードに変換し、元のメインインスタンスAが回復した後、Aは自動的にバックアップモードに変換し、データ同期バックアップ:A←B、メインスタンバイロール交換、災害対応を実現する.
二、インストール配置keepalived
1、keepalivedを取り付ける
#
yum install -y curl gcc openssl-devel popt-devel libnl3-devel net-snmp-devel
#
wget https://www.keepalived.org/software/keepalived-2.0.17.tar.gz
#
tar zxvf keepalived-2.0.17.tar.gz
cd keepalived-2.0.17
./configure –prefix=/data/keepalived # /data/keepalived
make
make install
2、keepalived(1)を構成するには、まずmasterで次の構成を作成します.
# keepalived.conf
vim /data/keepalived/keepalived.conf
#
vrrp_script chk_redis {
script "/data/keepalived/scripts/redis_check.sh" ###
interval 2 ###
}
vrrp_instance VI_1 {
state MASTER ### MASTER
interface ens160 ###
virtual_router_id 51
priority 101 ### , slave
authentication {
auth_type PASS ###
auth_pass redis ### slave
}
track_script {
chk_redis ### chk_redis
}
virtual_ipaddress {
188.102.2.98 ###VIP
}
notify_master /data/keepalived/scripts/redis_master.sh
notify_backup /data/keepalived/scripts/redis_backup.sh
notify_fault /data/keepalived/scripts/redis_fault.sh
notify_stop /data/keepalived/scripts/redis_stop.sh
}
# redis_master.sh
vim /data/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_MASTER -p $REDISPORT SLAVEOF $REDIS_SLAVE $REDISPORT >> $LOGFILE 2>&1
sleep 10 #10̬ͬ
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_MASTER -p $REDISPORT SLAVEOF NO ONE >> $LOGFILE 2>&1
# redis_backup.sh
vim /data/keepalived/scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15 #15
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -p $REDISPORT SLAVEOF $REDIS_SLAVE $REDISPORT >> $LOGFILE 2>&1
(2)slaveで次の構成を作成します.
# keepalived.conf
vim /data/keepalived/keepalived.conf
vrrp_script chk_redis {
script "/data/keepalived/scripts/redis_check.sh" ###
interval 2 ###
}
vrrp_instance VI_1 {
state BACKUP ### BACKUP
interface ens160 ###
virtual_router_id 51
priority 100 ### , ASTRE
authentication {
auth_type PASS ###
auth_pass redis ### MASTRE
}
track_script {
chk_redis ### chk_redis
}
virtual_ipaddress {
188.102.2.98 ###VIP
}
notify_master /data/keepalived/scripts/redis_master.sh
notify_backup /data/keepalived/scripts/redis_backup.sh
notify_fault /data/keepalived/scripts/redis_fault.sh
notify_stop /data/keepalived/scripts/redis_stop.sh
}
# redis_master.sh
vim /data/keepalived/scripts/redis_master.sh
#!/bin/bash
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
echo "[master]" >> $LOGFILE
date >> $LOGFILE
echo "Being master...." >> $LOGFILE 2>&1
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_SLAVE -p $REDISPORT SLAVEOF $REDIS_MASTER $REDISPORT >> $LOGFILE 2>&1
sleep 10 # 10
echo "Run SLAVEOF NO ONE cmd ..." >> $LOGFILE
$REDISCLI -a redis -h $REDIS_SLAVE -p $REDISPORT SLAVEOF NO ONE >> $LOGFILE 2>&1
# redis_backup.sh
vim /data/keepalived/scripts/redis_backup.sh
#!/bin/bash
REDISCLI="/data/redis/bin/redis-cli"
LOGFILE="/var/log/keepalived-redis-state.log"
REDISPORT=7001
REDIS_MASTER=188.102.2.96
REDIS_SLAVE=188.102.2.97
echo "[backup]" >> $LOGFILE
date >> $LOGFILE
echo "Being slave...." >> $LOGFILE 2>&1
sleep 15 # 15
echo "Run SLAVEOF cmd ..." >> $LOGFILE
$REDISCLI -a redis -p $REDISPORT SLAVEOF $REDIS_MASTER $REDISPORT >> $LOGFILE 2>&1
(3)masterとslaveで次の構成を作成します.
# redis_check.sh
vim /data/keepalived/scripts/redis_check.sh
#!/bin/bash
REDISPORT=7001
ALIVE=`/data/redis/bin/redis-cli -a redis -p $REDISPORT PING`
if [ "$ALIVE" == "PONG" ]; then
echo $ALIVE
exit 0
else
echo $ALIVE
exit 1
fi
3、実行権限の追加
chmod +x /data/keepalived/scripts/*.sh
4、keepalivedを起動する
Service keepalived start
三、インストール配置redis
1、redisをインストールし、アドレスをダウンロードする:https://redis.io/download
# ( )
tar zxvf redis-5.0.5.tar.gz
cd redis-5.0.5
./configure
make
make install
注意:システム時間は正しく設定する必要があります
2.redisを配置する.config
# redis.conf
vim /data/redis/etc/7001.conf
daemonize no
pidfile /var/run/redis.pid
port 7001
tcp-backlog 511
timeout 0
tcp-keepalive 0
loglevel notice
logfile "/data/redis/redis.log"
databases 16
save 900 1
save 300 10
save 60 10000
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
dbfilename dump.rdb
dir ./
slave-serve-stale-data yes
slave-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
slave-priority 100
appendonly no
appendfilename "appendonly.aof"
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
lua-time-limit 5000
slowlog-log-slower-than 10000
slowlog-max-len 128
latency-monitor-threshold 0
notify-keyspace-events ""
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-entries 512
list-max-ziplist-value 64
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
hz 10
aof-rewrite-incremental-fsync yes
requirepass redis
masterauth redis
3、redisを起動する
# redis.conf redis
/data/redis-7001/bin/redis-server /data/redis-7001/etc/7001.conf
# start_redis.sh
#!/bin/bash
/data/redis-7001/bin/redis-server /data/redis-7001/etc/7001.conf 2>&1 &