网站产品类别顺序如果修改,软件开发管理平台,情侣手表网站,工作站做网站Redis一主二从三哨兵模式
hostnamectl set-hostname //修改主机名将提供的Redis安装文件下载redis-3.2.12.tar.gz到三台虚拟机中#xff0c;解压到/opt目录中#xff0c;并配置yum源使用本地目录#xff0c;命令如下#xff08;三台虚拟机操作一致#xff0c;以redis1主…Redis一主二从三哨兵模式
hostnamectl set-hostname //修改主机名将提供的Redis安装文件下载redis-3.2.12.tar.gz到三台虚拟机中解压到/opt目录中并配置yum源使用本地目录命令如下三台虚拟机操作一致以redis1主机为例
[rootredis1 ~]# curl -O #下载地址
[rootredis1 ~]# tar -xf redis-3.2.12.tar.gz -C /opt/
[rootredis1 ~]# mv /etc/yum.repos.d/* /media/
[rootredis1 ~]# cat EOF /etc/yum.repos.d/redis.repo
[redis]
nameredis
baseurlfile:///opt/redis
gpgcheck0
enabled1
EOF
[rootredis1 ~]# yum clean all yum repolist在三个节点使用yum命令安装Redis服务并启动。 命令如下三台虚拟机操作一致以redis1主机为例
[rootredis1 ~]# yum install -y redis
… …
Complete!
[rootredis1 ~]# systemctl start redis
[rootredis1 ~]# systemctl enable redis按照主从Redis配置将redis2节点和redis3节点作为redis1节点的从节点。 配置完成后的一主二从Redis集群将作为哨兵模式的基础。 命令如下
redis1节点
修改redis1节点的配置文件/etc/redis.conf如下
[rootredis1 ~]# vi /etc/redis.conf
#第一处修改
# bind 127.0.0.1 //找到bind 127.0.0.1这行并注释掉
#第二处修改
protected-mode no //将yes修改为no外部网络可以访问
#第三处修改
daemonize yes //将no修改为yes开启守护进程
#第四处修改
requirepass 123456 //添加设置访问密码
#第五处修改设定主库密码与当前库密码同步保证从库能够提升为主库
masterauth 123456
#第六处修改将no修改为yes打开AOF持久化支持
appendonly yes至此redis1主节点配置完毕重启服务命令如下
[rootredis1 ~]# systemctl restart redisedis2节点
修改redis2节点的配置文件/etc/redis.conf如下
[rootredis2 ~]# vi /etc/redis.conf
#第一处修改
# bind 127.0.0.1 //找到bind 127.0.0.1这行并注释掉
#第二处修改
protected-mode no //将yes修改为no外部网络可以访问
#第三处修改
daemonize yes //将no修改为yes开启守护进程
#第四处修改
# requirepass foobared //找到该行
requirepass 123456 //在下方添加设置访问密码
#第五处修改
# slaveof masterip masterport //找到该行
slaveof 192.168.200.21 6379 //在下方添加访问的主节点IP与端口
#第六处修改
# masterauth master-password //找到该行
masterauth 123456 //在下方添加访问主节点密码
#第七处修改将no修改为yes打开AOF持久化支持
appendonly yes至此redis2主节点配置完毕重启服务命令如下
[rootredis2 ~]# systemctl restart redisredis2主节点和redis2主节点配置相同
scp /etc/redis.conf rootip:/etc/验证
redis1主节点
[rootredis1 ~]# redis-cli -h 192.168.200.21 -p 6379 -a 123456 info replication
# Replication
role:master
connected_slaves:2
slave0:ip192.168.200.22,port6379,stateonline,offset9383,lag0
slave1:ip192.168.200.23,port6379,stateonline,offset9238,lag1
master_repl_offset:9383
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:9382redis2从节点
[rootredis2 ~]# redis-cli -h 192.168.200.22 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:2648
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0redis3从节点
[rootredis3 ~]# redis-cli -h 192.168.200.23 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.21
master_port:6379
master_link_status:up
master_last_io_seconds_ago:0
master_sync_in_progress:0
slave_repl_offset:8658
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:02Redis哨兵模式配置
redis1节点
修改redis1节点的/etc/redis-sentinel.conf配置文件具体内容如下
[rootredis1 ~]# vi /etc/redis-sentinel.conf
# 1. 保护模式修改为否允许远程连接
protected-mode no
# 2. 修改监控地址为主redis库的主机ip地址
sentinel monitor mymaster 192.168.200.21 6379 2
# 3. 添加配置5秒内没有响应就反馈服务器挂了
sentinel down-after-milliseconds mymaster 5000
# 4. 修改配置15秒内master没有活起来就重新选举主
sentinel failover-timeout mymaster 15000
# 5. 表示如果master重新选出来后其它slave节点能同时并行从新master同步缓存的台数有多少个显然该值越大所有slave节点完成同步切换的整体速度越快但如果此时正好有人在访问这些slave可能造成读取失败影响面会更广。最安全的设置为1只同一时间只能有一台干这件事这样其它slave还能继续服务但是所有slave全部完成缓存更新同步的进程将变慢。这里设置为2。
sentinel parallel-syncs mymaster 2
# 6. 添加配置主数据库密码为123456
sentinel auth-pass mymaster 123456修改redis2从节点和redis3从节点的/etc/redis-sentinel.conf配置文件修改内容与redis1主节点的/etc/redis-sentinel.conf配置文件一致。
修改完配置文件后哨兵模式配置就完毕了接下来需要重启服务。 因为Redis服务已经启动现在只需要启动Redis哨兵服务。 命令如下所示
所有节点启动哨兵
# systemctl restart redis-sentinel
# systemctl enable redis-sentinel3哨兵模式信息查看
在redis1节点查看哨兵模式信息命令如下
[rootredis1 ~]# redis-cli -h 192.168.200.21 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:namemymaster,statusok,address192.168.200.21:6379,slaves2,sentinels3在redis2节点查看哨兵模式信息命令如下
[rootredis2 ~]# redis-cli -h 192.168.200.22 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:namemymaster,statusok,address192.168.200.21:6379,slaves2,sentinels3在redis3节点查看哨兵模式信息命令如下
[rootredis3 ~]# redis-cli -h 192.168.200.23 -p 26379 INFO Sentinel
# Sentinel
sentinel_masters:1
sentinel_tilt:0
sentinel_running_scripts:0
sentinel_scripts_queue_length:0
sentinel_simulate_failure_flags:0
master0:namemymaster,statusok,address192.168.200.21:6379,slaves2,sentinels3可以看到目前集群中有一个Redis主节点两个Redis从节点三个哨兵节点。
4哨兵模式验证
哨兵作为对Redis实例的监控通过选举算法保证哨兵的鲁棒性和高可用所以哨兵至少要部署3台符合半数原则需要5或者7超过一半不包含一半存活的时候才能够选举出leader才能进行主从的切换功能。
哨兵高可用测试分别连接对应的Redis服务端手动停止主Reids服务看主从是否切换成功。
redis1节点手动停止服务然后查看主节点是否切换命令如下
[rootredis1 ~]# systemctl stop redis切换到redis2节点查看Redis集群的主从信息访问reids2节点的Redis服务命令如下redis主节点随机切换到从节点
[rootredis2 ~]# redis-cli -h 192.168.200.22 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.23
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:6591
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0可以看到redis2节点的master_host变成了192.168.200.23也就是说redis3节点变成了主节点。
然后切换到redis3节点查看Redis集群的主从信息访问reids3节点的Redis服务命令如下
[rootredis3 ~]# redis-cli -h 192.168.200.23 -p 6379 -a 123456 info replication
# Replication
role:master
connected_slaves:1
slave0:ip192.168.200.22,port6379,stateonline,offset7461,lag0
master_repl_offset:7461
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:2
repl_backlog_histlen:7460redis3节点成功切换成了主节点。 可以看到当主节点发生了宕机其他的从节点可以自动切换成主节点。
切换到redis1节点启动恢复Redis服务查看redis集群的主从信息访问reids1节点的Redis服务命令如下
[rootredis1 ~]# systemctl restart redis
[rootredis1 ~]# systemctl restart redis-sentinel
[rootredis1 ~]# redis-cli -h 192.168.200.21 -p 6379 -a 123456 info replication
# Replication
role:slave
master_host:192.168.200.23
master_port:6379
master_link_status:up
master_last_io_seconds_ago:1
master_sync_in_progress:0
slave_repl_offset:103524
slave_priority:100
slave_read_only:1
connected_slaves:0
master_repl_offset:0
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0可以看见redis1节点变成了从节点。 Redis哨兵模式的验证成功。