參考自:
https://linux.cn/article-6719-1.html
http://blog.csdn.net/xu470438000/article/details/42971091
### 兩台服務器,各啟動三個實例,形成三主三從
實驗機器IP: 192.168.2.247 192.168.2.248
系統環境:centos 7
1、安裝所需環境和工具
yum -y install wget vim tcl gcc make
2、下載redis 壓縮包並解壓
cd /usr/local/
wget http://download.redis.io/releases/redis-3.2.8.tar.gz
tar -zxvf redis-3.2.8.tar.gz
3、編譯redis源文件
cd redis-3.2.8
make
cd src
make install
# 測試: make test
(如果 /usr/local/bin/ 文件夾內沒有 redis-server 那幾個文件,就從 /usr/local/redis-3.2.8/src/ 中拷貝過去,命令:cp redis-server redis-cli redis-sentinel redis-benchmark redis-check-aof redis-check-rdb /usr/local/bin/)
4、配置內核參數
# 配置 vm.overcommit_memory 為1,這可以避免數據被截斷
sysctl -w vm.overcommit_memory=1
5、創建多實例的文件夾,用來存放不同實例的配置文件
cd /usr/local/
mkdir cluster
cd cluster
mkdir 7000 7001 7002
6、修改配置文件
vim /usr/local/redis-3.2.8/redis.conf
bind 192.168.2.247(需要不同服務器的節點連通,就不能設置為 127.0.0.1)
protected-mode no(需要不同服務器的節點連通,這個就要設置為 no)
daemonize yes(設置后台運行redis)
cluster-enabled yes
cluster-node-timeout 5000
appendonly yes
# 根據不同端口需要設置的地方
port 7000
pidfile /var/run/redis_7000.pid
logfile /var/log/redis/redis_7000.log
dbfilename dump_7000.rdb
appendfilename "appendonly_7000.aof"
cluster-config-file nodes_7000.conf
7、復制配置文件到各個實例文件夾,並修改相應端口號和參數
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7000/
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7001/
cp -f /usr/local/redis-3.2.8/redis.conf /usr/local/cluster/7002/
8、啟動各個實例
cd /usr/local/redis-3.2.8/src/
./redis-server /usr/local/cluster/7000/redis.conf &
./redis-server /usr/local/cluster/7001/redis.conf &
./redis-server /usr/local/cluster/7002/redis.conf &
使用 ps -ef|grep redis 查看是否都啟動成功,IP和端口號都正確
9、防火牆開通端口號策略(這里用centos7默認的firewall-cmd)
firewall-cmd --zone=public --add-port=7000-7002/tcp --permanent
firewall-cmd --zone=public --add-port=17000-17002/tcp --permanent(必須開集群總線端口,集群總線端口=端口號+10000,例:7000的集群總線端口是17000。這個集群總線端口不開放,集群的時候外部服務器的節點添加不進來)
firewall-cmd --reload
==================================================================================
====================== 1~9都是要在兩台服務器中操作的 ===========================
==================================================================================
10、測試兩台服務器是否都能 telnet 得通另一台的 7000~7002 和 17000~17002
11、安裝 ruby 環境
yum -y install ruby rubygems
12、更新gem源,國外的會被牆,所以換一個國內的
gem sources --remove https://rubygems.org/
gem sources -a https://ruby.taobao.org/
13、使用gem安裝 redis和 ruby接口
gem install redis (或 gem install redis --version 3.2.8)
14、創建集群
cd /usr/local/redis-3.2.8/src/
./redis-trib.rb create --replicas 1 192.168.2.247:7000 192.168.2.247:7001 192.168.2.247:7002 192.168.2.248:7000 192.168.2.248:7001 192.168.2.248:7002
留意屏幕,會有一句(type 'yes' to accept),輸入 yes ,回車,就是接受自動分配的三主三從
如果最后出現
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
說明成功了。
如果是出現
Waiting for the cluster to join...........
一直有 “.”出現,說明另一台服務器的端口策略沒通,一直在等那邊的節點加入集群,那么恭喜你,要悲劇了.....
15、驗證集群節點數
cd /usr/local/redis-3.2.8/src/
./redis-cli -h 192.168.2.247 -c -p 7000
CLUSTER NOTES