============ Redis 叢集 ============
1、前置依賴:
1.1)、叢集用到ruby指令,是以安裝ruby,方式一
(1)、【yum install ruby】
(2)、【yum install rubygems】
(3)、【gem install redis】,安裝redis和ruby接口,redis版本要2.2.x以上
1.2)、叢集用到ruby指令,是以安裝ruby,方式二
(1)、安裝rvm
1]、切換到root目錄下:【cd /】
2]、【gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB】
3]、【curl -sSL https://get.rvm.io | bash -s stable】
4]、【source /etc/profile.d/rvm.sh】
5]、檢視是否安裝成功:【rvm -v】
(2)、安裝ruby:【rvm install 2.4.2】
(3)、【gem install redis】,安裝redis和ruby接口,redis版本要2.2.x以上
2、說明:至少6台,3主3從,本例中【7001[master1]、7002[master2]、7003[master3]、7004[slave1]、7005[slave2]、7006[slave3]】,搭建在同台機器上
3、搭建步驟:
1)、分别在6台機器上遞歸建立檔案夾:【mkdir -p /usr/local/redis-cluster/700*】
2)、将redis.conf配置檔案分别copy到700*下,進行修改各個檔案的内容
(1)、背景啟動:【daemonize yes】
(2)、端口号:【port 700*】
(3)、綁定目前機器IP:【bind 192.168.56.101】
(4)、指定資料檔案存放路徑:【dir /usr/local/redis-cluster/700*/】,不修改擔心丢失資料
(5)、持久方式開啟快照:【appendonly yes】,生産上用【appendfsync always】
(6)、啟動叢集模式:【cluster-enabled yes】
(7)、節點配置檔案與端口号對應:【cluster-config-file nodes700*.conf】,讓每個節點互相知道對方的存在
(8)、設定逾時時間:【cluster-node-timeout 15000】
4)、逐個啟動6個redis執行個體:【/usr/local/redis/bin/redis-server /usr/local/redis-cluster/700*/redis.conf】
5)、檢查是否啟動成功:【ps -ef | grep redis】,檢視是否已存在對應程序
6)、在redis的安裝目錄下,執行叢集腳本:【/usr/local/redis-3.0.7/src/redis-trib.rb create --replicas 1 192.168.56.101:7001 192.168.56.102:7002 192.168.56.103:7003 192.168.56.104:7004 192.168.56.105:7005 192.168.56.106:7006】,下次重新開機機器不需要此操作
注:其中的 1 為主節點與從節點的比值(1 = 主節點數量/從節點數量),主節點排完,接着排從節點,一一對應,例如,7001為master1,則7004為slave1
7)、連接配接任意用戶端:【/usr/local/redis/bin/redis-cli -c -h 192.168.56.101 -p 7001】(./redis-cli -c -h -p),[-c 表示叢集模式,-h指定ip,-p指定端口号]
8)、驗證叢集是否搭建成功:檢視叢集資訊【cluster info】,檢視叢集節點【cluster nodes】
9)、關閉叢集:【/usr/local/redis/bin/redis-cli -c -h 192.168.56.101 -p 700* shutdown】,需要逐個關閉
注意:出現叢集無法啟動時,删除臨時的資料檔案,再次重新啟動每個redis服務,然後重新建構叢集環境
=======================成功出現的資訊 start============================
[[email protected] ~]# /usr/local/redis-3.0.7/src/redis-trib.rb create --replicas 1 192.168.56.101:7001 192.168.56.102:7002 192.168.56.103:7003 192.168.56.104:7004 192.168.56.105:7005 192.168.56.106:7006
>>> Creating cluster
>>> Performing hash slots allocation on 6 nodes...
Using 3 masters:
192.168.56.101:7001
192.168.56.102:7002
192.168.56.103:7003
Adding replica 192.168.56.104:7004 to 192.168.56.101:7001
Adding replica 192.168.56.105:7005 to 192.168.56.102:7002
Adding replica 192.168.56.106:7006 to 192.168.56.103:7003
M: 455ebdfdaf1eebea64cab978683a50ce49fd915e 192.168.56.101:7001
slots:0-5460 (5461 slots) master
M: d40f7099e2725a94838ddc53d775a04f7b28d4b8 192.168.56.102:7002
slots:5461-10922 (5462 slots) master
M: a13f3b7390f20d43ee68b0a69e1e97b75427df13 192.168.56.103:7003
slots:10923-16383 (5461 slots) master
S: 523a99ecbb07b3d608d3fe17d63b07a487633cc9 192.168.56.104:7004
replicates 455ebdfdaf1eebea64cab978683a50ce49fd915e
S: db1126d54bf9f40f40342d188531cddf26f9f58d 192.168.56.105:7005
replicates d40f7099e2725a94838ddc53d775a04f7b28d4b8
S: ac4ebd89454e19f85cae1cfb8a273a6d8b306ce3 192.168.56.106:7006
replicates a13f3b7390f20d43ee68b0a69e1e97b75427df13
Can I set the above configuration? (type 'yes' to accept): yes
>>> Nodes configuration updated
>>> Assign a different config epoch to each node
>>> Sending CLUSTER MEET messages to join the cluster
Waiting for the cluster to join.....
>>> Performing Cluster Check (using node 192.168.56.101:7001)
M: 455ebdfdaf1eebea64cab978683a50ce49fd915e 192.168.56.101:7001
slots:0-5460 (5461 slots) master
M: d40f7099e2725a94838ddc53d775a04f7b28d4b8 192.168.56.102:7002
slots:5461-10922 (5462 slots) master
M: a13f3b7390f20d43ee68b0a69e1e97b75427df13 192.168.56.103:7003
slots:10923-16383 (5461 slots) master
M: 523a99ecbb07b3d608d3fe17d63b07a487633cc9 192.168.56.104:7004
slots: (0 slots) master
replicates 455ebdfdaf1eebea64cab978683a50ce49fd915e
M: db1126d54bf9f40f40342d188531cddf26f9f58d 192.168.56.105:7005
slots: (0 slots) master
replicates d40f7099e2725a94838ddc53d775a04f7b28d4b8
M: ac4ebd89454e19f85cae1cfb8a273a6d8b306ce3 192.168.56.106:7006
slots: (0 slots) master
replicates a13f3b7390f20d43ee68b0a69e1e97b75427df13
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
=======================成功出現的資訊 end============================