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

注意:最后的一个1,是  master/salve 的数量, 我这里每个小集群是1主1从  1/1 ,所以是1,假设配置1主2从,则是1/2=0.5

注意:低版本需要使用 ruby 去创建集群 

 提示是否配置,输入 yes :

7.验证集群

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

原文地址:https://www.cnblogs.com/hujunmin/p/15057893.html