redis-cli創(chuàng)建redis集群的實現(xiàn)
一、redis單節(jié)點部署
創(chuàng)建文件用service啟動redis方式
創(chuàng)建如下文件
vi /etc/systemd/system/redis.service
寫入內(nèi)容如下:
[Unit] Description=redis-server After=network.target [Service] Type=forking #使用時更改redies-server的目錄地址,更改redis.conf配置文件的地址 ExecStart=/usr/local/bin/redis-server /usr/local/src/redis-6.2.6/redis.conf PrivateTmp=true [Install] WantedBy=multi-user.target
重啟配置使用上述文件生效
systemctl daemon-reload
二、redis集群部署
注:以下ruby環(huán)境和命令只適用于5.0(不包括)以前版本,5.0以上版本請?zhí)^7.1之前步驟
- redis-trib.rb是在redis3.x版本時所用的一種部署redis集群的工具,redis-cli是redis5.x及更高版本所支持創(chuàng)建集群的工具,在redis3.x版本時redis-cli只是一個客戶端連接管理工具。
- redis-cli比redis-trib.rb多了一個可以認證集群密碼的功能,后者創(chuàng)建的集群不能對有密碼的集群節(jié)點進行很好的管理,所以后來官方直接廢棄了這個工具。
- 用redis-trib.rb創(chuàng)建集群之前需要配置ruby環(huán)境,新版本的redis-cli可以直接創(chuàng)建集群環(huán)境而不用配置ruby環(huán)境
集群架構
- redis 集群至少需要3個 master 實例
- master 可以帶0個或者多個 slave
- Master之間的數(shù)據(jù)并不同步,而是各自存放各自的數(shù)據(jù)
- 所有的 master 按照接近1:1的比例分配16384個槽,意味著集群最多有 16384個master 但是在實際中推薦最大的
master 節(jié)點數(shù)不超過1000個。 - slave不分配槽
- 整個集群中的數(shù)據(jù)是以分布式的方式存儲的,在存儲或者獲取的時候先對 key進行hash運算,看看該 key落在那個槽上,從而確定該 key
應該在那個節(jié)點存取 - Key 值落在哪一個槽上,只取決于 key 值本身,這個算法是固定的。
部署環(huán)境
版本:6.2.11
節(jié)點數(shù)量:redis-master-3節(jié)點
redis-selve-3節(jié)點
1.先安裝依賴文件
yum -y install gcc tcl
2.解壓redis包并執(zhí)行如下命令
tar xf /home/redis-6.2.11.tar.gz cd /home/redis-6.2.11 make
3.需要更改的參數(shù)
#端口,各自端口不同 port 637* #后臺啟動 daemonize yes #密碼,集群的密碼都要相同 masterauth 123456 #開啟集群 cluster-enabled yes #綁定本機Ip地址 bind 0.0.0.0 #更改密碼,所有節(jié)點均紋統(tǒng)一密碼,此為認證密碼,單節(jié)點登錄使用 requirepass 123456 #各節(jié)點集群配置文件 cluster-config-file node-63**.conf
4.安裝ruby環(huán)境及依賴
yum -y install ruby ruby-devel rubygems
5.安裝ruby環(huán)境
備注:redis-trib.rb這個二進制文件,用來構建redis集群,要用到ruby環(huán)境
補充:報錯問題:“redis requires Ruby version >= 2.2.2”為ruby版本太低造成
#會在/etc/yum.repos.d/目錄下多出一個CentOS-SCLo-scl-rh.repo源3 yum install centos-release-scl-rh #直接yum安裝即可 yum install rh-ruby25 -y #必要一步 scl enable rh-ruby25 bash #查看安裝版本redis-trib.rb這個二進制文件就可以使用了,用來構建redis集群 ruby -v #安裝redis接口 gem install redis
6.設置環(huán)境變量
備注:如果不設置環(huán)境變量的話,重啟節(jié)點后ruby就找不到了
#使用export命令顯示所有環(huán)境變量,復制后添加到/etc/profile文件中 export export PATH=/bin:/usr/bin:/sbin:$PATH #保存退出后使用命令source使用配置生效 source /etc/profile
7.集群創(chuàng)建
1.redis-trib.rb模式啟動集群
#需要要先修改redis-trib.rb的密碼與集群相同 #過濾出client.rb文件路徑 find / -name "client.rb" #修改client.rb文件中的密碼 默認為空修改為集群密碼 #執(zhí)行如下命令啟動集群 /home/redis-6.2.11/src/redis-trib.rb create --replicas 1 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377
2. 5.0以上版本
#4.0以上的版本用如下命令啟動集群-a指定集群密碼 ./redis-cli --cluster create 192.168.95.133:6349 192.168.95.134:6378 192.168.95.135:6379 192.168.95.139:6375 192.168.95.137:6376 192.168.95.138:6377 --cluster-replicas 1 -a '123456'
8.查看節(jié)點
#連接任意節(jié)點IP,-c是連接集群模式 ./src/redis-cli -h 192.168.95.139 -p 6375 -c #輸入密碼 auth **** #查看節(jié)點 cluster nodes
9.停止集群
各節(jié)點停止redis后即可停止集群
10.增刪節(jié)點(此命令針對的是主節(jié)點)
#增加節(jié)點需要登錄集群任何節(jié)點 cluster meet IP 端口 #刪除節(jié)點,ID號在nodes文件中 cluster forget 節(jié)點ID
11.增刪從節(jié)點
#增加從節(jié)點時,登錄哪個節(jié)點即為從節(jié)點 cluster replicate 節(jié)點id #此ID必須在集群中已記錄,即在nodes-**上記錄后才能添加,否則會報錯 #重置當前節(jié)點的配置信息,該名會重置rodes-port.conf 文件為初始狀態(tài) cluster rest
問題記錄
解決辦法:刪除redis目錄下的nodes*后重啟redis所有節(jié)點
解決辦法:登錄時要加-c參數(shù)以集群方式登錄
試驗結(jié)論:
經(jīng)過多次試驗殺掉其中某一個主節(jié)點,集群會自動切換新的master,宕機節(jié)點恢復后會主動加入集群
到此這篇關于redis-cli創(chuàng)建redis集群的實現(xiàn)的文章就介紹到這了,更多相關redis-cli創(chuàng)建redis集群內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列的問題
這篇文章主要介紹了Redis?中使用?list,streams,pub/sub?幾種方式實現(xiàn)消息隊列,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-03-03Redis鎖的過期時間小于業(yè)務的執(zhí)行時間如何續(xù)期
本文主要介紹了Redis鎖的過期時間小于業(yè)務的執(zhí)行時間如何續(xù)期,Redisson它能給Redis分布式鎖實現(xiàn)過期時間自動續(xù)期,具有一定的參考價值,感興趣的可以了解一下2024-05-05