redis 主从 + 哨兵模式集群部署(3 台机器部署方案)

前言

本文只讲如何部署,然后会贴出具体配置,以及如何验证是否部署成功(redis 版本采用 4.0.6 )。既不会介绍 redis 如何安装(本人采用源码安装方式),也不会涉及主从复制,哨兵模式具体原理及工作机制等内容。 后续会再补充 ~

配置

关于 redis 的配置文件 redis.conf 的配置项,请参考

Redis配置文件详解, 下面贴出的配置只会粗略讲解。

机器分配

名称机器 1机器2机器2
host 10.211.55.8 10.211.55.9 10.211.55.11
端口 6379 6379 6379
角色1 master slave 01 slave 02
角色2 sentinel 01 sentinel 02 sentinel 03

提示

看到这里,请先提前关闭三台机器的防火墙。防火墙不关闭,会出现 master 的数据不会同步到 slave 节点的情况

-- 关闭防火墙! -- 关闭防火墙! -- 关闭防火墙!

机器1 配置(master)(10.211.55.8)

redis.conf

# 如果为 yes 只能通过(127.0.0.1)访问
protected-mode no

# 端口
port 6379

# 用守护线程的方式启动
daemonize yes

# pid 文件
pidfile ./redis.pid

# 日志
logfile ""

# 数据库数量
databases 16

# 开启 rdb 并设置备份规则
save 900 1 
save 300 10
save 60 10000 

# rdb 以及 aof 备份文件
dir ./

# rbd 文件名
dbfilename dump.rdb

# 密码
requirepass abc123!@#

# 主从配置,slave 访问 master 需要密码
masterauth  abc123!@#

# Sentinel 模块的配置
slave-priority 100

sentinel.conf

protected-mode no
daemonize yes
# sentinel 端口
port 26379

dir ./

# 注意
sentinel monitor mymaster 10.211.55.8 6379 2
# 密码
sentinel auth-pass mymaster  abc123!@# 
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000
logfile ./sentinel.log

机器 2 配置(slave 01)(10.211.55.9)

slave 节点的配置只比 master 多了一个slaveof 10.211.55.8 6379

redis.conf

protected-mode no
port 6379
daemonize yes
pidfile ./redis.pid
logfile ""
databases 16
save 900 1
save 300 10
save 60 10000
dir ./
dbfilename dump.rdb
requirepass abc123!@#

# 跟 master 的区别,多了此配置
slaveof 10.211.55.8 6379
masterauth abc123!@#
slave-priority 100

sentinel.conf

protected-mode no
daemonize yes
# sentinel 端口
port 26379
dir ./
sentinel monitor mymaster 10.211.55.8  6379 2
sentinel auth-pass mymaster QpLpYnh619!
sentinel down-after-milliseconds mymaster 30000
sentinel parallel-syncs mymaster 1
sentinel failover-timeout mymaster 180000

logfile ./sentinel.log

机器 3 配置 (slave 02) (10.211.55.11)

省略。。 跟机器 2 配置一样!!!! 当然如果密码不一样,你就改一下

验证

请确认防火墙已经关闭 !!!!!!

首先验证主从复制,然后再验证哨兵模式是否成功,

源码安装方式,如果不指定参数,redis 启动脚本默认安装在 /usr/local/bin/ 下面

配置文件还是在 redis 的安装目录

验证主从复制

  1. 进入master 的 redis 解压目录

  2. 启动 redis /usr/local/bin/redis-server redis.conf

  3. 分别进入两个 slave 机器的 redis 目录 ,执行步骤 2

  4. 在 master 上通过客户端连接 redis 服务端,即执行以下命令

     	/usr/local/bin/redis-cli -a abc123![@#](https://my.oschina.net/u/2839266)      
     	------------------
     	abc123![@#](https://my.oschina.net/u/2839266) 是密码
    
  5. 在 redis 命令行上,执行 info replication 命令, 验证主从关系

     	# Replication
     	role:master (当前节点为 master)
     	connected_slaves:2   (2 个slave 节点)
     	slave0:ip=10.211.55.9,port=6379,state=online,offset=535,lag=1
     	slave1:ip=10.211.55.11,port=6379,state=online,offset=535,lag=1
     	master_replid:dbe7d07a45a521b1feb44117f9872bfde259aec3
     	master_replid2:0000000000000000000000000000000000000000
     	master_repl_offset:535
     	second_repl_offset:-1
     	repl_backlog_active:1
     	repl_backlog_size:1048576
     	repl_backlog_first_byte_offset:1
     	repl_backlog_histlen:535
    
  6. 在 master 上添加数据,看 slave 上是否会同步数据

验证 sentinel

  1. 分别在三台机器上,进入 redis 解压目录,依次执行

     /usr/local/bin/redis-sentinel sentinel.conf
    
  2. 连接任意 sentinel 节点,

     redis-cli -h 10.211.55.9 -p 26379 -a abc123![@#](https://my.oschina.net/u/2839266) 
    
  3. 在 redis 命令行上,执行 info sentinel 命令, 验证 sentinel 状态,

     # Sentinel
     sentinel_masters:1
     sentinel_tilt:0
     sentinel_running_scripts:0
     sentinel_scripts_queue_length:0
     sentinel_simulate_failure_flags:0
     master0:name=mymaster,status=ok,address=10.211.55.9:6379,slaves=2,sentinels=3
    

总结

以上配置,亲测有效! 如有疑问,请留言~

posted @ 2021-05-25 16:05  耀阳居士  阅读(1716)  评论(0编辑  收藏  举报