当前位置: 首页 > article >正文

Linux-Redis哨兵搭建

环境资源准备

主机名IP端口号角色
vm1192.168.64.156379/26379master
vm2192.168.64.166379/26379slave
vm3192.168.64.176379/26379slave

6379为redis服务暴露端口号、26379为sentinel暴露端口号。

安装Redis

 # 包文件下载 wget https://github.com/redis/redis/archive/7.2.2.tar.gz # 解压文件tar -zxvf redis-7.2.2.tar.gz# 进入包文件夹cd redis-7.2.2/# 安装依赖文件## Ubuntusudo apt install -y gcc g++ make## CentOSsudo yum -y install gcc g++ make## 创建安装文件夹、数据文件夹mkdir -p /usr/local/redis/data/# 再次检查当前目录是否为redis源码文件,如果是进行make操作make# make install安装到指定文件夹make install PREFIX=/usr/local/redis/

配置文件

文件路径

/etc/redis.conf

主节点(去除中文解释)

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 100appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456

从节点(去除中文解释)

注意将slaveof设置为置顶的主节点地址。

daemonize yeslogfile "/var/log/redis.log"bind 0.0.0.0port 6379protected-mode nopidfile /var/run/redis_6379.piddir /usr/local/redis/data  # 指定生成rdb文件的路径 相对路径受到启动redis的操作路径的影响slave-read-only yesslave-priority 90 # 主节点最高,其他依次递减,一个从节点90,一个从节点85appendonly yes  # 开启AOF模式appendfilename "appendonly.aof"appendfsync everysec  requirepass 123456slaveof 192.168.64.15 6379masterauth 123456

启动服务

/usr/local/redis/bin/redis-server /etc/redis.conf

查看启动状态

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:00 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7848    1171  0 14:48 pts/0    00:00:00 grep --color=auto redis

登录验证

/usr/local/redis/bin/redis-cli

图片

启动成功,从节点设置成功

此时,主从redis已经设置完毕,开始搭建哨兵。

哨兵配置文件

文件路径

/etc/sentinel.conf

配置内容

创建文件夹

mkdir -p /usr/local/redis/temp
protected-mode noport 26379dir /usr/local/redis/templogfile "/var/log/sentinel.log"daemonize yessentinel monitor mymaster 192.168.64.15 6379 2   # mymaster集群的名字,2个节点以上认为不可用,进行fall oversentinel down-after-milliseconds mymaster 10000 # 判断主节点宕机时间,主观下线sentinel failover-timeout mymaster 60000  # 两次fallover间隔sentinel auth-pass mymaster 123456sentinel parallel-syncs mymaster 1 # 这个配置项指定了在发生failover主备切换时最多可以有多少个slave同时对新的master进行 同步,这个数字越小,完成failover所需的时间就越长,但是如果这个数字越大,就意味着越 多的slave因为replication而不可用。可以通过将这个值设为 1 来保证每次只有一个slave 处于不能处理命令请求的状态。

sentinel monitor,后第一个字符串为集群名称,一般为mymaster即可,后面跟主节点IP和端口号。三个节点配置文件相同。配置时去除中文。

启动sentinel服务

/usr/local/redis/bin/redis-sentinel /etc/sentinel.conf

查看启动情况

root@vm1:/home/ubuntu/redis-7.2.2# ps -ef | grep redisroot        7827       1  0 14:48 ?        00:00:01 /usr/local/redis/bin/redis-server 0.0.0.0:6379root        7887       1  0 14:57 ?        00:00:00 /usr/local/redis/bin/redis-sentinel *:26379 [sentinel]root        7895    1171  0 14:58 pts/0    00:00:00 grep --color=auto redis

利用python检测哨兵节点切换

import time

from redis.sentinel import Sentinel

sentinel_list = [
    ("192.168.64.15", 26379),
    ("192.168.64.16", 26379),
    ("192.168.64.17", 26379),
]

mySentinel = Sentinel(sentinel_list, )
for i in range(1000):
    try:
        print(mySentinel.discover_master("mymaster"))
        time.sleep(1)
    except:
        pass

图片

此时节点进行了切换,从日志可以看出切换过程。

图片


http://www.kler.cn/a/464558.html

相关文章:

  • 如何轻松关闭 iPhone 上的 HEIC [HEIC 图像技巧]
  • 从零开始RTSP协议的实时流媒体拉流(pull)的设计与实现(一)
  • Windows平台下如何手动安装MYSQL
  • 【74HC192减法24/20/72进制】2022-5-17
  • 动态规划<八> 完全背包问题及其余背包问题
  • 【图像处理】OpenCv + Python 实现 Photoshop 中的色彩平衡功能
  • 34.键盘1 C#例子 WPF例子
  • strapi中使用Documentation插件
  • [XCTF/网络安全] Python之Django模块+curl 攻防世界 Cat 解题详析
  • 2011-2020年各省粗离婚率数据
  • 谷粒商城项目125-spring整合high-level-client
  • C++简明教程(14)动态库和静态库的内存共享机制
  • 在基于Centos7的服务器上启用【Gateway】的【Clion Nova】(即 ReSharper C++ 引擎)
  • 文件查找工具locate和find
  • 【ShuQiHere】 集成学习:提升模型性能的有效策略
  • [Qt] 常用控件 | QWidget | “表白程序2.0”
  • 按字段拆分多个工作表到独立的工作簿并增加合计-Excel易用宝
  • 2024年社区高光时刻总结!
  • 【git】git stash相关指令
  • Spring 中的 @ExceptionHandler 注解详解与应用
  • Docker- Unable to find image “hello-world“locally
  • 去除el-tabs 下面的灰色横线,并修改每一项的左右间距,和字体颜色
  • 无人机快速巡检、森林、电力、水利大大节省人力成本,降低风险事故
  • 【文献精读笔记】Explainability for Large Language Models: A Survey (大语言模型的可解释性综述)(五)
  • GJB软件需求规格说明模板及详解
  • C# 设计模式(创建型模式):单例模式