1. 程式人生 > >Redis4.0.10集群搭建

Redis4.0.10集群搭建

sage enable wget PE 後臺 rubygems RM col clean

192.168.254.128
192.168.254.129
192.168.254.127
註意事項
安裝 GCC 編譯工具 不然會有編譯不過的問題
yum install -y gcc g++ gcc-c++ make
升級所有的包,防止出現版本過久不兼容問題
yum -y update

環境準備
安裝ruby;

關閉防火墻 節點之前需要開放指定端口,為了方便,生產不要禁用
centos 6.x
service iptables stop # 關閉命令:
centos 7.x
systemctl stop firewalld.service # 停止firewall

集群搭建
首先在每臺服務器上分別搭建redis及配置

安裝 Redis
下載,解壓,編譯安裝
cd /opt
wget http://download.redis.io/releases/redis-4.0.10.tar.gz
tar xzf redis-4.0.10.tar.gz
cd redis-4.0.10
make
如果因為上次編譯失敗,有殘留的文件
make distclean

創建節點
分別在每臺服務器上 創建集群目錄
cd /usr/local/
mkdir redis-cluster

在每臺 redis-cluster 目錄下
cd redis-cluster/
分別在每臺服務器上創建
192.168.254.128
mkdir 6000 6001 6002

192.168.254.129
mkdir 6003 6004 6005

192.168.254.127
mkdir 6006 6007 6008
分別修改每臺服務器上的三個配置文件,把如下redis.conf 配置內容粘貼進去
192.168.254.128
vi 6000/redis.conf
vi 6001/redis.conf
vi 6002/redis.conf

192.168.254.129
vi 6003/redis.conf
vi 6004/redis.conf
vi 6005/redis.conf

192.168.254.127
vi 6006/redis.conf
vi 6007/redis.conf
vi 6008/redis.conf

分別在每臺服務器上配置相應的配置
redis.conf 配置說明
#端口 6000 6001 6002
port 6000

#默認ip為127.0.0.1,需要改為其他節點機器可訪問的ip,否則創建集群時無法訪問對應的端口,無法創建集群
bind 192.168.254.128
#redis後臺運行
daemonize yes
#pidfile文件對應6000,6001,6002
pidfile /var/run/redis_6000.pid
#開啟集群,把註釋#去掉
cluster-enabled yes
#集群的配置,配置文件首次啟動自動生成 6000,6001,6002
cluster-config-file nodes_6000.conf
#請求超時,默認15秒,可自行設置
cluster-node-timeout 10100
#aof日誌開啟,有需要就開啟,它會每次寫操作都記錄一條日誌
appendonly yes

接著在另外兩臺機器上(192.168.254.129;192.168.254.127)重復以上三步,只是把目錄改為6003、6004、6005;6006、6007、008對應的配置文件也按照這個規則修改即可

#第一臺機器上執行 3個節點
for((i=0;i<=2;i++)); do /opt/redis-4.0.10/src/redis-server /usr/local/redis-cluster/600$i/redis.conf; done
第二臺機器上執行 3個節點
for((i=3;i<=5;i++)); do /opt/redis-4.0.10/src/redis-server /usr/local/redis-cluster/600$i/redis.conf; done
第三臺機器上執行 3個節點
for((i=6;i<=8;i++)); do /opt/redis-4.0.10/src/redis-server /usr/local/redis-cluster/600$i/redis.conf; done

檢查服務
檢查各 Redis 各個節點啟動情況
ps -ef | grep redis //redis是否啟動成功
netstat -tnlp | grep redis //監聽redis端口

安裝ruby
在剛安裝好的redis服務器上安裝ruby
因為創建集群時需要用Ruby 運行redis-trib.rb
yum -y install ruby ruby-devel rubygems rpm-build

gem install redis 這個自動安裝不了
只能把它下載下來,手工安裝
wget http://rubygems.global.ssl.fastly.net/gems/redis-4.0.1.gem
gem install -l ./redis-4.0.1.gem

/opt/redis-4.0.10/src/redis-trib.rb create --replicas 1 192.168.254.128:6000 192.168.254.128:6001 192.168.254.128:6002 192.168.254.129:6003 192.168.254.129:6004 192.168.254.129:6005 192.168.254.127:6006 192.168.254.127:6007 192.168.254.127:6008

>> Creating cluster
>> Performing hash slots allocation on 9 nodes...
Using 4 masters:
192.168.254.128:6000
192.168.254.129:6003
192.168.254.127:6006
192.168.254.128:6001
Adding replica 192.168.254.127:6007 to 192.168.254.128:6000
Adding replica 192.168.254.128:6002 to 192.168.254.129:6003
Adding replica 192.168.254.129:6005 to 192.168.254.127:6006
Adding replica 192.168.254.127:6008 to 192.168.254.128:6001
Adding replica 192.168.254.129:6004 to 192.168.254.128:6000
M: a4652ca08fd832def811f585ac14a3367364b6bc 192.168.254.128:6000
slots:0-4095 (4096 slots) master
M: 6275ac1e805e1d54281b66a7d49d64d2b0e802da 192.168.254.128:6001
slots:12288-16383 (4096 slots) master
S: 84a752afcb6fda24df7a2fa220d38170daac5976 192.168.254.128:6002
replicates d9228859beb0180ab6ff198a1819088d401f936a
M: d9228859beb0180ab6ff198a1819088d401f936a 192.168.254.129:6003
slots:4096-8191 (4096 slots) master
S: 4fc65bf3c4747d767fa56b357891d4062b310f52 192.168.254.129:6004
replicates a4652ca08fd832def811f585ac14a3367364b6bc
S: ea51fa38217674f51a968b341732d77eabe7561d 192.168.254.129:6005
replicates b14eddc61b984089360713932cd16bd114f3aff4
M: b14eddc61b984089360713932cd16bd114f3aff4 192.168.254.127:6006
slots:8192-12287 (4096 slots) master
S: 84645ac8b50a4f199b413a290835f363c2c17cd8 192.168.254.127:6007
replicates a4652ca08fd832def811f585ac14a3367364b6bc
S: 172be3915c71f16302fa3ce8219af024f950f0e5 192.168.254.127:6008
replicates 6275ac1e805e1d54281b66a7d49d64d2b0e802da
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.254.128:6000)
M: a4652ca08fd832def811f585ac14a3367364b6bc 192.168.254.128:6000
slots:0-4095 (4096 slots) master
2 additional replica(s)
S: ea51fa38217674f51a968b341732d77eabe7561d 192.168.254.129:6005
slots: (0 slots) slave
replicates b14eddc61b984089360713932cd16bd114f3aff4
S: 172be3915c71f16302fa3ce8219af024f950f0e5 192.168.254.127:6008
slots: (0 slots) slave
replicates 6275ac1e805e1d54281b66a7d49d64d2b0e802da
S: 84645ac8b50a4f199b413a290835f363c2c17cd8 192.168.254.127:6007
slots: (0 slots) slave
replicates a4652ca08fd832def811f585ac14a3367364b6bc
S: 4fc65bf3c4747d767fa56b357891d4062b310f52 192.168.254.129:6004
slots: (0 slots) slave
replicates a4652ca08fd832def811f585ac14a3367364b6bc
M: d9228859beb0180ab6ff198a1819088d401f936a 192.168.254.129:6003
slots:4096-8191 (4096 slots) master
1 additional replica(s)
M: 6275ac1e805e1d54281b66a7d49d64d2b0e802da 192.168.254.128:6001
slots:12288-16383 (4096 slots) master
1 additional replica(s)
S: 84a752afcb6fda24df7a2fa220d38170daac5976 192.168.254.128:6002
slots: (0 slots) slave
replicates d9228859beb0180ab6ff198a1819088d401f936a
M: b14eddc61b984089360713932cd16bd114f3aff4 192.168.254.127:6006
slots:8192-12287 (4096 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.
[root@worker1 ~]# ps -ef|grep redis
root 17107 1 0 15:49 ? 00:00:24 /opt/redis-4.0.10/src/redis-server 192.168.254.128:6000 [cluster]
root 17112 1 0 15:49 ? 00:00:24 /opt/redis-4.0.10/src/redis-server 192.168.254.128:6001 [cluster]
root 17114 1 0 15:49 ? 00:00:24 /opt/redis-4.0.10/src/redis-server 192.168.254.128:6002 [cluster]
root 36435 16949 0 20:21 pts/0 00:00:00 grep --color=auto redis

關閉集群
這樣也可以,推薦
$ pkill redis
循環節點逐個關閉
for((i=0;i<=2;i++)); do /opt/redis-4.0.10/src/redis-cli -c -h 192.168.254.128 -p 600$i shutdown; done
for((i=3;i<=5;i++)); do /opt/redis-4.0.10/src/redis-cli -c -h 192.168.254.129 -p 600$i shutdown; done
for((i=6;i<=8;i++)); do /opt/redis-4.0.10/src/redis-cli -c -h 192.168.254.127 -p 600$i shutdown; done

集群驗證
連接集群測試
參數 -C 可連接到集群,因為 redis.conf 將 bind 改為了ip地址,所以 -h 參數不可以省略,-p 參數為端口號

查看集群狀態
cluster nodes

Redis4.0.10集群搭建