Linux下配置Redis的主从复制和主从切换
一、为了实现高可用,一般生产环境使用的Redis都会做的主从复制和主从切换,而这些只需要做少许的配置即可完成。
二、为了便于展示,在一台机器上完成主从复制和主从切换,所以就需要修改端口,多运行几个实例
1、安装redis参考 ,即安装在:/usr/local/redis下,源码在:/usr/local/src/redis-4.0.9下
2、复制主从配置文件和哨兵的配置文件
# 主机节点配置 cp /usr/local/src/redis-4.0.9/redis.conf /usr/local/redis/redis-master.conf # 从节点配置 cp /usr/local/src/redis-4.0.9/redis.conf /usr/local/redis/redis-slave.conf # 三个哨兵节点配置 cp /usr/local/src/redis-4.0.9/sentinel.conf /usr/local/redis/sentinel-1.conf cp /usr/local/src/redis-4.0.9/sentinel.conf /usr/local/redis/sentinel-2.conf cp /usr/local/src/redis-4.0.9/sentinel.conf /usr/local/redis/sentinel-3.conf
3、修改配置文件
a、修改主节点配置 redis-master.conf
# 修改可以远程访问 bind 0.0.0.0 # 修改成保护模式可以不使用密码 protected-mode no # 修改成后台启动 daemonize yes # 修改数据存储为绝对路径 dir /usr/local/redis/6379/
b、修改从节点配置 redis-slave.conf
# 修改端口,在用一个机器上6379已经被主节点占用 port 6479 # 修改可以远程访问 bind 0.0.0.0 # 修改成保护模式可以不使用密码 protected-mode no # 修改成后台启动 daemonize yes # 修改数据存储为绝对路径 dir /usr/local/redis/6479/ # 将文件名改成redis要启动的端口,如果安装多个redis pidfile /var/run/redis_6479.pid
# 配置主节点ip和端口
slaveof 127.0.0.1 6379
c、修改哨兵配置 sentinel-1.conf
# 修改成保护模式可以不使用密码 protected-mode no
# 修改成后台启动 daemonize yes
# 哨兵监控的master,集群名为mymaster,主节点的ip和端口,需要断定主节点死亡的哨兵数
sentinel monitor mymaster 127.0.0.1 6379 2
# master或slave多长时间(默认30秒)不能使用后标记为s_down状态。
sentinel down-after-milliseconds mymaster 5000
#若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败。
sentinel failover-timeout mymaster 18000
#设置master和slaves验证密码,没有密码不需要
# sentinel auth-pass mymaster 密码
# 指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步
sentinel parallel-syncs mymaster 1
d、修改哨兵配置 sentinel-2.conf,和上一步配置一样,因为在同一台机器,需要修改下端口
# 修改端口,在用一个机器上6379已经被主节点占用 port 26479
# 修改成后台启动 daemonize yes
# 修改成保护模式可以不使用密码
protected-mode no
e、修改哨兵配置 sentinel-3.conf,和上一步配置一样,因为在同一台机器,需要修改下端口
# 修改端口,在用一个机器上6379已经被主节点占用 port 26579
# 修改成后台启动 daemonize yes
# 修改成保护模式可以不使用密码
protected-mode no
4、启动主从,启动哨兵
# 创建redis数据存储目录 mkdir /usr/local/redis/6379 /usr/local/redis/6479 # 启动主从 /usr/local/redis/bin/redis-server /usr/local/redis/redis-master.conf /usr/local/redis/bin/redis-server /usr/local/redis/redis-slave.conf # 启动哨兵 /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel-1.conf /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel-2.conf /usr/local/redis/bin/redis-sentinel /usr/local/redis/sentinel-3.conf
5、查看启动状态
# 通过哨兵查看集群的信息 /usr/local/redis/bin/redis-cli -p 26379 info
备注:redis哨兵集群可以监控多个主从,只需要保证集群名唯一即可。
可以登录哨兵客户端使用,需要依次在集群中所有的sentinel节点执行以下命令,不然只有输入命令哨兵才会监听:
# 登录客户端 /usr/local/redis/bin/redis-cli -p 26379 # 在客户端使用命令监听主节点 sentinel monitor md-dev 127.0.0.1 6379 2
# 删除
sentinel remove md-dev
yexiangyang
moyyexy@gmail.com