如何在CentOS 8中设置Redis集群
时间:2019-04-29 03:17:14 来源:igfitidea点击:
Redis Cluster是内置的Redis功能,它支持自动分片,复制和高可用性,该功能以前是使用Sentinels实现的。
根据Redis群集文档, “ 最小群集 ”要求至少包含3个主节点。
重要提示:Redis Cluster还具有一些局限性,例如,对NATted环境以及在Docker下重新映射IP地址或TCP端口的环境缺乏支持。此外,并非每个客户端库都支持它。
测试环境
Redis 主1:10.42.0.247 Redis 主2:10.42.0.197 Redis 主3:10.42.0.132 Redis从1:10.42.0.200 Redis从2:10.42.0.21 Redis从3:10.42.0.34
步骤1:在所有节点上安装Redis
- 使用DNF软件包管理器安装Redis模块
# dnf module install redis
- 启动Redis服务
# systemctl start redis # systemctl enable redis # systemctl status redis
步骤2:在所有节点上配置Redis实例
- 如何配置Redis集群节点
redis 配置文件: /etc/redis.conf
先对其进行备份。
# cp /etc/redis.conf /etc/redis.conf.orig # vi /etc/redis.conf
- 监听地址
bind 10.42.0.247
保护模式
protected-mode no
监听端口,默认值为6379
port 6379
- 启用集群模式
cluster-enabled yes
指定集群的配置文件:/var/lib/redis/nodes-6379.conf
cluster-config-file nodes-6379.conf
设置实例不可用的最长时间(以毫秒为单位),以便将其视为故障状态。值15000等于15秒。
cluster-node-timeout 15000
- 在磁盘上启用Redis持久性
appendonly yes
- 在所有节点上重新启动Redis服务
# systemctl restart redis
- 每个群集节点现在都应具有一个ID。可以在/var/log/redis/redis.log的日志文件中进行检查。
# cat /var/log/redis/redis.log
- 配置防火墙
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --zone=public --permanent --add-port=16379/tcp # firewall-cmd --reload
第三步:创建Redis集群
- 使用redis-cli创建集群
对于具有6个节点的设置,我们将有3个主节点和3个从节点。--cluster-replicas 1
表示创建一个副本
# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1
- 在任意主机上运行以下命令,以列出所有集群节点。
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes
步骤4:测试Redis群集故障转移
- 查看主节点
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
查看从节点
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave
- 在一个主节点(例如10.42.0.197)上停止Redis服务,检查集群中的所有主节点。
# systemctl stop redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
- 在发生故障的节点上再次启动Redis服务,再次检查集群中的所有主服务器。
# systemctl start redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
检查群集从服务器,确认原来发生故障的主服务器现在是否为从属服务器。
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave
步骤5:测试跨Redis集群的数据复制
- 如何验证群集数据复制。 在其中一个主节点上创建一个键和值,然后在所有群集节点中读取它
# redis-cli -c -h 10.42.0.247 -p 6379 set name 'theitroad' # redis-cli -c -h 10.42.0.247 -p 6379 get name # redis-cli -c -h 10.42.0.21 -p 6379 get name # redis-cli -c -h 10.42.0.132 -p 6379 get name # redis-cli -c -h 10.42.0.200 -p 6379 get name # redis-cli -c -h 10.42.0.197 -p 6379 get name # redis-cli -c -h 10.42.0.34 -p 6379 get name ``