CentOS下搭建Redis叢集
搭建環境 CentOS7 , Redis4.01
Redis叢集正常工作至少需要3個節點,為了實現高可用,每個 Master 節點要配備至少 1 個 Slave 節點。所以需要部署6個redis。
為了寫這篇實戰教程,根據我的筆記本效能,只夠建3個虛擬機器(實際應用需準備6臺機器或虛擬機器),所有1個虛擬機器裝了2個redis。
192.168.43.129:7111;
192.168.43.130:7112 ;
192.168.43.131:7113;
192.168.43.129:7114 ;
192.168.43.130:7115 ;
192.168.43.131:7116;
一. 防火牆中開啟相應的埠
每個redis需要開啟服務埠和叢集通訊埠(服務埠+10000)
192.168.43.129
#Master1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7111 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17111 -j ACCEPT
#Slave1
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7114 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17114 -j ACCEPT
192.168.43.130
#Master2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7112 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17112 -j ACCEPT
#Slave2
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7115 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17115 -j ACCEPT
192.168.43.131
#Master3
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7113 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17113 -j ACCEPT
#Slave3
-A INPUT -m state --state NEW -m tcp -p tcp --dport 7116 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 17116 -j ACCEPT
二. 安裝Redis
(1)下載解壓安裝檔案
# cd /home/zsg/Downloads
下載或上傳最新的redis-4.0.1.tar.gz
解壓
tar -zxvf redis-4.0.1.tar.gz
進入解壓目錄
cd redis-4.0.1
(2)安裝redis節點
建立Master安裝目錄:
mkdir /home/zsg/program/redis-cluster/7111
安裝(使用 PREFIX 指定安裝目錄):
make PREFIX=/home/zsg/program/redis-cluster/7111 install
安裝完成後,可以看到/home/zsg/program/redis-cluster/7111 目錄下有一個 bin 目錄,bin 目錄裡就是 redis 的命令指令碼:
redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
(3)安裝其他redis節點
建立安裝目錄:
mkdir /home/zsg/program/redis-cluster/7115
make PREFIX=/home/zsg/program/redis-cluster/7115 install
或者直接把已建立節點的bin目錄直接拷貝到7115目錄下
三. redis配置檔案
(1)拷貝 redid.conf 配置檔案到各節點配置目錄:
192.168.43.129
cd /home/zsg/program/redis-cluster/7111/
mkdir conf #配置檔案存放目錄
mkdir data #節點資料持久化存放目錄
cp /home/zsg/Downloads/redis-4.0.1/redis.conf /home/zsg/program/redis-cluster/7111/conf/redis-7111.conf另外5個節點類似。
(2)修改配置
vi redis-7111.conf
修改下列值
a) port 7111 #監聽埠,預設為 6379 注意:叢集通訊埠值預設為此埠值+10000,如17111
b) daemonize yes #yes表示作為守護程序執行c) pidfile /var/run/redis-7111.pid 如以後臺程序執行,則需指定一個 pid, 預設為/var/run/redis.pid
d) databases 1 #可用資料庫數,預設值為 16,預設資料庫儲存在 DB 0號 ID 庫中,無特殊需求,建議僅設定一個數據庫 databases 1
e) cluster-enabled yes #開啟 redis 叢集
f) cluster-config-file /home/zsg/program/redis-cluster/7111/conf/nodes.conf #叢集配置檔案(啟動自動生成)
g) cluster-node-timeout 15000 #節點互連超時時間。毫秒
h) cluster-migration-barrier 1 # 資料遷移的副本臨界數,這個引數表示的是,一個主節點在擁有多少個好的從節點的時候就要割讓一個從節點出來給另一個沒有任何從節點的主節點。
i) cluster-require-full-coverage yes #如果某一些 key space 沒有被叢集中任何節點覆蓋,叢集將停止接受寫入。
j) appendonly yes #啟用 aof 持久化方式 ,因為 redis 本身同步資料檔案是按上面 save 條件來同步的,所以有的資料會在一段時間內只存在於記憶體中。預設值為 no
k) dir /home/zsg/program/redis-cluster/7111/data #節點資料持久化存放目錄(建議配置)
l) bind 192.168.43.129 #繫結ip
其他幾個個redis的conf檔案都類似修改。
四. 啟動6個redis
使用如下命令啟動這 6 個 Redis 節點例項:
192.168.43.129
/home/zsg/program/redis-cluster/7111/bin/redis-server /home/zsg/program/redis-cluster/7111/conf/redis-7111.conf
/home/zsg/program/redis-cluster/7114/bin/redis-server /home/zsg/program/redis-cluster/7114/conf/redis-7114.conf
192.168.43.130
/home/zsg/program/redis-cluster/7112/bin/redis-server /home/zsg/program/redis-cluster/7112/conf/redis-7112.conf
/home/zsg/program/redis-cluster/7115/bin/redis-server /home/zsg/program/redis-cluster/7115/conf/redis-7115.conf
192.168.43.131
/home/zsg/program/redis-cluster/7113/bin/redis-server /home/zsg/program/redis-cluster/7113/conf/redis-7113.conf
/home/zsg/program/redis-cluster/7116/bin/redis-server /home/zsg/program/redis-cluster/7116/conf/redis-7116.conf
啟動之後用 PS 命令檢視例項啟動情況:
ps -ef | grep redis
zsg 3055 1 0 18:51 ? 00:00:00 /home/zsg/program/redis-cluster/7111/bin/redis-server 127.0.0.1:7111 [cluster]
zsg 3062 1 0 18:51 ? 00:00:00 /home/zsg/program/redis-cluster/7114/bin/redis-server 127.0.0.1:7114 [cluster]
zsg 2971 1 0 18:52 ? 00:00:00 /home/zsg/program/redis-cluster/7112/bin/redis-server 127.0.0.1:7112 [cluster]
zsg 2976 1 0 18:53 ? 00:00:00 /home/zsg/program/redis-cluster/7115/bin/redis-server 127.0.0.1:7115 [cluster]
zsg 3034 1 0 18:54 ? 00:00:00 /home/zsg/program/redis-cluster/7113/bin/redis-server 127.0.0.1:7113 [cluster]
zsg 3039 1 0 18:54 ? 00:00:00 /home/zsg/program/redis-cluster/7116/bin/redis-server 127.0.0.1:7116 [cluster]
注意:啟動完畢後,6 個 Redis 例項尚未構成叢集。
五. 安裝ruby
(1)安裝 ruby 和 rubygems(注意:需要 ruby 的版本在 1.8.7 以上)
# yum install ruby rubygems
(2)檢查 ruby 版本:
# ruby -v
ruby 2.0.0p648 (2015-12-16) [x86_64-linux]
(3)gem 安裝 redis ruby 介面:
# gem install redis
六. 執行 Redis 叢集建立命令(只需要在其中一個節點上執行一次則可)
# cd /home/zsg/Downloads/redis-4.0.1/src/
# cp redis-trib.rb /usr/local/bin/redis-trib
#cd /usr/local/bin/
# redis-trib create --replicas 1 192.168.1.114:7114 192.168.1.115:7115 192.168.1.116:7116 192.168.1.111:7111 192.168.1.112:7112 192.168.1.113:7113
(輸入 yes 並按下回車確認之後,叢集就會將配置應用到各個節點,並連線起(join)各個節點,也就是讓各個節點開始互相通訊)
最後一行資訊表示叢集中的 16384 個槽都有至少一個主節點在處理, 叢集運作正常。
叢集建立過程說明:
(1) 給定 redis-trib 程式的命令是 create , 這表示我們希望建立一個新的叢集;
(2) 這裡的 --replicas 1 表示每個主節點下有一個從節點;
(3) 之後跟著的其它引數則是例項的地址列表,程式使用這些地址所指示的例項來建立新叢集;
總的來說,以上命令的意思就是讓 redis-trib 程式建立一個包含三個主節點和三個從節點的叢集。
接著,redis-trib 會打印出一份預想中的配置給你看,如果你覺得沒問題的話(注意核對主從關係是否是你想要的),就可以輸入 yes , redis-trib 就會將這份配置應用到叢集當中。
七. 叢集簡單測試
使用 redis-cli 命令進入叢集環境
[[email protected] bin]# ./redis-cli -c -h 192.168.43.129 -p 7114
192.168.43.129:7114> set abc 123
-> Redirected to slot [7638] located at 192.168.43.130:7112
OK
[[email protected] bin]$ ./redis-cli -c -h 192.168.43.131 -p 7116
192.168.43.131:7116> get abc
-> Redirected to slot [7638] located at 192.168.43.130:7112
"123"
192.168.43.130:7112> cluster nodes
5c79247450245f1162062c94fada7ab65ae1347d 192.168.43.131:[email protected] slave 63021ae07a2300cd105f08ffef271f85c6399714 0 1501510141378 6 connected
6ca90f5e468a5ad9f540fabdc8d2ed8c381c9261 192.168.43.129:[email protected] master - 0 1501510143440 1 connected 0-5460
27a862b84353b92acd8c3cb49fd2582d203dd82b 192.168.43.129:[email protected] slave b4509ff7ab836d5582d14f3502d7cc3abda892a7 0 1501510140275 4 connected
b4509ff7ab836d5582d14f3502d7cc3abda892a7 192.168.43.130:[email protected] myself,master - 0 1501510137000 2 connected 5461-10922
63021ae07a2300cd105f08ffef271f85c6399714 192.168.43.131:[email protected] master - 0 1501510142412 3 connected 10923-16383
1fb7c40d07fdb7a4708e98102c35f2e20128e252 192.168.43.130:[email protected] slave 6ca90f5e468a5ad9f540fabdc8d2ed8c381c9261 0 1501510139000 5 connected