Redis一主二从三哨兵配置(模拟3台服务器)

redis一主二从+三哨兵配置


1.创建虚拟机

使用VM创建3台虚拟机

  • ip:192.168.81.129
  • ip:192.168.81.130
  • ip:192.168.81.131

2安装redis服务

> 注意: > > 如果您使用 Redis 5 或更高版本,这很容易实现,因为我们在 Redis Cluster 命令行实用程序的帮助下嵌入到 中redis-cli,可用于创建新集群、检查或重新分片现有集群等。 > 对于 Redis 版本 3 或 4,有一个redis-trib.rb非常相似的旧工具。您可以src在Redis源代码分发目录中找到它。您需要安装redisgem 才能运行redis-trib.

2.1 安装环境

yum -y install gcc-c++

2.2 获取压缩包

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

2.3 解压 安装(依次执行)

`tar -zxvf redis-5.0.6.tar.gz`
`cd redis-5.0.6`
`make`

2.4 启动redis服务

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

3.配置redis文件

主库配置

1.修改redis配置文件:
/etc/redis.conf
2.修改绑定ip为服务器内网ip地址,做绑定,三台各自填写各自的ip地址
bind 0.0.0.0
2.保护模式修改为否,允许远程连接
protected-mode no
3.设定密码
requirepass "123456"
4.设定主库密码与当前库密码同步,保证从库能够提升为主库
masterauth "123456"
5.打开AOF持久化支持
appendonly yes

从配置

跟主配置一样,但是从配置的bind不变,其他一样
添加 slaveof 192.168.81.129 6379

出现链接失败的问题

启动: systemctl start firewalld  
关闭: systemctl stop firewalld  
查看状态: systemctl status firewalld   
开机禁用  : systemctl disable firewalld  
开机启用  : systemctl enable firewalld  

最后将住服务器上的redis.conf中的bind127.0.0.1修改为0.0.0.0让所有的ip能够连接

链接成功

info replication   
Replication   
role:master  
connected_slaves:2
slave0:ip=192.168.81.130,port=6379,state=online,offset=1548,lag=0
slave1:ip=192.168.81.131,port=6379,state=online,offset=1548,lag=0
master_replid:582a050fb3454f72b98147b4b2fa14e6802f32a1
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1562
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1562

4.配置sentinel 3个哨兵

1.主机配置 在192.168.81.129中配置,找到src/sentinel.conf

  • 端口
    port 26379
  • 保护模式
    protected-mode no
  • 守护进程
    daemonize yes
  • 设置master和slaves的密码
    sentinel auth-pass mymaster 123456
  • master或slave多长时间(默认30秒)不能使用后标记为s_down状态
    sentinel down-after-milliseconds mymaster 30000
  • 选项指定了在执行故障转移时, 最多可以有多少个从服务器同时对新的主服务器进行同步, 这个数字越小, 完成故障转移所需的时间就越长。
    sentinel parallel-syncs mymaster 1
  • 若sentinel在该配置值内未能完成failover操作(即故障时master/slave自动切换),则认为本次failover失败
    sentinel failover-timeout mymaster 180000

2.从机配置192.168.81.130和192.168.81.131 找到 src/sentinel.conf
主要添加
sentinel monitor mymaster 192.168.81.129 6379 2
其次
192.168.81.130 中port 26380
192.168.81.131 中port 26381
其他与上面主机一直

注意

这两个顺序不能反
sentinel auth-pass mymaster 123456
sentinel down-after-milliseconds mymaster 30000

3.1启动
./src/redis-sentinel sentinel.conf

5.配置完成查看效果

1.启动顺序

主机redis服务-> 从机redis服务 -> sentinel

2.查看

  • 192.168.81.129 使用 info replication 命令

  • role:master //角色为mster
    connected_slaves:2//用2个从机
    slave0:ip=192.168.81.130,port=6379,state=online,offset=50440,lag=1
    slave1:ip=192.168.81.131,port=6379,state=online,offset=50440,lag=1
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:90a93c7fdc2f9ea732f8813cb71c548f1789ddee
    master_repl_offset:50726
    second_repl_offset:35186
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:1
    repl_backlog_histlen:50726

  • 192.168.81.130 使用 info replication 命令

  • role:slave //角色为子节点
    master_host:192.168.81.129
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:1
    master_sync_in_progress:0
    slave_repl_offset:132768
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:132768
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:46506
    repl_backlog_histlen:86263

  • 192.168.81.131 使用 info replication 命令

  • role:slave //角色为子节点
    master_host:192.168.81.129
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:152485
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_replid2:0000000000000000000000000000000000000000
    master_repl_offset:152485
    second_repl_offset:-1
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:47258
    repl_backlog_histlen:105228

3.在主机中加入一个值,会同步到从机中

等待几分钟即可

4.关闭主节点,会发现主节点会自动选举、

再次查询

  • 192.168.81.130 使用 info replication 命令

  • 发现130变为主机

    role:master//主节点
    connected_slaves:1
    slave0:ip=192.168.81.131,port=6379,state=online,offset=1755291,lag=0
    master_replid:153af2e4d7632095b16c1dc153d08f51c97dbdca
    master_replid2:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_repl_offset:1755291
    second_repl_offset:1751237
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:706716
    repl_backlog_histlen:1048576

  • 192.168.81.131 使用 info replication 命令

  • 131未变

  • role:slave
    master_host:192.168.81.130
    master_port:6379
    master_link_status:up
    master_last_io_seconds_ago:0
    master_sync_in_progress:0
    slave_repl_offset:1753847
    slave_priority:100
    slave_read_only:1
    connected_slaves:0
    master_replid:153af2e4d7632095b16c1dc153d08f51c97dbdca
    master_replid2:430220134be5b3ffb3951e089e1cb075b04a3aba
    master_repl_offset:1753847
    second_repl_offset:1751237
    repl_backlog_active:1
    repl_backlog_size:1048576
    repl_backlog_first_byte_offset:705272
    repl_backlog_histlen:1048576

6.结束

如有不同请仔细检查配置

posted @ 2021-07-14 14:17  danRiver  阅读(648)  评论(0编辑  收藏  举报