redis是根據redis的配置文件啟動的,方便管理,我們根據端口創建單節點的文件夾。
本篇文章基於上一篇單機Redis安裝,https://www.cnblogs.com/diaoye/p/12762440.html
1.創建文件夾
mkdir /usr/local/redis-cluster cd redis-cluster/ mkdir -p 9001/data 9002/data 9003/data 9004/data 9005/data 9006/data
此處切忌偷懶,6個是有6個的道理的,三主三從,三個主節點方便選舉,不然出現平票是選不出老大的。
2.復制運行腳本
在 /usr/local/redis-cluster 下創建bin文件夾,用來存放集群運行腳本,並把安裝好的Redis的src路徑下的運行腳本拷貝過來,命令如下:
mkdir redis-cluster/bin cd /usr/local/redis/src cp mkreleasehdr.sh redis-benchmark redis-check-aof redis-check-dump redis-cli redis-server redis-trib.rb /usr/local/redis-cluster/bin
3.復制一個實例到9001文件夾下,並修改redis.conf配置
cp /usr/local/redis/* /usr/local/redis-cluster/9001
修改以下參數
port 9001(每個節點的端口號) daemonize yes bind 192.168.119.131(綁定當前機器 IP) dir /usr/local/redis-cluster/9001/data/(數據文件存放位置) pidfile /var/run/redis_9001.pid(pid 9001和port要對應) cluster-enabled yes(啟動集群模式) cluster-config-file nodes9001.conf(9001和port要對應) cluster-node-timeout 15000 appendonly yes
集群搭建配置重點就是取消下圖中的這三個配置的注釋
4.再復制出五個實例
我們已經完成了一個節點了,其實接下來就是機械化的再完成另外五個節點,其實可以這么做:把 9001 實例
復制到另外五個文件夾中,唯一要修改的就是 redis.conf
中的所有和端口的相關的信息即可,其實就那么四個位置。開始操作,看圖:
\cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9002 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9003 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9004 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9005 \cp -rf /usr/local/redis-cluster/9001/* /usr/local/redis-cluster/9006
\cp -rf
命令是不使用別名來復制,因為 cp
其實是別名 cp -i
,操作時會有交互式確認,比較煩人。
5.修改9002-9006 的 redis.conf 文件
其實非常簡單了,你通過搜索會發現其實只有四個點需要修改,我們全局替換下吧,進入相應的節點文件夾,做替換就好了。命令非常簡單,看圖:
vim redis.conf
:%s/9001/9002g
回車后,就會有替換幾個地方成功的提示,不放心可以手工檢查下
其實我們也就是替換了下面這四行:
port 9002 dir /usr/local/redis-cluster/9002/data/ cluster-config-file nodes-9002.conf pidfile /var/run/redis_9002.pid
到這里,我們已經把最基本的環境搞定了,接下來就是啟動了。
6.啟動9001-9006節點
/usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9001/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9002/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9003/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9004/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9005/redis.conf /usr/local/redis-cluster/bin/redis-server /usr/local/redis-cluster/9006/redis.conf
可以檢查一下是否啟動成功
ps -ef|grep redis
隨便找個節點測試
/usr/local/redis-cluster/bin/redis-cli -h 192.168.119.131 -p 9001
set name mafly
連接成功了,但報錯了
(error) CLUSTERDOWN Hash slot not served(不提供集群的散列槽)
這是因為雖然我們配置並啟動了 Redis 集群服務,但是他們暫時還並不在一個集群中,互相直接發現不了,而且還沒有可存儲的位置,就是所謂的slot(槽)
7.創建集群
./usr/local/redis-cluster/bin/redis-cli --cluster create 192.168.0.229:9001 192.168.0.229:9002 192.168.0.229:9003 192.168.0.229:9004 192.168.0.229:9005 192.168.0.229:9006 --cluster-replicas 1
--replicas 1表示主從復制比例為 1:1,即一個主節點對應一個從節點;然后,默認給我們分配好了每個主節點和對應從節點服務,以及 solt 的大小,因為在 Redis 集群中有且僅有 16383 個 solt ,默認情況會給我們平均分配,當然你可以指定,后續的增減節點也可以重新分配。
8.測試集群是否可用
./usr/local/redis-cluster/bin/redis-cli -h 192.168.0.229 -c -p 9001
成功!
參考的大佬文檔
https://www.cnblogs.com/mafly/p/redis_cluster.html