内容简介:环境:主服务器: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 主从复制
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Ruby on Rails社区网站开发
布拉德伯纳 / 柳靖 / 2008-10 / 55.00元
《Ruby on Rails社区网站开发》全面探讨创建完整社区网站的开发过程。首先介绍开发一个内容简单的管理系统,之后逐渐添加新特性,以创建更完整的、使用Ruby on Rails 的Web 2.0 社区网站。还给出了开发和测试中的一些建议和提示,同时指导如何使网站更生动以及维护得更好。《Ruby on Rails社区网站开发》也探讨了如何与Flickr 、Google Maps 等其他平台集成,......一起来看看 《Ruby on Rails社区网站开发》 这本书的介绍吧!