Redis哨兵集群部署
1 环境
1.1 操作系统
CentOS7最小化安装
# cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
1.2 主从节点
本例中共涉及到三台服务器
- 10.10.2.231:主机名node1,作为主节点
- 10.10.2.232:主机名node2,作为从节点
- 10.10.2.233:主机名node3,作为从节点
2 安装Redis
以下步骤需要在每个节点上执行
2.1 安装epel源
# yum install -y epel-release
2.2 安装Redis
# yum install -y redis
2.3 查看Redis版本
# redis-server -v
Redis server v=3.2.12
3 配置Redis主从复制
3.1 配置Redis主节点
# vi /etc/redis.conf
3.1.1 修改Redis允许远程访问
bind 0.0.0.0
3.1.2 设置Redis的访问密码
requirepass 123456
3.1.3 设置主节点访问密码
为什么主节点也要做这项配置?
原因是:当我们启动了所有Redis服务和哨兵服务后,如果Redis主节点挂掉了则其他节点会被选为主节点。那么当原主节点重新启动以后,原主节点会变成从节点,需要从新的主节点同步数据,此时需要新的主节点的密码,也就是下面这项配置的值
masterauth 123456
3.2 配置Redis从节点
# vi /etc/redis.conf
3.2.1 按主节点配置从节点(3.1.1和3.1.2和3.1.3)
3.2.2 为从节点配置主节点信息
slaveof 10.10.2.231 6379
4 配置Redis哨兵
以下步骤需要在每个节点上执行
# vi /etc/redis-sentinel.conf
bind 0.0.0.0
sentinel monitor mymaster 10.10.2.231 6379 2
sentinel auth-pass mymaster 123456
其中:
mymaster
:Redis集群主节点名称,可自定义,默认名称mymaster
。如果做了修改要整体搜索下/etc/redis-sentinel.conf
保证改全10.10.2.231
:Redis集群主节点IP地址6379
:Redis集群主节点端口2
:表示有两个或两个以上的哨兵认为主节点不可用,则判定主节点客观下线123456
:Redis集群主节点密码
5 防火墙开放端口
以下步骤需要在每个节点上执行
# firewall-cmd --zone=public --add-port=6379/tcp --permanent
# firewall-cmd --zone=public --add-port=26379/tcp --permanent
# firewall-cmd --reload
# firewall-cmd --zone=public --list-ports
6379/tcp 26379/tcp
6 启动Redis服务
先启动主节点,再启动从节点
# service redis start
7 查看主从复制状态
# redis-cli -h 10.10.2.231
10.10.2.231:6379> auth 123456
10.10.2.231:6379> info replication
role:master
connected_slaves:2
slave0:ip=10.10.2.232,port=6379,state=online,offset=337,lag=0
slave1:ip=10.10.2.233,port=6379,state=online,offset=337,lag=0# redis-cli -h 10.10.2.232
10.10.2.232:6379> auth 123456
10.10.2.232:6379> info replication
role:slave
master_host:10.10.2.231
master_port:6379
master_link_status:up# redis-cli -h 10.10.2.233
10.10.2.233:6379> auth 123456
10.10.2.233:6379> info replication
role:slave
master_host:10.10.2.231
master_port:6379
master_link_status:up
8 测试主从复制
# redis-cli -h 10.10.2.231
10.10.2.231:6379> auth 123456
10.10.2.231:6379> set testKey testValue# redis-cli -h 10.10.2.232
10.10.2.232:6379> auth 123456
10.10.2.232:6379> keys *
- "testKey"
# redis-cli -h 10.10.2.233
10.10.2.233:6379> auth 123456
10.10.2.233:6379> keys *
- "testKey"
9 启动哨兵服务
先启动主节点,再启动从节点
# service redis-sentinel start
10 测试哨兵服务
10.1 停掉Redis主服务
# service redis stop
10.2 查看主从复制状态
# redis-cli -h 10.10.2.232
10.10.2.232:6379> auth 123456
10.10.2.232:6379> info replication
role:master
connected_slaves:1
slave0:ip=10.10.2.233,port=6379,state=online,offset=1819,lag=0# redis-cli -h 10.10.2.233
10.10.2.233:6379> auth 123456
10.10.2.233:6379> info replication
role:slave
master_host:10.10.2.232
master_port:6379
master_link_status:up