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