内容简介:环境:主服务器:192.168.10.10 Centos 7 redis-5.0.4从服务器:192.168.10.129 Centos 7 redis-5.0.4
环境:
主服务器:192.168.10.10 Centos 7 redis-5.0.4
从服务器:192.168.10.129 Centos 7 redis-5.0.4
从服务器:192.168.10.130 Centos 7 redis-5.0.4
关于如何安装 redis 不再本文讨论范围内,不过您可以参考 https://www.cnblogs.com/caesar-id/p/10846541.html
1、自定义192.168.10.10主服务器配置文件
[root@localhost ~]# vim /etc/myredis.conf bind 192.168.10.10 // 绑定本机IP地址 port 9000 // redis端口号 daemonize yes // 设置后台启动 pidfile /var/log/redis/myredis.pid // 指定redis进程文件位置,为了方便我就放在了日志文件中,大家自行定义。 loglevel notice // 设置日志等级 logfile /var/log/redis/myredis.log // 设置日志文件 dbfilename dump.rdb dir /opt/redis-5.0.4/data/myredis // redis数据库文件路径 protected-mode no // 为了方便这里关闭了安全模式,实际中应开启次选项
注意这里的路径必须存在,redis没有智能到帮你把路径都创建好的,所以你需要自己创建上面所需要的文件路径。
2、创建配置文件中对应的目录
[root@localhost ~]# mkdir -p /var/log/redis // redis的日志文件存放路径 [root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis // 创建redis的数据库存储目录
到此主服务器的配置已经算是初步完成。下面配置从服务器
3、自定义从服务器192.168.10.129配置文件
[root@localhost ~]# vim /etc/myredis.conf bind 192.168.10.129 // 绑定本机IP地址 port 9001 // 为了和主服务器区分这里使用9001 daemonize yes // 设置后台启动 pidfile /var/log/redis/myredis.pid // 指定redis进程文件位置,为了方便我就放在了日志文件中,大家自行定义。 loglevel notice // 设置日志等级 logfile /var/log/redis/myredis.log // 设置日志文件 dbfilename dump.rdb dir /opt/redis-5.0.4/data/myredis // redis数据库文件路径 protected-mode no // 为了方便这里关闭了安全模式,实际中应开启次选项 slaveof 192.168.10.10 9000 // 主服务器的IP和端口
4、同样创建配置文件中对应的路径
[root@localhost ~]# mkdir -p /var/log/redis // redis的日志文件存放路径 [root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis // 创建redis的数据库存储目录
此时从服务器192.168.10.129配置初步完成,下面配置从服务器192.168.10.30。
5、 自定义从服务器192.168.10.129配置文件
[root@localhost ~]# vim /etc/myredis.conf bind 192.168.10.130 // 绑定本机IP地址 port 9002 // 为了区分这里使用9002 daemonize yes // 设置后台启动 pidfile /var/log/redis/myredis.pid // 指定redis进程文件位置,为了方便我就放在了日志文件中,大家自行定义。 loglevel notice // 设置日志等级 logfile /var/log/redis/myredis.log // 设置日志文件 dbfilename dump.rdb dir /opt/redis-5.0.4/data/myredis // redis数据库文件路径 protected-mode no // 为了方便这里关闭了安全模式,实际中应开启次选项 slaveof 192.168.10.10 9000 // 主服务器的IP和端口
6、创建配置文件中对应的路径
[root@localhost ~]# mkdir -p /var/log/redis // redis的日志文件存放路径 [root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis // 创建redis的数据库存储目录
好了主从关系到此算是配置完成,下面我们进行验证配置是否正确。
7、验证主从配置
7.1开启192.168.10.10主服务器的redis
[root@localhost ~]# redis-server /etc/myredis.conf [root@localhost ~]# ps -ef | grep redis
如果你看到上图说明我们的主服务器192.168.10.10中的redis已经运行起来了。
7.2开启192.168.10.129从服务器的redis
[root@localhost ~]# redis-server /etc/myredis.conf [root@localhost ~]# ps -ef | grep redis
非常幸运的跑起来了。
7.3开启192.168.10.130从服务器的redis
[root@localhost ~]# redis-server /etc/myredis.conf [root@localhost ~]# ps -ef | grep redis
一切都很顺利。
7.4登陆192.168.10.10主服务器查看主从关系
[root@localhost ~]# redis-cli -p 9000 -h 192.168.10.10
希望你也能看到和上面一样的信息。
7.5登陆192.168.10.129从服务器查看主从关系
[root@localhost ~]# redis-cli -p 9001 -h 192.168.10.129
7.6登陆192.168.10.130从服务器查看主从关系
[root@localhost ~]# redis-cli -p 9001 -h 192.168.10.129
7.7在主服务器添加一个键查看是否会同步到从服务器
上面虽然是实现了主从复制的功能,但是如果我们的主服务器突然挂了呢?我们知道从服务器是只读的,没有写入的权限。我们来看下杀掉主进程会变成什么样子。
8、删掉主服务器192.168.10.10的redis
9、查看从服务器状态
上面的结果我确信并不是我们想要的,我们想要的是主服务器在突发情况下down后,有一台从服务器能够代替主服务器继续工作。
这里有两种解决方案:
- 我们手动指定一台从服务器为主服务器。
- 通过哨兵实现自动在从服务器中选举出一个主服务器。
1、手动指定192.168.10.129为主服务器(关闭服务器的从服务器的角色)
[root@localhost ~]# redis-cli -p 9001 -h 192.168.10.129 192.168.10.129:9001> slaveof no one // 关闭从服务器角色
1.1、在192.168.10.130从服务器中指定主服务器是192.168.10.129
[root@localhost ~]# redis-cli -p 9002 -h 192.168.10.130 192.168.10.130:9002> slaveof no one // 关闭从服务器角色 192.168.10.130:9002> slaveof 192.168.10.129 9001 // 指定主服务器是192.168.10.129
1.2、最终查看配置如下
也许你会认为这种方式很low并且不智能,我也认为你说的是对的。
2、通过哨兵选举,在从服务器中选择一个从服务器作为主服务器。
2.1先停止所有主、从服务器的redis
[root@localhost ~]# pkill -9 redis
·2.2在主服务器192.168.10.10中添加哨兵的配置文件
[root@localhost ~]# vim /etc/myredis-sentinel.conf bind 192.168.10.10 // 绑定本机地址 port 9500 // 哨兵端口 dir "/opt/redis-5.0.4/data/myredis-sentinel" // 哨兵工作目录 logfile "/var/log/redis/mysentinel.log" // 哨兵日志文件位置 daemonize yes // 开启守护进程 protected-mode no // 关闭安全模式 sentinel monitor myredis 192.168.10.10 9000 2 // myredis是主节点的别名,后面是主节点的IP地址及主节点redis的端口号,数字2表示判断主节点是否down需要最少2个哨兵进行确认 sentinel down-after-milliseconds myredis 30000 // 每个哨兵会定期发送ping确认主节点是否可以连接,如果在3000毫秒没有回复,就认为主节点不可达。 sentinel parallel-syncs myredis 1 // 当多个哨兵都认为主节点不可达时,主节点哨兵会做故障转移。并选出一个新的主节点。这个数字越小故障转移就越慢,但如果越大会导致多个从节点同时向新主机节点复制数据,导致数据不可用。 sentinel failover-timeout myredis 180000 // 故障转移超时时间。
2.3创建哨兵的工作目录
[root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis-sentinel
2.4添加从服务器192.168.10.129的哨兵配置文件
[root@localhost ~]# vim /etc/myredis-sentinel.con bind 192.168.10.129 // 绑定本机地址 port 9501 // 哨兵的端口号 dir "/opt/redis-5.0.4/data/myredis-sentinel" // 哨兵工作目录 logfile "/var/log/redis/mysentinel.log" // 哨兵日志目录 daemonize yes // 开启守护进程 protected-mode no // 关闭安全模式 sentinel monitor myredis 192.168.10.10 9000 2 // myredis是主节点的别名,后面是主节点的IP地址及主节点redis的端口号,数字2表示判断主节点是否down需要最少2个哨兵进行确认 sentinel down-after-milliseconds myredis 30000 // 每个哨兵会定期发送ping确认主节点是否可以连接,如果在3000毫秒没有回复,就认为主节点不可达。 sentinel parallel-syncs myredis 1 // 当多个哨兵都认为主节点不可达时,主节点哨兵会做故障转移。并选出一个新的主节点。这个数字越小故障转移就越慢,但如果越大会导致多个从节点同时向新主机节点复制数据,导致数据不可用。 sentinel failover-timeout myredis 180000 // 故障转移超时时间。
2.5创建哨兵的工作目录
[root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis-sentinel
2.6添加从服务器192.168.10.130的哨兵配置文件
[root@localhost ~]# vim /etc/myredis-sentinel.conf bind 192.168.10.130 // 绑定本机地址 port 9502 // 哨兵端口号 dir "/opt/redis-5.0.4/data/myredis-sentinel" // 哨兵工作目录 logfile "/var/log/redis/mysentinel.log" // 哨兵日志目录 daemonize yes // 开启守护进程 protected-mode no // 关闭安全模式 sentinel monitor myredis 192.168.10.10 9000 2 // myredis是主节点的别名,后面是主节点的IP地址及主节点redis的端口号,数字2表示判断主节点是否down需要最少2个哨兵进行确认 sentinel down-after-milliseconds myredis 30000 // 每个哨兵会定期发送ping确认主节点是否可以连接,如果在3000毫秒没有回复,就认为主节点不可达。 sentinel parallel-syncs myredis 1 // 当多个哨兵都认为主节点不可达时,主节点哨兵会做故障转移。并选出一个新的主节点。这个数字越小故障转移就越慢,但如果越大会导致多个从节点同时向新主机节点复制数据,导致数据不可用。 sentinel failover-timeout myredis 180000 // 故障转移超时时间。
2.7创建哨兵的工作目录
[root@localhost ~]# mkdir -p /opt/redis-5.0.4/data/myredis-sentinel
2.8开启主/从服务器的redis服务
[root@localhost ~]# redis-server /etc/myredis.conf
2.9查看主从关系
由上图可知,redis的主从关系正常。
2.10.1开启主/从哨兵服务
[root@localhost ~]# redis-sentinel /etc/myredis-sentinel.conf
2.10.2查看哨兵当前状态
[root@localhost ~]# redis-cli -p 9500 -h 192.168.10.10 info sentinel // 查看主服务器的哨兵(在主服务器192.168.10.10) [root@localhost ~]# redis-cli -p 9501 -h 192.168.10.129 info sentinel // 查看从服务器的哨兵(在从服务器192.168.10.129) [root@localhost ~]# redis-cli -p 9502 -h 192.168.10.130 info sentinel // 查看从服务器的哨兵(在从服务器192.168.10.130)
2.10.3杀掉主服务器192.168.10.10的redis服务,查看哨兵是否会在从服务器中选举出一台主服务器。
[root@localhost ~]# ps -ef | grep redis // 查看redis的进程号 [root@localhost ~]# kill -9 6483 // 根据redis的进程id杀掉它
杀掉主服务器后查看两个从服务器的状态
发现两台从服务器都已经检测到主服务器192.168.10.10的redis已经无法连接,我们稍等片刻,在来看看我们的哨兵是否尽职尽责,为我们自动选举出一台主服务器。
好了哨兵值守就演示到这里吧。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- EnterpriseDB: 无人值守安装
- centos 7.4部署PXE+kickstart无人值守安装CentOS 7.2
- 酸爽!我用这套无人值守安装系统瞬间搞定上百台服务器
- 数据库主从复制
- MySQL 主从配置
- Redis 主从复制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Uberland
Alex Rosenblat / University of California Press / 2018-11-19 / GBP 21.00
Silicon Valley technology is transforming the way we work, and Uber is leading the charge. An American startup that promised to deliver entrepreneurship for the masses through its technology, Uber ins......一起来看看 《Uberland》 这本书的介绍吧!