欢迎大家关注我的以下主页,尤其是今日头条!!!谢谢🙏🙏🙏
csdn:雷园的csdn博客
个人博客:雷园的个人博客
简书:雷园的简书
今日头条:来自底层程序员的仰望
单机版Redis宕机导致数据丢失?来试试一主两从三哨兵吧,内附自动化部署脚本
开头说几句
- 近来疫情仍然是不可小觑,所以希望各位小伙伴仍然相应号召,在家办公自我隔离。
- 希望各位小伙伴在这样的情况下平平安安,一切都会好起来的。
- 今天我们来说一说Redis的其中一种部署方式——哨兵模式。
- 下面呢我们会讲解如何手动配置哨兵模式,同样的我会附上自己开发的自动化部署脚本,希望对大家有所裨益。
为什么我们选择Redis的哨兵模式?
- 在Redis的部署方式中,我们比较常用的有三种:单机(主从)、集群、哨兵。
- 根据场景的不同,我们会选择不同的部署方式,主从哨兵更能保证数据安全不丢失。
- 有小伙伴可能会问了,我们直接主从配置就可以了呀,为什么还要费劲加入哨兵节点呢?
- Redis 的主从复制模式,一旦主节点出现故障无法提供服务,需要人工介入手工将从节点调整为主节点,同时应用端还需要修改新的主节点地址。
- 也就是说,如果不加入哨兵节点,那我们就要充当“哨兵”了,而且还不是很尽职尽责哨兵。
Redis的哨兵节点到底有哪些功能呢?
- 定期检测主从数据节点以及其他哨兵节点是否可用。
- 将上一步中检测出来的结果通知到应用方,方便应用实现切换。
- 主从节点的故障转移,即若主节点不可用,则晋升其一从节点为主节点供应用使用。
正式开始
准备工作
- 我们这里以一台系统为Centos 7的云服务器为例,小伙伴们可自行选择。
- 下载好redis-5.0.5.tar.gz,大家自行到官方下载安装即可,安装过程我就不做详细的介绍啦。
- 因为我们做测试用嘛,就不开那么多服务器来做,我们在一台服务器上多个端口启动redis实例。
Redis各节点简单配置保证可用
-
我们规定一下端口:6379(主),6380、6381(从),26379、26380、26381(哨兵)
-
根据不同端口我们创建以下目录并复制配置文件:
$ mkdir -p /etc/redis/{6379,6380,6381,26379,26380,26381} # 批量复制redis配置 $ echo /etc/redis/6* | xargs -n 1 cp -v /redis安装路径/redis.conf # 批量复制哨兵配置 $ echo /etc/redis/26* | xargs -n 1 cp -v /redis安装路径/sentinel.conf
-
修改主节点配置
vim /etc/redis/6379/redis.conf
:# 后台运行 daemonize yes # 运行端口 port 6379 # 主节点密码 masterauth 123456 # 当前节点密码 requirepass 123456 protected-mode yes # 绑定IP 0.0.0.0代表所有IP可访问 bind 0.0.0.0
-
两个从节点的配置与主节点配置基本相同
vim /etc/redis/6380/redis.conf
:daemonize yes # 从节点IP ## port 6381 port 6380 masterauth 123456 requirepass 123456 protected-mode yes bind 0.0.0.0 # 属于那个主节点 slaveof 127.0.0.1 6379
-
修改哨兵节点配置
vim /etc/redis/26379/sentinel.conf
# 后台运行 daemonize yes # 哨兵节点端口26379、26380、26381 port 26379 # 主节点信息 sentinel monitor mymaster 127.0.0.1 6379 2 # 主节点密码 sentinel auth-pass mymaster 123456 sentinel down-after-milliseconds mymaster 15000 sentinel parallel-syncs mymaster 1 sentinel failover-timeout mymaster 80000 bind 0.0.0.0 protected-mode yes
-
接下来就按照:主——从——哨兵启动各节点即可
$ redis-server /etc/redis/6379/redis.conf $ redis-server /etc/redis/6380/redis.conf $ redis-server /etc/redis/6381/redis.conf $ redis-sentinel /etc/redis/26379/sentinel.conf $ redis-sentinel /etc/redis/26380/sentinel.conf $ redis-sentinel /etc/redis/26381/sentinel.conf
-
关于应用方面我们该篇不做详细的介绍,大家如果在应用方面有什么问题都可以问我,我尽我所能帮大家解答。
关于Redis自动化部署脚本
- 为了方便我自己的应用,我同时开发了自动化部署Redis的简单脚本。
- 在脚本中,我仅支持了Redis的单机部署以及主从哨兵模式。
- 为了节省服务器成本,主从哨兵部署方式为每台服务器运行一个redis节点以及一个哨兵节点。
- 对于集群方式我这边很少用到,所以没有对集群做支持,后续考虑加入。
- 更多信息以及源码需要大家查看更多啦,欢迎大家帮忙点点star🌟🌟🌟🌟。
- 以后相关源代码我都会在这里进行发布,欢迎大家多多关注!!!。
简单说一下脚本的应用
-
大家拉取代码后进入目录Centos_RedisAutoInstall中,修改配置文件config
# 本机内网IP IP=10.0.4.16 ## 1:HOST 2:CLUSTER 3:SENTINEL ## 2暂不支持 REDIS_TYPE=1 REDIS_PORT=6379 REDIS_SENTINEL_PORT=26379 # 主节点IP REDIS_MASTER=10.0.4.16 REDIS_PASS=Hanshow123!@#
-
配置完成后运行同目录中的redis.sh即可进行Redis的自动安装以及配置,对于配置文件大家如果有什么不理解的地方都可以提出来。
最后说几句
- 后面我会把自己开发的常用的脚本都分享出来,希望大家可以多多关注star哦。
- 同样的如果大家有任何问题,可以随时提出来,我会竭尽全力帮大家解决哦。
- 最后依然希望大家相应国家号召进行自我隔离,保障自己的生命安全。
- 谢谢大家,下次见。