redisクラスタ構築(masterとslaveを手動で指定)

5026 ワード

次のページに続きます.https://blog.csdn.net/u010533511/article/details/89388547
1、マスターを3個作成
/usr/local/redis_cluster/redis-trib.rb create --replicas 0 192.168.135.23:7001 192.168.135.229:7007 192.168.135.196:7004

--replicas 1は、クラスタのmasterノードにslaveを1つ作成することを示します.では、6つの例にはmasterが3つ、slaveが3つあります.
--replicas 0はクラスタのmasterノードにslaveを作成しません.
2、指定した主の下にslaveを3つずつ指定する
/usr/local/redis_cluster/redis-trib.rb add-node --slave --master-id d1983a08bade495716392200e2b3efbd09736631 192.168.135.196:7005 192.168.135.23:7001

/usr/local/redis_cluster/redis-trib.rb add-node --slave --master-id 9cd7049834c0f3183b474b0bd3e516b5359f6c67 192.168.135.229:7008 192.168.135.196:7004

/usr/local/redis_cluster/redis-trib.rb add-node --slave --master-id 5d6bc6740e5bc88643377746d140fdf63f812d88 192.168.135.23:7002 192.168.135.229:7007

3、クラスタの状態を表示する:
[root@localhost /]# cd /usr/local/redis_cluster
[root@localhost redis_cluster]# ./redis-trib.rb check 192.168.135.23:7001
>>> Performing Cluster Check (using node 192.168.135.23:7001)
M: d1983a08bade495716392200e2b3efbd09736631 192.168.135.23:7001
   slots:0-5460 (5461 slots) master
   1 additional replica(s)
S: 883862d8a29665094995ca75f41c39186979bbc0 192.168.135.229:7008
   slots: (0 slots) slave
   replicates 9cd7049834c0f3183b474b0bd3e516b5359f6c67
S: d5c04adcad1034d2b1bcb327a86a9519efe1ca04 192.168.135.196:7005
   slots: (0 slots) slave
   replicates d1983a08bade495716392200e2b3efbd09736631
M: 9cd7049834c0f3183b474b0bd3e516b5359f6c67 192.168.135.196:7004
   slots:10923-16383 (5461 slots) master
   1 additional replica(s)
S: 2f40bcf6bdde917a39ed67c47e943161b378d952 192.168.135.23:7002
   slots: (0 slots) slave
   replicates 5d6bc6740e5bc88643377746d140fdf63f812d88
M: 5d6bc6740e5bc88643377746d140fdf63f812d88 192.168.135.229:7007
   slots:5461-10922 (5462 slots) master
   1 additional replica(s)
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.

4、getとsetデータをテストする
 redis-cli -c -p 7001
コマンドウィンドウに入り、直接set test success
hashマッチングに基づいて対応するslotのノードに直接切り替えられます.
redisクラスタは16383個のslotからなり,スライスにより複数のノードに分布し,読み書きはmasterノードで発生する.
5、サーバーのすべてのredisサービスを停止してクラスタが正常かどうかを確認する
例えば229のredisサービスをオフにする
[root@localhost /]# ps -ef|grep cluster
root     21193  6432  0 23:19 pts/1    00:00:00 grep --color=auto cluster
root     24263     1  0 14:10 ?        00:00:17 ../redis-server 0.0.0.0:7007 [cluster]
root     26660     1  0 14:32 ?        00:00:16 ../redis-server 0.0.0.0:7008 [cluster]
[root@localhost /]# kill 24263 26660
[root@localhost /]# ps -ef|grep cluster
root     21236  6432  0 23:19 pts/1    00:00:00 grep --color=auto cluster

クラスタが正常かどうかを確認
[root@localhost redis_cluster]# ./redis-cli -c -p 7001
192.168.135.23:7002> get test
-> Redirected to slot [12291] located at 192.168.135.196:7004
"success"
192.168.135.196:7004> cluster nodes
d5c04adcad1034d2b1bcb327a86a9519efe1ca04 192.168.135.196:7005@17005 slave d1983a08bade495716392200e2b3efbd09736631 0 1555601184508 7 connected
d1983a08bade495716392200e2b3efbd09736631 192.168.135.23:7001@17001 master - 0 1555601184120 7 connected 0-5460
9cd7049834c0f3183b474b0bd3e516b5359f6c67 192.168.135.196:7004@17004 myself,master - 0 1555601182000 9 connected 10923-16383
883862d8a29665094995ca75f41c39186979bbc0 192.168.135.229:7008@17008 slave,fail 9cd7049834c0f3183b474b0bd3e516b5359f6c67 1555601043264 1555601042000 9 disconnected
2f40bcf6bdde917a39ed67c47e943161b378d952 192.168.135.23:7002@17002 master - 0 1555601185527 10 connected 5461-10922
5d6bc6740e5bc88643377746d140fdf63f812d88 192.168.135.229:7007@17007 master,fail - 1555601043264 1555601043181 5 disconnected
192.168.135.196:7004> 

229がオフになってもクラスタは正常で、高可用性を実現し、229上のredisサービスを再起動すると自動的にクラスタに参加することがわかります.
192.168.135.196:7004> cluster nodes
d5c04adcad1034d2b1bcb327a86a9519efe1ca04 192.168.135.196:7005@17005 slave d1983a08bade495716392200e2b3efbd09736631 0 1555601482087 7 connected
d1983a08bade495716392200e2b3efbd09736631 192.168.135.23:7001@17001 master - 0 1555601483301 7 connected 0-5460
9cd7049834c0f3183b474b0bd3e516b5359f6c67 192.168.135.196:7004@17004 myself,master - 0 1555601479000 9 connected 10923-16383
883862d8a29665094995ca75f41c39186979bbc0 192.168.135.229:7008@17008 slave 9cd7049834c0f3183b474b0bd3e516b5359f6c67 0 1555601482303 9 connected
2f40bcf6bdde917a39ed67c47e943161b378d952 192.168.135.23:7002@17002 master - 0 1555601481000 10 connected 5461-10922
5d6bc6740e5bc88643377746d140fdf63f812d88 192.168.135.229:7007@17007 slave 2f40bcf6bdde917a39ed67c47e943161b378d952 0 1555601482503 10 connected

しかし、229のredisが再起動してslaveになっていることに気づき、23の上には今2つのmasterがあります.そうすると、ある日23のサーバーが切れたら、クラスタも切れたに違いありません.どうすればいいのでしょうか.良い解決策が見つからなかったので、23の上の元のslaveのものをkillに落とし、229の上の対応するslaveを元のmasterに戻しました.皆さんはまだこの問題を解決する方法がありますか?