Redis Cluster集群实验
Redis集群搭建的方式有多種,例如使用zookeeper(以前的redis經常配合zookeeper來做集群,因為原來沒有官方的支持)等,但從redis 3.0之后版本支持redis-cluster集群,Redis-Cluster采用無中心結構(又叫分布式結構),每個節點保存數據和整個集群狀態,每個節點都和其他所有節點連接。
redis-cluster的優勢
1、官方推薦
2、去中心化,集群最大可增加1000個節點,性能隨節點增加而線性擴展。
3、管理方便,后續可自行增加或摘除節點,移動分槽等等。
4、簡單,易上手。
實驗準備
準備全新的三臺機器,一臺機器兩個角色,六個節點的集群。正常在公司應該是一個節點,一個redis。
現在是3個節點,6個redis。
6個redis怎么做?
把端口分開就行了,每一個端口代表一個redis,3個master,3個slave,并且要求3個master節點不能全部跑到同一臺服務器上,保證節點安全,3臺服務器的配置相同。
操作
環境為三臺服務器:centos7.9
(一)在安裝集群之前,需要在服務器上安裝ruby環境(三臺機器相同操作)。
yum install centos-release-scl-rh ?? ?安裝ruby yum源
[root@redis1 src]# yum search ruby? 查看ruby的主包
?[root@redis1 src]# yum install -y rh-ruby26-ruby
[root@redis1?src]# scl ?enable ?rh-ruby26 bash 刷新環境
[root@redis1 src]# ruby -v? ?查看ruby版本
?[root@redis1 src]# gem install redis? ?安裝redis的庫
三臺機器相同操作
(二)安裝redis (三臺機器相同操作)
(三)創建節點目錄(三臺機器相同操作,注意端口號的不一樣)
[root@redis1 redis-6.2.6]# mkdir data在redis的安裝目錄下,創建一個date的目錄(存放數據的目錄)
[root@redis1 redis-6.2.6]# mkdir cluster創建一個cluster的目錄,存放不同節點的配置文件的目錄
cd cluster/? ? 注意下面這三行不一樣
[root@redis1 cluster]# mkdir 7000 7001
[root@redis2 cluster]# mkdir 7001 7002
[root@redis3 cluster]# mkdir 7002 7000
systemctl stop redis? 先關掉服務
(四)拷貝配置文件 ? ?控制節點操作,把這個配置文件分別拷到上面創建的六個目錄里面
1
[root@redis1 cluster]# cd ..
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7000
[root@redis1 redis-6.2.6]# cp redis.conf cluster/7001
2
[root@redis2 cluster]# cd ..
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7001
[root@redis2 redis-6.2.6]# cp redis.conf cluster/7002
3
[root@redis3 cluster]# cd ..
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7002
[root@redis3 redis-6.2.6]# cp redis.conf cluster/7000
(五)修改集群配置文件(主要是端口和ip,三臺機器相同操作)
bind 192.168.22.156? ? ? 改成自己的ip ? ?# **綁定局域網ip,使得三臺服務器可相互訪問 daemonize yes? ? ?// redis后臺運行,原來是用的&,修改為yes
pidfile /var/run/redis_7000.pid // pid文件,運行多個實例時,需要指定不同的pid文件,一共6個端口,先改7000
port 7000 // 監聽端口,運行多個實例時,需要指定不同的端口
tcp-backlog 511 日志服務器的端口
tcp-keepalive 0 長鏈接
loglevel notice // 日志等級
logfile /var/log/redis_7000.log // 日志文件位置 運行多實例時,需要修改不同的端口
databases 16 // 可用數據庫數
dir /root/redis-6.2.6/data //存放數據的目錄
appendonly yes // redis會把所接收到的每一次寫操作請求都追加到appendonly.aof文件中,當redis重新啟動時,會從該文件恢復出之前的狀態。
appendfilename "appendonly.aof" // AOF文件名稱
appendfsync everysec // 表示對寫操作進行累積,每秒同步一次
no-appendfsync-on-rewrite yes // AOF 自動重寫
auto-aof-rewrite-percentage 80-100 // 重寫百分比
auto-aof-rewrite-min-size 64mb
打開注釋并修改的如下:
先看看有沒有默認配置,沒有把它打開
#如下為集群配置 cluster-enabled yes #啟用集群
?cluster-config-file nodes-7000.conf #集群配置文件,由redis自動更新,不需要手動配置,運行多實例時請注修改為對應端口
?cluster-node-timeout 5000 ?#集群節點超時時間,即集群中主從節點斷開連接時間閾值,超過該值則認為主節點不可以,從節點將有可能轉為master
?cluster-slave-validity-factor 10 ?#在進行故障轉移的時候全部slave都會請求申請為master,但是有些slave可能與master斷開連接一段時間了導致數據過于陳舊,不應該被提升為master。該參數就是用來判斷slave節點與master斷線的時間是否過長,注意新版本此選項為:cluster-replica-validity-factor
?#cluster-migration-barrier 1
cluster-require-full-coverage yes #集群中的所有slot(16384個)全部覆蓋,才能提供服務
提示 可以在一臺服務器上面修改好了scp到每臺服務器對應的目錄下面,然后修改ip和端口還有pid號日志存放文件和配置文件中的cluster-config-file nodes-7000.conf對應不同的端口!
[root@redis1 7000]# vim redis.conf?
[root@redis1 7000]# cp redis.conf ?../7001/
cp:是否覆蓋"../7001/redis.conf"? yes?
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7001
[root@redis1 7000]# scp redis.conf 192.168.22.169:/root/redis-6.2.6/cluster/7002
[root@redis1 7000]# scp redis.conf ?192.168.22.170:/root/redis-6.2.6/cluster/7000
[root@redis1 7000]# scp redis.conf ?192.168.22.170:/root/redis-6.2.6/cluster/7002
[root@redis1 cluster]# cd 7001
[root@redis1 7001]# vim redis.conf?
[root@redis2 7002]# vim redis.conf?
?
[root@redis2 7001]# vim redis.conf
[root@redis3 7000]# vim redis.conf
??[root@redis3 7002]# vim redis.conf
?
(六)啟動三臺機器上面的每個節點(三臺機器相同操作)
[root@redis1 redis-6.2.6]# cd src/
[root@redis1 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis1 src]# ./redis-server ../cluster/7001/redis.conf
?[root@redis2 redis-6.2.6]# cd src/
[root@redis2 src]# ./redis-server ../cluster/7001/redis.conf
[root@redis2 src]# ./redis-server ../cluster/7002/redis.conf
?[root@redis3 redis-6.2.6]# cd src/
[root@redis3 src]# ./redis-server ../cluster/7000/redis.conf
[root@redis3 src]# ./redis-server ../cluster/7002/redis.conf
(七)創建集群(在控制節點上面操作即可,剩余機器不用操作)
Redis是根據IP和Port的順序,確定master和slave的,所以要排好序,再執行。
在第一臺機器執行。
[root@redis1 src]# ?./redis-cli --cluster create 192.168.22.156:7000 192.168.22.156:7001 192.168.22.169:7001 192.168.22.169:7002 192.168.22.170:7002 192.168.22.170:7000 --cluster-replicas 1
?已經好了。去查看驗證一下。
(八)查看集群狀態可連接集群中的任一節點,此處連接了集群中的節點
?登錄集群客戶端,-c標識以集群方式登錄。 cluster info //查看集群信息
?設置lisi,他把東西存在5798這個槽了,到了169的7001節點上,不管它到哪,都可以get,也可以在其他機器查。
?不管在哪查,它都能幫你去真正存儲數據的那臺機器上查詢數據。
檢查集群狀態:任意服務器都可以檢查
?實驗成功。
【注意】少熬夜,多看書
總結
以上是生活随笔為你收集整理的Redis Cluster集群实验的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: em和rem的区别
- 下一篇: mysql windows局域网访问_w