Redis-Sentinelは、公式に推奨される高可用性ソリューションです。[redis](https://cloud.tencent.com/product/crs?from=10680)がマスタースレーブの高可用性ソリューションを実行しているときに、マスターがダウンした場合、redis自体(およびそのクライアントの多く)は自動処理を実現していません。アクティブ/スタンバイ切り替え、およびredis-sentinel自体は独立したプロセスであり、redisクラスターと通信してredisクラスターを監視できる他のマシンに展開できます。
1、 時々、redisが期待どおりに実行されているかどうかを監視します。
2、 redisノードが実行中であることが判明した場合、別のプロセス(クライアントなど)に通知できます。
3、 自動的に切り替えることができます。マスターノードが使用できない場合、マスターの複数のスレーブ(複数のスレーブがある場合)の1つを新しいマスターとして選択でき、他のスレーブノードはそれに昇格するマスターのアドレスを変更します。マスターのスレーブの新しいアドレス。
4、 歩哨はクライアントにサービス検出を提供します。クライアントは歩哨に接続します。歩哨は現在のマスターのアドレスを提供してからサービスを提供します。スイッチがある場合、つまりマスターが電話を切ると、歩哨はクライアントに新しいアドレスを提供します。
192.168.0.106 CentOS6.9
参照:[http://blog.csdn.net/wh211212/article/details/52817923](http://blog.csdn.net/wh211212/article/details/52817923)
virsh attach-disk kvm-6 /dev/vg_shkvm3/kvm-6-data vdb –driver qemu –mode shareable
wget http://download.redis.io/releases/redis-3.2.8.tar.gz -P /usr/local/src
tar xvf redis-3.2.8.tar.gz -C /usr/local/
cd /usr/local/
ln -sv redis-3.2.8 redis
echo 512>/proc/sys/net/core/somaxconn
sysctl vm.overcommit_memory=1
yum groupinstall -y "Development Tools"
yum -y install tcl #テストエラーを防ぐためにtcl依存関係をインストールします
解決:
1 、シングルコアのみでmakeテストを実行します。
taskset -c 1 sudo make test
2 、tests / Integration /replication-psync.tclファイルを変更します。
vi tests/integration/replication-psync.tcl
エラーに対応するコードのafterの後の番号を100から500に変更します。個人的には、このパラメータは待機するミリ秒数のようだと思います。
cd redis && make && make test
mkdir -pv /data/redis-sentinel/{9000,9001,9002}
cp src/{redis-server,redis-sentinel}/data/redis-sentinel/9000/
cp src/{redis-server,redis-sentinel}/data/redis-sentinel/9001/
cp src/{redis-server,redis-sentinel}/data/redis-sentinel/9002/
cp redis.conf sentinel.conf /data/redis-sentinel/9000/
cp redis.conf sentinel.conf /data/redis-sentinel/9001/
cp redis.conf sentinel.conf /data/redis-sentinel/9002/
# vim /data/redis-sentinel/9000/redis.conf
bind 192.168.0.106protected-mode no
port 9000
daemonize yes
appendonly yes
# \ cp /data/redis-sentinel/9000/redis.conf /data/redis-sentinel/9001/redis.conf
# \ cp /data/redis-sentinel/9000/redis.conf /data/redis-sentinel/9002/redis.conf
sed -i 's/9000/9001/g'/data/redis-sentinel/9001/redis.conf
# vim /data/redis-sentinel/9001/redis.conf
port 9001
slaveof 192.168.0.1069000
# vim /data/redis-sentinel/9002/redis.conf
sed -i 's/9000/9002/g'/data/redis-sentinel/9002/redis.conf
port 9002
slaveof 192.168.0.1069000
# cd /data/redis-sentinel/9000/
# . /redis-server redis.conf
# cd ../9001/
# . /redis-server redis.conf
# cd ../9002/
# . /redis-server redis.conf
# ps -ef | grep redis
root 42181017:03?00:00:00./redis-server 192.168.0.106:9000
root 42381017:03?00:00:00./redis-server 192.168.0.106:9001
root 42521017:03?00:00:00./redis-server 192.168.0.106:9002
# /usr/local/redis/src/redis-cli -h 192.168.0.106-p 9000192.168.0.106:9000>set name aniu
OK
192.168.0.106:9000> get name
" aniu"192.168.0.106:9000> info replication
# Replication
192.168.0.106:9000> info replication
# Replication
role:master
connected_slaves:2
slave0:ip=192.168.0.106,port=9001,state=online,offset=1121,lag=0
slave1:ip=192.168.0.106,port=9002,state=online,offset=1121,lag=1
master_repl_offset:1121
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:1120
# cd /data/redis-sentinel/9000
# vim sentinel.conf
protected-mode no
port 29000
daemonize yes
dir /data/redis-sentinel/9000/logs
sentinel monitor mymaster 192.168.0.10690002
# mkdir logs
# . /redis-sentinel sentinel.conf
# \ cp sentinel.conf ../9001/
# \ cp sentinel.conf ../9002/
# cd ../9001/
port 29001
dir "/data/redis-sentinel/9001/logs"
# mkdir logs
# . /redis-sentinel sentinel.conf
- 歩哨3を配備する
# cd ../9002/
# vim sentinel.conf
port 29002
dir "/data/redis-sentinel/9002/logs"
# mkdir logs
# . /redis-sentinel sentinel.conf
# /usr/local/redis/src/redis-cli -h 192.168.0.106-p 29000[root@sh-kvm-3-69002]# /usr/local/redis/src/redis-cli -h 192.168.0.106-p 29000192.168.0.106:29000> sentinel masters
1)1)" name"2)"mymaster"3)"ip"4)"192.168.0.106"5)"port"6)"9000"7)"runid"8)"03427a4cd4f22401f55d07952424ba4b31144b57"9)"flags"10)"master"11)"link-pending-commands"12)"0"13)"link-refcount"14)"1"15)"last-ping-sent"16)"0"17)"last-ok-ping-reply"18)"542"19)"last-ping-reply"20)"542"21)"down-after-milliseconds"22)"30000"23)"info-refresh"24)"3335"25)"role-reported"26)"master"27)"role-reported-time"28)"515500"29)"config-epoch"30)"0"31)"num-slaves"32)"2"33)"num-other-sentinels"34)"0"35)"quorum"36)"2"37)"failover-timeout"38)"180000"39)"parallel-syncs"40)"1"192.168.0.106:29000> sentinel slaves mymaster
1)1)" name"2)"192.168.0.106:9002"3)"ip"4)"192.168.0.106"5)"port"6)"9002"7)"runid"8)"42ec153d250bf9aff05765346e0fdc2ee33d1257"9)"flags"10)"slave"11)"link-pending-commands"12)"0"13)"link-refcount"14)"1"15)"last-ping-sent"16)"0"17)"last-ok-ping-reply"18)"510"19)"last-ping-reply"20)"510"21)"down-after-milliseconds"22)"30000"23)"info-refresh"24)"6271"25)"role-reported"26)"slave"27)"role-reported-time"28)"548469"29)"master-link-down-time"30)"0"31)"master-link-status"32)"ok"33)"master-host"34)"192.168.0.106"35)"master-port"36)"9000"37)"slave-priority"38)"100"39)"slave-repl-offset"40)"57920"2)1)"name"2)"192.168.0.106:9001"3)"ip"4)"192.168.0.106"5)"port"6)"9001"7)"runid"8)"afdc283bae3f48fb0ceb6f8dd9af8248928406ec"9)"flags"10)"slave"11)"link-pending-commands"12)"0"13)"link-refcount"14)"1"15)"last-ping-sent"16)"0"17)"last-ok-ping-reply"18)"510"19)"last-ping-reply"20)"510"21)"down-after-milliseconds"22)"30000"23)"info-refresh"24)"6271"25)"role-reported"26)"slave"27)"role-reported-time"28)"548486"29)"master-link-down-time"30)"0"31)"master-link-status"32)"ok"33)"master-host"34)"192.168.0.106"35)"master-port"36)"9000"37)"slave-priority"38)"100"39)"slave-repl-offset"40)"57920"
requirepass yourpassword
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command KEYS ""
Recommended Posts