redis搭建哨兵集群一主两从三哨兵 (主从复制优点问题希望大神指点一下)

先安装好一个redis

我这里安装的是 redis:6.2.6 

[root@localhost docker]# mkdir redisCluster

另外复制三份用于搭集群放在docker文件夹下

重新名为 redis-6370 redis-6371 redis-6372

Linux虚拟机下载redis.conf的配置文件(如果没有或者想重新配置)

wget http://download.redis.io/redis-stable/redis.conf

修改配置文件主节点

# 表示Redis可以接受任意ip的连接
bind 0.0.0.0


# 关闭保护模式
protected-mode no 


#配置redis数据存储位置
dir /data
# 让redis服务后台运行
daemonize yes 
#pid存放目录
pidfile /var/run/redis.pid  
# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/var/log/redis/redis.log"
#设置redis密码
requirepass 123***  
#主从同步master的密码   
masterauth 123***    
#修改redis监听端口(可以自定义)
port 6370             

对于slave而言,配置文件修改以下几项:

# 表示Redis可以接受任意ip的连接
bind 0.0.0.0 
#修改redis监听端口(可以自定义)
port 6371             
# 关闭保护模式
protected-mode no 
#pid存放目录
pidfile /var/run/redis_6370.pid
# 让redis服务后台运行
daemonize yes 


# 设定密码(可选,如果这里开启了密码要求,slave的配置里就要加这个密码)
requirepass 123***
# 设定主库的密码,用于认证,如果主库开启了requirepass选项这里就必须填相应的密码
masterauth 123***


# 设定master的IP和端口号,redis配置文件中的默认端口号是6379
# 低版本的redis这里会是slaveof,意思是一样的,因为slave是比较敏感的词汇,所以在redis后面的版本中不在使用slave的概念,取而代之的是replica
# 将35.236.172.131做为主,其余两台机器做从。ip和端口号按照机器和配置做相应修改。
replicaof 虚拟机ip 6370


# 配置日志路径,为了便于排查问题,指定redis的日志文件目录
logfile "/var/log/redis/redis.log"

另外一个从节点只需要复制上文改端口号为 6372

启动redis

主节点6370

[root@localhost redis-6370]# vim startRedis6370.sh

docker run -it --name redis-0 -v /usr/local/docker/redisCluster/redis-6370/config/redis.conf:/etc/redis/redis.conf -p 6370:6370 -d redis:6.2.6  /bin/bash

从节点6371

[root@localhost redis-6371]# vim startRedis6371.sh

docker run -it --name redis-1 -v /usr/local/docker/redisCluster/redis-6371/config/redis.conf:/etc/redis/redis.conf -p 6371:6371 -d redis:6.2.6  /bin/bash

从节点6372

[root@localhost redis-6372]# vim startRedis6372.sh

docker run -it --name redis-2 -v /usr/local/docker/redisCluster/redis-6372/config/redis.conf:/etc/redis/redis.conf -p 6372:6372 -d redis:6.2.6  /bin/bash

然后按先主后从的顺序启动节点 6370 -->6371-->6372

docker ps 查看启动状态

查看集群状态

# 以交互模式进入容器redis-0中
$ docker exec -it redis-0 bash


root@5e0a1e884067:/data# mkdir /var/log/redis
root@5e0a1e884067:/data# touch /var/log/redis/redis.log


root@5e0a1e884067:/data# redis-server /etc/redis/redis.conf
root@5e0a1e884067:/data# redis-cli -h 192.***.***.128 -p 6370
192.***.***.128:6370> auth 123***
OK
查看集群信息

192.***.***.128:6370>info replication
# 如果是主,这里的role的值会是master,如果是从,这里的role的值会是slave
role:slave
# 对于slave,还要查看master_link_status这个属性值。slave上这个属性值为up就说明主从复制是OK的,否者就有问题。如果从机状态不为up,首先排查主机的端口是否被限,然后查看redis日志排查原因
master_link_status:up

主从搭建成功后,可以通过在master上写入一个key-value值,查看是否会同步到slave上,来验证主从同步是否能成功。

打开主节点

# 以交互模式进入容器redis-0中
$ docker exec -it redis-0 bash
创建日志目录和文件

root@5e0a1e884067:/data# mkdir /var/log/redis
root@5e0a1e884067:/data# touch /var/log/redis/redis.log


root@5e0a1e884067:/data# redis-server /etc/redis/redis.conf
root@5e0a1e884067:/data# redis-cli -h 192.***.***.128 -p 6370
#redis-cli -h  192.***.***.128 -p 6370  -a 123*** 此方式不用输密码 
192.168.227.128:6370> auth 123456
OK
给主节点添加数据

192.***.***.128:6370> set test_key hello-world
OK
查看数据

192.***.***.128:6370> get test_key 
"hello-world"






在从节点中查看数据

# 以交互模式进入容器redis-1中
$ docker exec -it redis-1 bash
创建日志目录和文件

root@5e0a1e884067:/data# mkdir /var/log/redis
root@5e0a1e884067:/data# touch /var/log/redis/redis.log
在容器中启动redis服务

root@5e0a1e884067:/data# redis-server /etc/redis/redis.conf
root@5e0a1e884067:/data# redis-cli -h 192.***.***.128 -p 6371
#redis-cli -h  192.***.***.128 -p 6371  -a 123***   这行命令打开不需要输入密码
192.***.***.128:6371> auth 123***
OK
查看数据

0.0.0.0:6371> get test_key 
"hello-world"

主从复制搭建成功

搭建成功后

下载哨兵配置文件

wget http://download.redis.io/redis-stable/sentinel.conf

修改哨兵配置文件

port 26379      #修改Sentinel监听端口
# 让sentinel服务后台运行
daemonize yes 


# 修改日志文件的路径
logfile "/var/log/redis/sentinel.log"


# 修改监控的主redis服务器
# 最后一个2表示,两台机器判定主被动下线后,就进行failover(故障转移)
sentinel monitor mymaster 192.***.***.128 6370 2
#配置失效时间,master会被这个sentinel主观地认为是不可用的,单位毫秒
sentinel down-after-milliseconds mymaster 10000  
#若sentinel在该配置值内未能完成master/slave自动切换,则认为本次failover失败。
sentinel failover-timeout mymaster 60000  
#在发生failover主备切换时最多可以有多少个slave同时对新的master进行同步。
sentinel parallel-syncs mymaster 2
#设置连接master和slave时的密码,注意的是sentinel不能分别为master和slave设置不同的密码,因此master和slave的密码应该设置相同
sentinel auth-pass mymaster 123***

其余两个哨兵配置只需要改哨兵端口号 为26380 26381

启动哨兵sentinel-0

[root@localhost redis-6370]# vim startRedisSentinel6370.sh

配置文件内容

docker run -it --name sentinel-0 -v /usr/local/docker/redisCluster/redis-6370/config/sentinel.conf:/etc/redis/sentinel.conf -p 26379:26379 -d redis:6.2.6  /bin/bash

启动哨兵sentinel-1

[root@localhost redis-6371]# vim startRedisSentinel6371.sh

配置文件内容

docker run -it --name sentinel-1 -v /usr/local/docker/redisCluster/redis-6371/config/sentinel.conf:/etc/redis/sentinel.conf -p 26380:26380 -d redis:6.2.6  /bin/bash

启动哨兵sentinel-2

[root@localhost redis-6372]# vim startRedisSentinel6372.sh

配置文件内容

docker run -it --name sentinel-2 -v /usr/local/docker/redisCluster/redis-6372/config/sentinel.conf:/etc/redis/sentinel.conf -p 26381:26381 -d redis:6.2.6  /bin/bash

运行哨兵

打开主节点

# 以交互模式进入容器redis-1中
$ docker exec -it sentinel-0 bash

创建日志目录和文件

$ mkdir /var/log/redis
$ touch /var/log/redis/sentinel.log

启动哨兵

redis-sentinel /etc/redis/sentinel.conf 

查看日志,哨兵成功监听到一主和两从的机器

18:X 11 Jul 2019 13:25:55.416 # +monitor master mymaster 192.***.***.128 6370 quorum 2
18:X 11 Jul 2019 13:25:55.418 * +slave slave 192.***.***.128 6372 @ mymaster 192.168.227.128 6370
18:X 11 Jul 2019 13:25:55.421 * +slave slave 192.***.***.128 6371 @ mymaster 192.168.227.128 6370

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值