在Ubuntu上我使用的是APT命令安装Redis:sudo apt install redis,安装完成之后redis.conf的默认路径是:/etc/redis,redis-server的默认路径是:/usr/bin/redis-server
假设我们有三个IP:10.108.3.86、10.108.3.186、10.108.3.187,我们把86作为redis的master节点,剩下两个作为slave节点
一、redis配置,修改redis.conf文件(以master为例):
# 设置绑定IP
bind 10.108.3.86
# 设置绑定端口
port 6379
# 是否开启保护模式,默认开启。
# 要是配置里没有指定bind和密码。开启该参数后,redis只会本地进行访问,拒绝外部访问。要是开启了密码和bind,可以开启。否则最好关闭设置为no。
protected-mode no
# redis进程是否以守护进程的方式运行
daemonize yes
# 密码
requirepass vm-ubunut-sentinel
# master通讯密码(注意:只有master节点才添加这一项,其余节点不需要添加)
masterauth vm-ubunut-sentinel
二、哨兵配置(所有节点):
# 新建一个/etc/redis/sentinel.conf配置文件,输入如下配置:
# 端口
port 26379
# 关闭保护模式,可以外部访问
protected-mode no
# 设置后台启动
daemonize yes
# 日志文件
logfile /var/log/redis/redis-server-sentinel.log
# 指定master主机IP地址和端口,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换
sentinel monitor mymaster 10.108.3.86 6379 2
# 当redis实例中开启了requirepass,这里就需要提供密码
sentinel auth-pass mymaster vm-ubunut-sentinel
# 设置主机多少秒无响应,则认为挂了
sentinel down-after-milliseconds mymaster 3000
# 主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1
sentinel parallel-syncs mymaster 1
# 故障转移的超时时间,这里设置为三分钟
sentinel failover-timeout mymaster 180000
三、启动哨兵(所有节点)
/usr/bin/redis-server /etc/redis/sentinel.conf --sentinel
四、停止哨兵(所有节点,以master节点为例)
redis-cli -a vm-ubunut-sentinel -c -h 10.108.3.86 -p 26379 shutdown
附加:
可以将启动哨兵、停止哨兵写成批处理文件,比如:start.sh、stop.sh,给两个文件授权:sudo chmod 775 start.sh、sudo chmod 775 stop.sh
之后就可以直接用批处理启动和停止哨兵,也可以设置开机启动
查看redis服务状态:sudo systemctl status redis
启动服务:sudo systemctl start redis
停止服务:sudo systemctl stop redis