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 主从节点

本例中共涉及到三台服务器

  1. 10.10.2.231:主机名node1,作为主节点
  2. 10.10.2.232:主机名node2,作为从节点
  3. 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 *

  1. "testKey"

# redis-cli -h 10.10.2.233
10.10.2.233:6379> auth 123456
10.10.2.233:6379> keys *

  1. "testKey"

7. 启动哨兵服务

先启动主节点,再启动从节点

# service redis-sentinel start

8. 测试哨兵服务

8.1 停掉Redis主服务

# service redis stop

8.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

回到目录

如果您发现笔者措辞不严谨、逻辑不合理,甚至代码有错误、结论很偏颇等等问题,欢迎联系QQ:562759534。笔者感激各位的讨论和指正,并在此不胜感激!拜谢!
原文地址:https://www.cnblogs.com/LOVE0612/p/15507956.html