redis 高可用集群搭建
一、redis 的集中搭建方式
1.单体架构
单独一个redis服务
2.主从模式
一主多从,出问题需要运维手动切换主从
3.哨兵模式
通过哨兵自动切换,存在问题:出现 master 挂了后,重新选主后可能瞬间不可用
4.高可用集群
如果一个小节点挂了后,其他小节点依然可以使用
二.高可用集群模式配置
1.下载 redis
官网地址:https://redis.io/
https://download.redis.io/releases/redis-6.2.5.tar.gz
下载后放到 /usr/local/src
2.解压
cd /usr/local/src
tar -zxvf redis-6.2.5.tar.gz
3.移动redis 到 /usr/local
mv redis-6.2.5 ../
4.编译&安装
cd /usr/local/redis-6.2.5
make
make install
5.配置集群
1)配置第一个节点
mkdir -p /usr/local/redis-cluster
cd /usr/local/redis-cluster
mkdir 8001
cp /usr/local/redis-6.2.5/src/redis-server /usr/local/redis-cluster/8001
cp /usr/local/redis-6.2.5/redis.conf /usr/local/redis-cluster/8001
#修 改redis 配置
vim /usr/local/redis-cluster/8001/redis.conf
配置其他节点
cp -r /usr/local/redis-cluster/8001 /usr/local/redis-cluster/8002
cp -r /usr/local/redis-cluster/8001 /usr/local/redis-cluster/8003
cp -r /usr/local/redis-cluster/8001 /usr/local/redis-cluster/8004
cp -r /usr/local/redis-cluster/8001 /usr/local/redis-cluster/8005
cp -r /usr/local/redis-cluster/8001 /usr/local/redis-cluster/8006
注意:8001、8002、8003、8004、8005、8006 需要注意修改bind 的地址、端口信息
可以用批量替换 :%s/8001/8003/g 格式,将 8001 批量替换成 8003
2)启动服务确认配置文件是否正常;
分别进入 8001、8002、8003、8004、8005、8006目录执行
redis-server redis.conf
如上图,配置没问题,可以正常启动
3)安装 ruby 注意:高版本不需要,redis 3.0版本需要,目前测试 6.2.5 不需要执行此步骤
如果安装慢,可以考虑阿里云加速镜像
yum install ruby
yum install rubygems
gem install redis
注意:可以通过 --version 指定版本,例如:gem install redis --version 3.0.0
6.创建 redis 集群
cd /usr/local/redis-6.2.5/src
./redis-cli --cluster create 192.168.116.129:8001 192.168.116.129:8002 192.168.116.129:8003 192.168.116.129:8004 192.168.116.129:8005 192.168.116.129:8006 --cluster-replicas 1
注意:如果集群有密码,则需要添加 -a {password} 参数,如:
./redis-cli --cluster create 192.168.1.170:8001 192.168.1.170:8002 192.168.1.170:8003 192.168.1.170:8004 192.168.1.170:8005 192.168.1.170:8006 --cluster-replicas 1 -a redis###123
注意:最后的一个1,是 master/salve 的数量, 我这里每个小集群是1主1从 1/1 ,所以是1,假设配置1主2从,则是1/2=0.5
注意:低版本需要使用 ruby 去创建集群
提示是否配置,输入 yes :
7.验证集群,连接redis
cd /usr/local/redis-cluster/8001
./redis-cli -c -h 192.168.116.129 -p 8001
发现执行 set key value 的时候,会自动切换服务区自动设置
8.查看集群状态
cluster info
9.关闭集群
./redis-cli -c -h 192.168.116.129 -p 8001 shutdown
./redis-cli -c -h 192.168.116.129 -p 8002 shutdown
./redis-cli -c -h 192.168.116.129 -p 8003 shutdown
./redis-cli -c -h 192.168.116.129 -p 8004 shutdown
./redis-cli -c -h 192.168.116.129 -p 8005 shutdown
./redis-cli -c -h 192.168.116.129 -p 8006 shutdown
10.辅助启动/停止脚本
vim cluster_shart.sh
cd /usr/local/redis-cluster/
./8001/redis-server ./8001/redis.conf
./8002/redis-server ./8002/redis.conf
./8003/redis-server ./8003/redis.conf
./8004/redis-server ./8004/redis.conf
./8005/redis-server ./8005/redis.conf
./8006/redis-server ./8006/redis.conf
vim cluster_shutdown.sh
#pgrep redis-server | xargs -exec kill -9
cd /usr/local/redis-6.2.5/src
./redis-cli -c -h 192.168.116.129 -p 8001 shutdown
./redis-cli -c -h 192.168.116.129 -p 8002 shutdown
./redis-cli -c -h 192.168.116.129 -p 8003 shutdown
./redis-cli -c -h 192.168.116.129 -p 8004 shutdown
./redis-cli -c -h 192.168.116.129 -p 8005 shutdown
./redis-cli -c -h 192.168.116.129 -p 8006 shutdown
如果是云服务器,做公网配置,请注意:
# IP绑定,redis不建议对公网开放,这里绑定了服务器私网IP及环回地址
bind 172.17.0.13 127.0.0.1
# 云服务器上部署需指定公网ip
cluster-announce-ip 122.51.151.130
# Redis总线端口,用于与其它节点通信,clients port + 10000
cluster-announce-bus-port 16381