網(wǎng)站開發(fā)課程培訓seo工具查詢
部署Redis集群架構(gòu)
- 部署Redis集群
- 部署管理主機
- 第一步 準備ruby腳本的運行環(huán)境
- 第二步 創(chuàng)建腳本
- 第三步 查看腳本幫助信息
- 配置6臺Redis服務(wù)器
- 第一步 修改配置文件啟用集群功能
- 第二步 重啟redis服務(wù)
- 第三步 查看Redis-server進程狀態(tài)(看到服務(wù)使用2個端口號為成功)
- 創(chuàng)建集群
- 在管理主機mgm57執(zhí)行創(chuàng)建集群的命令
- 查看集群信息
- 訪問集群存取數(shù)據(jù)
- 在客戶端連接集群中的主機
- 集群管理
- 向集群里添加新服務(wù)器
- 把服務(wù)器移除集群
- 移除slave角色的主機
- 移除master角色的主機
- 擴展
環(huán)境:
6臺集群服務(wù)器 51-56 :
安裝Redis軟件 初始化配置
停止Redis服務(wù)
修改服務(wù)使用的ip地址是eth0接口的地址(不需要設(shè)置密碼和修改服務(wù)使用的端口號)
啟動Redis服務(wù)
部署Redis集群
部署管理主機
第一步 準備ruby腳本的運行環(huán)境
第二步 創(chuàng)建腳本
第三步 查看腳本幫助信息
]# yum -y install rubygems ruby
]# gem install redis-3.2.1.gem
]# mkdir /root/bin # 創(chuàng)建命令檢索目錄
]# tar -zxvf redis-4.0.8.tar.gz
]# cp redis-4.0.8/src/redis-trib.rb /root/bin/ # 創(chuàng)建管理集群腳本
]# chmod +x /root/bin/redis-trib.rb
]# redis-trib.rb help # 查看命令幫助
配置6臺Redis服務(wù)器
重要說明:內(nèi)存里不允許有數(shù)據(jù) 不能設(shè)置連接密碼(如果有要清除)
第一步 修改配置文件啟用集群功能
[root@redisA ~]# vim /etc/redis/6379.conf //修改配置文件
bind 192.168.4.51 //修改ip
port 6351 //修改端口(可選配置)
cluster-enabled yes //啟用集群功能
cluster-config-file nodes-6379.conf //存儲集群信息的配置文件
cluster-node-timeout 5000 //集群節(jié)點通信超時時間
第二步 重啟redis服務(wù)
]# redis-cli -h 192.168.4.52 -p 6379 shutdown
]# /etc/init.d/redis_6379 start
第三步 查看Redis-server進程狀態(tài)(看到服務(wù)使用2個端口號為成功)
[root@redisA ~]# netstat -utnlp | grep redis-server
tcp 0 0 192.168.4.51:6351 0.0.0.0:* LISTEN 21201/redis-server
tcp 0 0 192.168.4.51:16351 0.0.0.0:* LISTEN 21201/redis-server
創(chuàng)建集群
在管理主機mgm57執(zhí)行創(chuàng)建集群的命令
創(chuàng)建集群的命令格式
# --replicas 指定從服務(wù)器的臺數(shù)(指定每個主服務(wù)器有幾臺從服務(wù)器)
# 創(chuàng)建集群時,會把前3臺服務(wù)器配置為主服務(wù)器,剩下的其他主機全部做從服務(wù)器
]# redis-trib.rb create --replicas 數(shù)字 ip地址:端口 ip地址:端口 。。。
并給主服務(wù)器平均分配hash slots
創(chuàng)建集群失敗了 需要刪除服務(wù)器里面的集群創(chuàng)建信息 每臺都要刪除
redis-cli -h 192.168.4.51
> cluster reset
如果所有的Redis服務(wù)都啟用了集群功能 內(nèi)存里也沒有數(shù)據(jù) 也沒設(shè)置連接密碼 還是創(chuàng)建失敗 可能是物理內(nèi)存不足
查看集群信息
# 查看統(tǒng)計信息
[ mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
# 查看詳細信息
[ mgm57 ~]# redis-trib.rb check 192.168.4.51:6351
訪問集群存取數(shù)據(jù)
命令格式(連接集群中的任意一臺服務(wù)器都可以查詢數(shù)據(jù)和存儲數(shù)據(jù))
-c 連接集群中的主機 使用集群算法存儲數(shù)據(jù)
redis-cli -c -h redis服務(wù)器的ip -p 端口號
在客戶端連接集群中的主機
說明:向集群中的主機存儲數(shù)據(jù)一次只能存儲一個 變量 集群算法每次只有一個計算結(jié)果
集群管理
環(huán)境準備:創(chuàng)建2臺新虛擬機 58 59
分別運行redis服務(wù)切啟用了集群功能
192.168.4.58 主機redis服務(wù)的端口6379 服務(wù)使用的地址 192.168.4.58
192.168.4.59 主機redis服務(wù)的端口6379 服務(wù)使用的地址 192.168.4.59
向集群里添加新服務(wù)器
說明:什么情況下需要向集群里添加新主機 (添加master角色):
擴大內(nèi)存空間(添加master角色服務(wù)器)
為了保證服務(wù)的可靠性(給主服務(wù)器添加多個從服務(wù)器)
- 添加master角色的服務(wù)器
把58添加到集群做master服務(wù)器
1.58運行redis服務(wù) 且啟用了集群功能,redis服務(wù)的端口6379 服務(wù)使用的地址192.168.4.58
2.在管理主機mgm57如下操作把host58主機添加到集群
redis-trib.rb add-node 192.168.4.58:6379 192.168.4.51:6379 (第二個是集群中任意主機)
出現(xiàn) ok 成功的分配hash slots(master角色的服務(wù)器沒有hash slots得不到存儲數(shù)據(jù)機會)
redis-trib.rb reshard 集群中已有主機的ip:端口
第一個問題:移除多少個槽
第二個問題:把這些槽給哪些主數(shù)據(jù)庫服務(wù)器
第三個問題:提供這些槽的主機的id all(表示從當前所有主服務(wù)器一起提供4096個槽給58主機)查看集群信息(查看到新的主服務(wù)器且有hash slots為成功)
redis-trib.rb info 192.168.4.56:6379
- 添加slave角色的服務(wù)器
說明:從角色服務(wù)器的數(shù)據(jù)是master服務(wù)器同步過來的數(shù)據(jù) 所以slave角色的服務(wù)器不需要分配hash slots 只需要把主機添加到集群做slave服務(wù)器就可以了
redis-trib.rb add-node --slave 新主機ip:端口 集群中已有的主機ip:端口
# 需求:把redis59添加到集群里 做58的slave服務(wù)器
具體操作如下:
1.在59主機運行redis服務(wù)且啟用了集群功能
2.在管理主機做如下操作:把59添加到集群里 做slave服務(wù)器 會自動做從服務(wù)器最少的主服務(wù)器的從
redis-trib.rb add-node --slave 192.168.4.59:6379 192.168.4.56:6379查看集群信息(58有一個slave服務(wù)器)連接59查看數(shù)據(jù)(會自動同步)
把服務(wù)器移除集群
移除slave角色的主機
命令格式:redis-trib.rb del-node 集群中任意主機ip:端口 被移除主機的id
說明:slave角色的主機沒有hash槽直接移除即可 主機被移除集群后 redis服務(wù)會自動停止
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 5 keys | 4096 slots | 0 slaves.//58主機,沒有從服務(wù)器
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
移除master角色的主機
說明:master角色的服務(wù)器會占用hash 要先釋放hash 在執(zhí)行移除主機的命令
第一步:釋放hash slots(再次執(zhí)行reshard命令)
[root@mgm57 ~]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 //移除4096個數(shù)槽
What is the receiving node ID? bc5c4e082a5a3391b634cf433a6486c867cfc44b //要移動給誰的id即目標主機(這里可以隨機寫一個master的ID)
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
//從誰那移動即源主機(這里寫4.58的ID)
Source node #2:done //設(shè)置完畢
...Moving slot 12282 from c5e0da48f335c46a2ec199faa99b830f537dd8a0Moving slot 12283 from c5e0da48f335c46a2ec199faa99b830f537dd8a0Moving slot 12284 from c5e0da48f335c46a2ec199faa99b830f537dd8a0Moving slot 12285 from c5e0da48f335c46a2ec199faa99b830f537dd8a0Moving slot 12286 from c5e0da48f335c46a2ec199faa99b830f537dd8a0Moving slot 12287 from c5e0da48f335c46a2ec199faa99b830f537dd8a0
Do you want to proceed with the proposed reshard plan (yes/no)?yes //提交
...
[root@mgm57 ~]# redis-trib.rb info 192.168.4.51:6351
192.168.4.55:6355 (2d343a9d...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.53:6353 (9e44139c...) -> 3 keys | 4096 slots | 1 slaves.
192.168.4.52:6352 (324e05df...) -> 2 keys | 4096 slots | 1 slaves.
192.168.4.58:6358 (4fe1fa46...) -> 0 keys | 0 slots | 0 slaves. //零個槽
[OK] 13 keys in 4 masters.
0.00 keys per slot on average.
第二步:移除主機
[root@mgm57 ~]# redis-trib.rb del-node 192.168.4.53:6353 \ c5e0da48f335c46a2ec199faa99b830f537dd8a0 //刪除誰+刪除的id
>>> Removing node e081313ec843655d9bc5a17f3bed3de1dccb1d2b from cluster 192.168.4.51:6351
>>> Sending CLUSTER FORGET messages to the cluster...
>>> SHUTDOWN the node.
擴展
平均分配當前所有主服務(wù)器的hash slots
redis-trib.rb rebalance 任意主機:端口
把移除的主機再次添加到集群里
1.清除數(shù)據(jù) (在redis本機操作)
redis-cli -h 192.168.4.58 -p 6379
> cluster info
> cluster reset # 清空2.在管理主機執(zhí)行添加命令
3.查看是否添加成功
把集群中的主機恢復為獨立的數(shù)據(jù)庫服務(wù)器
1.停止服務(wù)
2.注釋掉配置文件中的集群功能
3.清空數(shù)據(jù)庫目錄
4.啟動服務(wù)
/etc/init.d/redis_6379 start
5.連接服務(wù)查看不到集群信息 也沒有數(shù)據(jù)
redis-cli -h 192.168.4.53 -p 6379