在linux服务器上部署redis哨兵模式

在linux服务器上部署redis哨兵模式

初次搭建,整理备忘。若有忽略或不正确或冗余操作的地方,欢迎批评指正,谢谢~
以IP为192.168.225.200的服务器为例,工具Xshell。
参考链接:https://blog.csdn.net/qq_40953197/article/details/108639539

1. 用Xshell连接到服务器,进入usr/local目录下,创建redis目录

cd /usr/local
mkdir redis

2. 下载、解压并安装redis。

(1)进入redis目录下,下载redis

 wget http://download.redis.io/releases/redis-5.0.7.tar.gz

(2)解压

tar xzf redis-5.0.7.tar.gz

(3)进入redis-5.0.7目录编译、安装redis

make && make install

1)创建用于存放数据和日志的目录文件夹data、log。

mkdir data
mkdir log

2)进入log目录,创建日志文件

touch redis.log
touch sentinel.log

在这里插入图片描述

3.在redis目录下新建三份文件夹,分别命名为redis_master(主),redis_slave1(从),redis_slave2(从)。然后将redis-5.0.7文件夹分别复制到三个文件夹中。

(1)进入redis目录,新建redis_master(主),redis_slave1(从),redis_slave2(从)文件夹

mkdir redis_master
mkdir redis_slave1
mkdir redis_slave2

在这里插入图片描述
(2)将redis-5.0.7复制到新建的3个目录中

cp -r redis-5.0.7 /usr/local/redis/redis_master
cp -r redis-5.0.7 /usr/local/redis/redis_slave1
cp -r redis-5.0.7 /usr/local/redis/redis_slave2

4.分别进入redis_master(主),redis_slave1(从),redis_slave2(从)文件夹,修改redis.conf和sentinel.conf文件。

从机的配置和主机相似,不同的地方是从机需要使用replicaof指定主机(master)的IP地址和端口,老版本使用的是 slaveof,5.0.7版本使用 replicaof

(1)redis_master的配置

1)redis.conf配置

#如果想指定限制访问,可设置对应的ip
bind 192.168.225.200
#配置端口
port 6379
timeout 0
tcp-keepalive 300
#设置为后台启动
daemonize yes
#redis pid存储位置,加上端口是便于区分
pidfile /var/run/redis_6379.pid
loglevel notice
#日志文件
logfile “/usr/local/redis/redis_master/redis-5.0.7/log/redis_6379.log”
databases 16
dbfilename dump6379.rdb
#存放备份文件以及日志等文件的目录
dir /usr/local/redis/redis_master/redis-5.0.7/data
#slave服务连接 master的密码
masterauth qazwsx
slave-serve-stale-data no
slave-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-ping-slave-period 10
repl-timeout 60
repl-disable-tcp-nodelay no
#redis 连接密码
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
#关闭保护模式,可以外部访问
protected-mode no
#默认端口为26379
port 26379
#设置为后台启动
daemonize yes
#redis sentinel pid文件位置
pidfile “/var/run/redis-sentinel.pid”
#日志文件
logfile “/usr/local/redis/redis_master/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_master/redis-5.0.7”
sentinel deny-scripts-reconfig yes
#30秒ping不通主节点的信息,主观认为master宕机
sentinel down-after-milliseconds mymaster 3000
#监控的IP 端口号,并且指定当有2台哨兵认为主机挂了,则对主机进行容灾切换,此处为至少2个
sentinel monitor mymaster 192.168.225.200 6379 2
#当在Redis实例中开启了requirepass,这里就需要提供密码
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
#主备切换时,最多有多少个slave同时对新的master进行同步,这里设置为默认的1,1表示串行,>1并行
snetinel parallel-syncs mymaster 1
#故障转移开始,三分钟内没有完成,则认为转移失败
sentinel failover-timeout mymaster 180000

(2)redis_slave1的配置

1)redis.conf配置

daemonize yes
bind 192.168.225.200
port 6380
timeout 0
tcp-keepalive 300
pidfile /var/run/redis_6380.pid
loglevel notice
logfile “/usr/local/redis/redis_slave1/redis-5.0.7/log/redis_6380.log”
databases 16
dbfilename dump6380.rdb
dir /usr/local/redis/redis_slave1/redis-5.0.7/data
replicaof 192.168.225.200 6379
masterauth qazwsx
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
protected-mode no
port 26380
daemonize yes
pidfile “/var/run/redis-sentinel.pid”
logfile “/usr/local/redis/redis_slave1/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_slave1/redis-5.0.7”
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.225.200 6379 2
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel failover-timeout mymaster 180000
snetinel parallel-syncs mymaster 1

(2)redis_slave2的配置

1)redis.conf配置

daemonize yes
bind 192.168.225.200
port 6381
timeout 0
tcp-keepalive 300
pidfile /var/run/redis_6381.pid
loglevel notice
logfile “/usr/local/redis/redis_slave2/redis-5.0.7/log/redis_6381.log”
databases 16
dbfilename dump6381.rdb
dir /usr/local/redis/redis_slave2/redis-5.0.7/data
replicaof 192.168.225.200 6379
masterauth qazwsx
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync yes
repl-diskless-sync-delay 5
repl-disable-tcp-nodelay no
replica-priority 100
requirepass qazwsx

2)sentinel.conf配置

bind 192.168.225.200
protected-mode no
port 26381
daemonize yes
pidfile “/var/run/redis-sentinel.pid”
logfile “/usr/local/redis/redis_slave2/redis-5.0.7/log/sentinel.log”
dir “/usr/local/redis/redis_slave2/redis-5.0.7”
sentinel deny-scripts-reconfig yes
sentinel monitor mymaster 192.168.225.200 6379 2
sentinel auth-pass mymaster qazwsx
sentinel config-epoch mymaster 0
sentinel leader-epoch mymaster 0
sentinel failover-timeout mymaster 180000
snetinel parallel-syncs mymaster 1

5.启动redis_master,redis_slave1,redis_slave2。启动顺序主-从-哨兵。

分别进入redis_master,redis_slave1,redis_slave2的redis-5.0.7目录下。

(1)启动主从

 ./src/redis-server ./redis.conf

(2)启动哨兵

./src/redis-sentinel ./sentinel.conf

通过ps -ef|grep redis查看redis进程,如下图:
在这里插入图片描述
6.验证效果。
(1)验证主从数据是否同步。由于设置了密码,所以要先auth qazwsx,如下图:在这里插入图片描述
1)通过redis-cli -h 192.168.225.200 -c -p 6379,在主上写入数据,如下:

192.168.225.200:6379> auth qazwsx
OK
192.168.225.200:6379> keys *
(empty list or set)
192.168.225.200:6379> set k1 123
OK
192.168.225.200:6379> set k2 456
OK
192.168.225.200:6379> get k1
"123"
192.168.225.200:6379> get k2
"456"
192.168.225.200:6379> 

2)进入从1,redis-cli -h 192.168.225.200 -c -p 6380,查看数据是否同步,如下:

192.168.225.200:6380> auth qazwsx
OK
192.168.225.200:6380> keys *
1) "k1"
2) "k2"
192.168.225.200:6380> get k1
"123"
192.168.225.200:6380> get k2
"456"
192.168.225.200:6380> 

3)进入从2,redis-cli -h 192.168.225.200 -c -p 6381,查看数据是否同步,如下:

192.168.225.200:6381> auth qazwsx
OK
192.168.225.200:6381> keys *
1) "k2"
2) "k1"
192.168.225.200:6381> get k1
"123"
192.168.225.200:6381> get k2
"456"
192.168.225.200:6381> 

通过info replication可以查看他们的角色,如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

(2)验证哨兵。
停止redis_master上的redis,kill -9 杀掉端口号为6379的redis进程,6380端口的role会由slave变为master,而且redis.conf文件的replicaof 属性会发生变化,会由之前的6379变化为6380,如下图:
1)redis.conf文件
在这里插入图片描述
在这里插入图片描述
2)6380端口的role会由slave变为master
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值