搭建Redis4.0.8集群
此次使用的环境是 : CentOS Linux release 7.5.1804 (Core)
使用的软件包:redis-4.0.8.tar.gz、redis-3.2.1.gem
主机准备
主机名 | IP地址 | 端口 | 备注 |
---|---|---|---|
client | 192.168.4.50 | * | client客户机 |
redis51 | 192.168.4.51 | 6351 | redis服务器 |
redis52 | 192.168.4.52 | 6352 | redis服务器 |
redis53 | 192.168.4.53 | 6353 | redis服务器 |
redis54 | 192.168.4.54 | 6354 | redis服务器 |
redis55 | 192.168.4.55 | 6355 | redis服务器 |
redis56 | 192.168.4.56 | 6356 | redis服务器 |
redis57 | 192.168.4.57 | * | redis管理机 |
redis58 | 192.168.4.58 | 6358 | redis服务器 |
redis59 | 192.168.4.59 | 6359 | redis服务器 |
一、搭建管理主机机
- 部署脚本运行环境 (使用ruby脚本管理集群)
]# yum -y install ruby
- 创建ruby脚本
]# gem install redis-3.2.1.gem
- 解压tar包
]# tar -zxvf redis-4.0.8.tar.gz
- 进入redis-4.0.8文件夹内
]# cd redis-4.0.8
- 创建管理集群脚本
]# cp src/redis-trib.rb /root/bin/
- 加执行权限
]# chmod +x /root/bin/redis-trib.rb
二、创建6台redis服务器
- 按要求准备好6台redis服务器
- 修改好IP地址和端口号,IP地址(192.168.4.51~192.168.4.56)
- 不需要设置密码、不能有任何数据)
- 关闭selinux 和 firewalld
- 搭建方法见我上一篇文章 点此快速跳转
- 启用每台redis 服务集群功能
]# vim +815 /etc/redis/6379.conf
815 cluster-enabled yes #启动集群功能
823 cluster-config-file nodes-6379.conf #存储集群信息文件
829 cluster-node-timeout 15000 #超时时间(单位毫秒)
三、创建redis集群
- 管理主机创建集群
]# redis-trib.rb create --replicas 1 192.168.4.51:6351 192.168.4.52:6352 192.168.4.53:6353 192.168.4.54:6354 192.168.4.55:6355 192.168.4.56:6356
... ...
Can I set the above configuration? (type 'yes' to accept): yes #输入yes 表示同意以上配置
[OK] All nodes agree about slots configuration.
>>> Check for open slots...
>>> Check slots coverage...
[OK] All 16384 slots covered.
- 在管理主机查看集群的统计信息
]# redis-trib.rb info 192.168.4.52:6352 #指定任意一台主机即可
- 在管理主机查看集群的详细信息
]# redis-trib.rb check 192.168.4.52:6352
四、测试redis集群
- 客户端访问集群中的任意一台redis服务存取数据
]# redis-cli -c -h 192.168.4.53 -p 6353
192.168.4.53:6353> set name bob
-> Redirected to slot [5798] located at 192.168.4.52:6352
OK
192.168.4.51:6351> get name
-> Redirected to slot [5798] located at 192.168.4.52:6352
"bob"
五、管理redis集群
- 按要求准备好2台redis服务器
- 修改好IP地址和端口号,IP地址(192.168.4.58~192.168.4.59)
- 不需要设置密码、不能有任何数据)
- 关闭selinux 和 firewalld
- 搭建方法见我上一篇文章 点此快速跳转
- 添加slave角色服务器(192.168.4.58)
- 在管理机把192.168.4.58添加到集群里做192.168.4.52的从数据库服务器
]# redis-trib.rb add-node --slave 192.168.4.58:6358 192.168.4.52:6352
- 查看集群状态
]# redis-trib.rb info 192.168.4.52:6352
]# redis-trib.rb check 192.168.4.52:6352
- 移除slave 角色服务器(192.168.4.56)
]# redis-trib.rb check 192.168.4.56:6352 #查看要删除主机的id
S: 492fab7c991c72028956b3e9e8dbad48375c7e5a 192.168.4.56:6356
slots: (0 slots) slave
replicates 32d38c4dfae2f5a0eb5192386ac5d3282dbca134
]# redis-trib.rb del-node 192.168.4.56:6356 492fab7c991c72028956b3e9e8dbad48375c7e5a #后面跟上id号
- 添加master角色服务器(192.168.4.59)
]# redis-trib.rb add-node 192.168.4.59:6359 192.168.4.52:6352
- 查看集群详细信息
]# redis-trib.rb 详细信息 192.168.4.52:6352
- 移除master角色服务器(192.168.4.53)
- 先删除master服务器占用的hash槽
]# redis-trib.rb reshard 192.168.4.53:6353
How many slots do you want to move (from 1 to 16384)?4096 #移除4096个数槽
What is the receiving node ID? bc5c4e082a5a3391b634cf433a6486c867cfc44b
#要移动给谁的id即目标主机(这里可以随机写一个master的ID)
Source node #1: c5e0da48f335c46a2ec199faa99b830f537dd8a0
#从谁那移动即源主机(这里写4.58的ID)
Source node #2:done #设置完毕
- 在管理机上移除master主机
]# redis-trib.rb del-node 192.168.4.53:6353 c5e0da48f335c46a2ec199faa99b830f537dd8a0 #删除的主机+id
- 查看集群信息
]# redis-trib.rb info 192.168.4.52:6352