Redis集群cluster環境搭建
注意:5.0版本后集群搭建有所改變,不在使用ruby語言創建集群,所以可以跨過ruby的相關插件安裝
描述:本章節主要單服務器搭建集群,在一個服務器上啟動多個不同端口的redis服務,非真實環境。
真實環境下redis集群會搭建在多個物理服務器上,並非單一的服務器,但搭建方式一樣。
1.redis安裝
安裝教程:https://www.cnblogs.com/zwcry/p/9505949.html
2.安裝Redis依賴(ruby)
1)安裝依賴包
yum install -y gcc-c++ patch readline readline-devel zlib zlib-devel libyaml-devel libffi-devel openssl-devel make bzip2 autoconf automake libtool bison sqlite-devel iconv-devel
2)安裝 rvm
curl -L get.rvm.io | bash -s stable
錯誤:

他讓你嘗試 gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
執行:
gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
或
gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
3)再次安裝rvm
curl -L get.rvm.io | bash -s stable

安裝成功,提示請把用戶添加到rvm用戶組
usermod -G rvm root
4)添加生效指令
echo "source /etc/profile.d/rvm.sh" >> ~/.bashrc && source /etc/profile.d/rvm.sh
5)安裝ruby
rvm install ruby
6)安裝ruby與redis接口
gem install redis
yum install -y rubygems
3.配置六個redis服務(官方建議3主3從)
1)創建集群目錄
mkdir /usr/local/redis-cluster/
cd /usr/local/redis-cluster/
mkdir 7001
mkdir 7002
mkdir 7003
mkdir 7004
mkdir 7005
mkdir 7006
2)創建集群第一個redis.conf
cd /usr/local/redis-cluster/
cp /usr/local/redis/redis.conf 7001
vim ./7001/redis.conf
#找到如下KEY,放開注釋,修改值內容
bind 0.0.0.0#不限制訪問ip和遠程連接
protected-mode no#保護模式
port 7001 #修改端口號
daemonize yes#后台運行線程
pidfile /var/run/redis_7001.pid #守護進程文件
dbfilename dump7001.rdb#緩存持久存儲文件名稱
dir /usr/local/redis-cluster/7001/#db文件存放路徑
appendonly yes#開啟日志實時持久
appendfilename "appendonly7001.aof"#日志名稱
cluster-enabled yes#開啟集群
cluster-config-file nodes_7001.conf#集群節點文件
cluster-node-timeout 15000#集群通信超過該時長視為掛掉,單位毫秒
3)拷貝7001/redis.conf到7002~7006
cd /usr/local/redis-cluster/
cp ./7001/redis.conf ./7002/
cp ./7001/redis.conf ./7003/
cp ./7001/redis.conf ./7004/
cp ./7001/redis.conf ./7005/
cp ./7001/redis.conf ./7006/
4)修改7002~7006/redis.conf
#將7002~7006/redis.conf里的7001信息替換為7002~7006的正確信息
cd /usr/local/redis-cluster/
vim ./7002/redis.conf
:%s/7001/7002/g#所有7001的字符串替換為7002
vim ./7003/redis.conf
:%s/7001/7003/g#所有7001的字符串替換為7003
vim ./7004/redis.conf
:%s/7001/7004/g#所有7001的字符串替換為7004
vim ./7005/redis.conf
:%s/7001/7005/g#所有7001的字符串替換為7005
vim ./7006/redis.conf
:%s/7001/7006/g#所有7001的字符串替換為7006
5)啟動6個服務
cd /usr/local/redis-cluster/
/usr/local/redis/src/redis-server ./7001/redis.conf
/usr/local/redis/src/redis-server ./7001/redis.conf
/usr/local/redis/src/redis-server ./7002/redis.conf
/usr/local/redis/src/redis-server ./7003/redis.conf
/usr/local/redis/src/redis-server ./7004/redis.conf
/usr/local/redis/src/redis-server ./7005/redis.conf
/usr/local/redis/src/redis-server ./7006/redis.conf
ps -ef|grep redis

4.創建與測試
1)創建集群
/usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.159.129:7001 192.168.159.129:7002 192.168.159.129:7003 192.168.159.129:7004 192.168.159.129:7005 192.168.159.129:7006
注意:5.0版本后集群搭建有所改變,不在使用ruby語言創建集群,所以不再使用redis-trib.rb
請用redis-cli --cluster create 192.168.159.129:7001 192.168.159.129:7002 192.168.159.129:7003 192.168.159.129:7004 192.168.159.129:7005 192.168.159.129:7006 --cluster-replicas 1
如果出現
/usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- redis (LoadError)
from /usr/local/rvm/rubies/ruby-2.3.4/lib/ruby/site_ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/redis/src/redis-trib.rb:25:in `<main>'

1.確保redis安裝編譯成功,否則重裝
2.gem install redis
然后再執行 /usr/local/redis/src/redis-trib.rb create --replicas 1 192.168.159.129:7001 192.168.159.129:7002 192.168.159.129:7003 192.168.159.129:7004 192.168.159.129:7005 192.168.159.129:7006
成功如圖:

2)測試
/usr/local/redis/src/redis-cli -c -p 7001 --raw#-c表示連集群 --raw中文顯示
set name '丁潔'
get name

5.開機啟動
mkdir /usr/local/redis-cluster/script
cd /usr/local/redis-cluster/script/
1)編寫 start.sh
vim start.sh
#!/bin/sh
/usr/local/redis/src/redis-server /usr/local/redis-cluster/7001/redis.conf /usr/local/redis/src/redis-server /usr/local/redis-cluster/7002/redis.conf /usr/local/redis/src/redis-server /usr/local/redis-cluster/7003/redis.conf /usr/local/redis/src/redis-server /usr/local/redis-cluster/7004/redis.conf /usr/local/redis/src/redis-server /usr/local/redis-cluster/7005/redis.conf /usr/local/redis/src/redis-server /usr/local/redis-cluster/7006/redis.conf
2)編寫 stop.sh
vim stop.sh
#!/bin/sh
/usr/local/redis/src/redis-cli -c -p 7001 shutdown /usr/local/redis/src/redis-cli -c -p 7002 shutdown /usr/local/redis/src/redis-cli -c -p 7003 shutdown /usr/local/redis/src/redis-cli -c -p 7004 shutdown /usr/local/redis/src/redis-cli -c -p 7005 shutdown /usr/local/redis/src/redis-cli -c -p 7006 shutdown
3)編寫 restart.sh
vim restart.sh
#!/bin/sh systemctl stop redis-cluster systemctl start redis-cluster
4)改變權限
chmod 777 ./*

5)編寫自啟服務
cd /usr/lib/systemd/system/
vim redis-cluster.service
添加內容如下
[Unit] Description=redis-cluster After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/redis-cluster/script/start.sh ExecStop=/usr/local/redis-cluster/script/stop.sh ExecReload=/usr/local/redis-cluster/script/restart.sh [Install] WantedBy=multi-user.target
改變權限
chmod 777 redis-cluster.service
進程服務重加載
systemctl daemon-reload
開機啟動集群
systemctl enable redis-cluster.service
啟動集群
systemctl start redis-cluster.service
關閉集群
systemctl stop redis-cluster.service
重啟集群
systemctl restart redis-cluster.service
