Redis5以上版本偽集群搭建(高可用集群模式)


redis集群需要至少要三個master節點,我們這里搭建三個master節點,並且給每個master再搭建一個slave節點,總共6個redis節點,這里用一台機器(可以多台機器部署,修改一下ip地址就可以了)部署6個redis實例,三主三從,搭建集群的步驟如下:

第一步:在第一台機器的/usr/local/redis下創建文件夾redis-cluster,然后在其下面創建6個文件夾如下:

mkdir -p /usr/local/redis/redis-cluster

進入redis-cluster目錄,創建6個文件夾

mkdir 7001 7002 7003 7004 7005 7006

第二步:把之前的redis.conf配置文件copy到7001下,修改如下內容:

cp /usr/local/redis/redis-5.0.5/redis.conf  /usr/local/redis/redis-cluster/7001

說明:redis-5.0.5為解壓的源碼包

修改如下配置:

 1 daemonize yes                           //redis后台運行
 2 port 7001                    (分別對每個機器的端口號進行設置)
 3 pidfile  /var/run/redis_7001.pid         //pidfile文件對應7000,7002,7003...7006
 4 cluster-enabled  yes                     //開啟集群  把注釋#去掉
 5 cluster-config-file  nodes-7001.conf     //集群的配置  配置文件首次啟動自動生成 7001,7002,7003...7006
 6 cluster-node-timeout  5000             //請求超時  設置5秒夠了
 7 appendonly  yes        //aof日志開啟      有需要就開啟,它會每次寫操作都記錄一條日志
 8 bind 127.0.0.1                (去掉bind綁定訪問ip信息)
 9 protected-mode no               (關閉保護模式)
10 #dir /usr/local/redis/redis-cluster/7001/ (指定數據文件存放位置,必須要指定不同的目錄位置,不然會丟失數據,若該配置 不存在,請自行添加)

如果要設置密碼需要增加如下配置:

11 requirepass xxx (設置redis訪問密碼)
12 masterauth xxx (設置集群節點間訪問密碼,跟上面一致)

第三步:把修改后的配置文件,copy到8002-8006,修改第2、3、5項里的端口號,可以用批量替換:

先復制:

1 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7002
2 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7003
3 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7004
4 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7005
5 cp /usr/local/redis/redis-cluster/7001/redis.conf /usr/local/redis/redis-cluster/7006

然后分別到對應的目錄下 把redis.conf  執行 vim  

%s/源字符串/目的字符串/g 
:%s/7001/7002/g
:%s/7001/7003/g
:%s/7001/7004/g
:%s/7001/7005/g
:%s/7001/7006/g

把7001替換為7002

全局替換  和 目錄保持一致, 比如目錄是 7003則 替換為7003

第四步:分別啟動6個redis實例,然后檢查是否啟動成功

1 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7001/redis.conf
2 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7002/redis.conf
3 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7003/redis.conf
4 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7004/redis.conf
5 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7005/redis.conf
6 /usr/local/redis/bin/redis-server /usr/local/redis/redis-cluster/7006/redis.conf

查看是否啟動成功

使用ps-ef|grep redis 看下是否啟動成功6個節點

ps -ef|grep redis

第五步:用redis-cli創建整個redis集群(redis5以前的版本集群是依靠ruby腳本redis-trib.rb實現)

執行命令

/usr/local/redis/bin/redis-cli --cluster create 192.168.83.102:7001 192.168.83.102:7002 192.168.83.102:7003 192.168.83.102:7004 192.168.83.102:7005 192.168.83.102:7006 --cluster-replicas 1

說明:redis 5.x的集群創建不需要ruby環境了 

    --cluster-replicas 1 命令的意思是創建master的時候同時創建一個slave

ip不要使用127.0.0.1,否則在使用java代碼操作集群時會報錯,會提示連接錯亂。

會創建一個3master 3slaver的集群

輸入yes

看到這說明集群都創建完了

第七步:驗證集群:

1)連接任意一個客戶端即可:

./redis-cli -c -a xxx -h 192.168.5.100 -p 7001

提示:-a訪問服務端密碼,-c表示集群模式,指定ip地址和端口號(若沒有密碼,-a xxx可省略)

執行此命令:

打開端口為7001的客戶端 set一個值

./redis-cli -c -h 192.168.83.102 -p 7001

退出該節點,進入7002端口:

發現,7002端口也可以取值

 2)進行驗證: cluster info(查看集群信息)、cluster nodes(查看節點列表)

3)進行數據操作驗證

4)關閉集群則需要逐個進行關閉,使用命令:(模板)

/usr/local/redis/src/redis-cli -a xxx -c -h 192.168.0.60 -p 8001 shutdown

執行如下命令:

/usr/local/redis/bin/redis-cli -c -p 7001 shutdown

說明7001已關閉

 提示:在搭建集群后,依然可以進行主從復制的操作,備份數據。

 

 

參考:

https://www.jianshu.com/p/8045b92fafb2

https://blog.csdn.net/qq_36514588/article/details/83856795

https://blog.csdn.net/woyixinyiyi/article/details/87967911

https://blog.csdn.net/hoopopo_wll/article/details/84925563

https://my.oschina.net/ruoli/blog/2252393 (redis5 提供了關閉集群的工具)

在這里非常感謝以上作者的勞動果實。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM