《Linux运维实战:Centos7.6基于ansible一键离线部署redis6.2.8容器版之哨兵集群》

news2024/11/19 0:51:40

一、部署背景

由于业务系统的特殊性,我们需要针对不同的客户环境部署redis 哨兵集群,由于大都数用户都是专网环境,无法使用外网,为了更便捷,高效的部署,针对业务系统的特性,我这边编写了基于ansible自动化工具, 一键远程离线部署redis容器版 哨兵集群,当然也会编写二进制版本,敬请期待吧!

说明:如果有兴趣,可以从工具下载中获取下载链接,此工具可帮助你快速了解一个自动化部署工具是如何编写的?


二、功能简介

1、支持 1台主机 一键远程部署redis 哨兵伪集群(一主二从三哨兵)。
2、支持 2台主机 一键远程部署redis 哨兵 分布式集群(一主二从三哨兵)。
3、支持 3台主机 一键远程部署redis 哨兵 分布式集群(一主二从三哨兵)。
4、支持 4台主机 一键远程部署redis 哨兵 分布式集群(一主二从三哨兵)。
5、支持 5台主机 一键远程部署redis 哨兵 分布式集群(一主二从三哨兵)。
6、支持 6台主机 一键远程部署redis 哨兵 分布式集群(一主二从三哨兵)。
7、支持一键部署所有节点或单个redis实例部署、启动、停止、重启、检查、移除等功能。
8、 支持数据目录、日志目录、端口、集群密码等参数的灵活配置
9、 支持数据目录、日志目录、配置文件等持久化

说明:由于redis 哨兵集群是一主二从三哨兵模式,所以最多6台服务器即可。


三、工具下载

基于ansible一键离线部署redis6.2.8容器版哨兵集群工具


四、工具说明

目录结构如下:
在这里插入图片描述

目录说明如下:

#1、ansible目录:存放ansible工具rpm包目录,可一键安装ansible
#2、cluster目录:存放hosts文件和config.yml文件目录,主要配置服务器信息及redis cluster集群配置信息
#3、example目录:存放hosts文件和config.yml模板文件
#4、images目录:存放redis 哨兵集群镜像文件
#5、op.sh:redis 哨兵集群部署的主控脚本
#6、pkgs:存放sshpass和nc命令的rpm包文件
#7、playbooks:redis 哨兵集群部署的剧本文件
#8、roles目录:redis 哨兵集群部署的角色文件

op.sh主控脚本参数如下:
在这里插入图片描述
说明:根据部署redis 哨兵集群的主机数量,选择不同的部署模式,例如,主机数量为6台,则选择node6。

其中代码行数:3381行,使用shell语言+jinja2语言。
在这里插入图片描述


五、部署要求

1、建议提前关闭好防火墙和selinux。
2、redis cluste集群是基于docker和docker-compose工具, 所以redis 哨兵集群主机上提前安装好docker和docker-compose工具。


六、部署步骤

说明:根据主机数量,请选择一台主机作为主控端,其它主机作为受控端,如果服务器数量为1台,则即可为主控端,又可为受控端。主控端需提前安装好ansible工具。这里为了避免麻烦,特意写了一个离线的ansible部署脚本,可实现一键部署ansible。脚本已经集成到该工具中,开箱即用,非常方便!
在这里插入图片描述
由于文章篇幅有限,这里就只介绍,在单台主机模式下,如果使用ansible工具实现redis 哨兵集群的一键容器化部署?


1、生成单台主机的hosts文件和config.yml文件

[root@localhost redis-sentinel]# ./op.sh new node1
2023-01-12 10:08:30 DEBUG generate custom cluster files in /opt/pkgs/redis-sentinel/cluster/node1
2023-01-12 10:08:30 DEBUG cluster node1: files successfully created.
2023-01-12 10:08:30 INFO next steps 1: to config '/opt/pkgs/redis-sentinel/cluster/node1/hosts'
2023-01-12 10:08:30 INFO next steps 2: to config '/opt/pkgs/redis-sentinel/cluster/node1/config.yml'

2、编辑hosts文件
注意:base_dir变量无需修改,这个变量是自动生成的,只需修改服务器ip地址、ssh端口、账号密码等信息即可。

# 服务名称:redis sentinel集群
# 服务器支持: <最多支持6台服务器>
# 网络环境要求:<适用于企业或单位内网环境\互联网环境>
# 说明:根据实际服务器数量进行部署规划,如不清楚,建议咨询公司运维工程师
# 部署类型:单台主机部署redis sentinel集群
[all]
192.168.1.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_python_interpreter=/usr/bin/python2.7
# 为主机组指定变量,作用范围为整个主机组
[all:vars]

# Deploy Directory (redis sentinel集群一键部署工具包workspace),不修改
base_dir="/opt/pkgs/redis-sentinel"

3、编辑config.yml

注意:端口不冲突情况下,建议不要修改端口,一般情况下,只需修改MAX_SPACE_DIR和REDIS_HOST这两个变量。

# 使用1台服务器部署redis sentinel集群
# 宿主机最大磁盘空间分区下目录,比如说"/"分区下空间最大,就在"/"分区下创建一个data目录
MAX_SPACE_DIR: "/data"

# role:redis
# redis工作目录,主要用来存放离线镜像及其它部署相关文件,默认不修改
REDIS_WORK_DIR: "{{ MAX_SPACE_DIR }}/pkgs/redis-sentinel"

# redis数据存放根目录,建议选择当前磁盘分区最大空间下目录,默认不修改
REDIS_DATA_DIR: "{{ MAX_SPACE_DIR }}/basic-data/redis-sentinel"

# 宿主机内网ip地址,根据实际情况填写
REDIS_HOST: "192.168.1.191"

# redis master实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_MASTER_HOST: "{{ REDIS_HOST }}"
REDIS_MASTER_PORT: "7001"

# redis slave1实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_SLAVE1_HOST: "{{ REDIS_HOST }}"
REDIS_SLAVE1_PORT: "7002"

# redis slave2实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_SLAVE2_HOST: "{{ REDIS_HOST }}"
REDIS_SLAVE2_PORT: "7003"

# redis-sentinel-1实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_SENTINEL1_HOST: "{{ REDIS_HOST }}"
REDIS_SENTINEL1_PORT: "7004"

# redis-sentinel-2实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_SENTINEL2_HOST: "{{ REDIS_HOST }}"
REDIS_SENTINEL2_PORT: "7005"

# redis-sentinel-3实例所在主机内网ip地址及映射宿主机端口,默认不修改
REDIS_SENTINEL3_HOST: "{{ REDIS_HOST }}"
REDIS_SENTINEL3_PORT: "7006"

# redis sentinel集群密码,根据实际情况修改
REDIS_PASSWORD: "AhspHJ2l0ychcves"

4、执行部署操作

说明:如果不清楚部署操作命令,可使用其帮助命令,如下所示
在这里插入图片描述

一键部署服务

#方式一:一键部署所有节点
[root@localhost redis-sentinel]# ./op.sh setup node1 all

#方式二:单个节点依次部署
[root@localhost redis-sentinel]# ./op.sh setup node1 01 
[root@localhost redis-sentinel]# ./op.sh setup node1 02 
[root@localhost redis-sentinel]# ./op.sh setup node1 03 
[root@localhost redis-sentinel]# ./op.sh setup node1 04 
[root@localhost redis-sentinel]# ./op.sh setup node1 05 
[root@localhost redis-sentinel]# ./op.sh setup node1 06 

一键部署结果,由于信息太长,这里只截取部分,如下图所示:
在这里插入图片描述

从如下截图中,可以看出master节点为192.168.1.191:7001,如下图所示:
在这里插入图片描述

关闭redis-master节点,等待一分钟,,从如下截图中,可以看出master切换为192.168.1.191:7002
在这里插入图片描述

说明:通过如上操作,主从切换验证成功!


总结:使用ansible自动化工具一键部署redis 哨兵集群,效率确实非常高,全程部署2分钟就完全搞定了,对于一些需要多次部署的场景,自动化确实很重要,可以极大的提高整个部署效率,我觉得对于运维来说,一定要有高度的自动化意识,当然这只是单个服务模块的自动化部署,如果是把整个业务系统,编写成一键自动化部署工具的化,这可能是一个非常的工程,当然,后期有机会我也会进行分享整个业务系统的一键部署是如果设计及编写的。


总结:整理不易,如果对你有帮助,可否点赞关注一下?

更多详细内容请参考:《Linux运维篇:Linux系统运维指南》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/157316.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

唤醒手腕 Go 语言开发学习笔记(基本简介、环境安装)

1. Go语言简介 Go&#xff08;又称 Golang&#xff09;是 Google 的 Robert Griesemer&#xff0c;Rob Pike 及 Ken Thompson 开发的一种静态强类型、编译型语言。Go 语言语法与 C 相近&#xff0c;但功能上有&#xff1a;内存安全&#xff0c;GC&#xff08;垃圾回收&#xf…

Java中String类的常见问题

目录 Q1&#xff1a;为什么String类要定义成不可变类型&#xff1f; 方便String对象缓存HashCode值 字符串常量池的需要 衍生问题&#xff1a;String str new String("hello world") 创建了几个对象&#xff1f; 为了保障程序的安全性 Q2&#xff1a;String的…

2022年深度学习在时间序列预测和分类中的研究进展综述

时间序列预测的transformers的衰落和时间序列嵌入方法的兴起&#xff0c;还有异常检测、分类也取得了进步 2022年整个领域在几个不同的方面取得了进展&#xff0c;本文将尝试介绍一些在过去一年左右的时间里出现的更有前景和关键的论文&#xff0c;以及Flow Forecast [FF]预测…

解决Windows莫名其妙地从休眠状态唤醒的问题

因为经常写代码开很多个工作区&#xff0c;电脑经常就是合盖休眠&#xff0c;这样打开就能用&#xff0c;但是总是在我不经意的时候发现电脑风扇在狂转&#xff0c;不知道是哪个应用又在qj我的电源管理计划&#xff0c;今天午休发现电脑风扇狂转&#xff0c;打开发现是windows系…

c语言操作符(下)

前言 &#x1f388;个人主页:&#x1f388; :✨✨✨初阶牛✨✨✨ &#x1f43b;推荐专栏: &#x1f354;&#x1f35f;&#x1f32f; c语言初阶 &#x1f511;个人信条: &#x1f335;知行合一 &#x1f349;本篇简介:>: 讲解c语言中有关操作符的知识. 金句分享: ✨✨✨行程…

我用python写了个小病毒,老板再也不敢扣我工资啦

名字&#xff1a;阿玥的小东东 学习&#xff1a;python正在学习c 主页&#xff1a;阿玥的小东东 今天做个什么呢&#xff0c;我的好朋友提议做一个关机的代码吧&#xff0c;我这一想&#xff0c;对吼&#xff0c;我以前还做过一个关机代码呢&#xff0c;于是乎&#xff0c;今天…

时序收敛技巧之寄存器复制

1、何时需要复制寄存器&#xff1f; 在设计中的关键路径发现某个寄存器具有高扇出和高延迟时&#xff0c;使用寄存器复制是个不错的实现时序收敛的方法。下图是一个典型的例子&#xff1a; 可以看出&#xff0c;第一个寄存器的 IC(InterConnect) 延迟为 1.476ns&#xff0c;该寄…

seo站内优化的方法有哪些(站内优化和站外优化)

站内部优化什么意思 网站优化公司的内部优化意味着什么&#xff1f;网站内部优化&#xff0c;就是网站关键词优化、内容优化、内链优化等等&#xff0c;网站要有一定的排名和流量&#xff0c;要做到内部优化&#xff0c;要做到最快&#xff0c;最快的优化排名&#xff1f;接下…

「认知」打工人的自我修养

都说认知以外的钱难搞&#xff0c;那认知内的呢&#xff1f; 01互联网内卷年代&#xff0c;作为不着调的普通选手&#xff1b; 在诸多花里胡哨的黑话中&#xff0c;个人最待见的就是"认知"这个词&#xff1b; 认知&#xff0c;有强烈的抽象感&#xff1b; 想要深刻…

Mr. Cappuccino的第37杯咖啡——Kubernetes资源管理

Kubernetes资源管理kubectl常用的命令陈述式管理方法1. 创建一个namespace2. 查询所有namespace3. 在namespace下运行一个pod4. 查询指定namespace下的pod5. 查看指定pod的详细信息6. 删除pod7. 删除namespace声明式管理方法命令式对象配置1. 创建yaml文件2. 基于yaml文件创建资…

【JavaEE】多线程(初阶)

目录 Thread 线程的创建 线程的常见属性 中断线程 等待线程 休眠线程 线程的状态 多线程相比于单线程的优势 Thread 在Java中操作多线程&#xff0c;最常用的类就是Thread。 Thread 类是 JVM 用来管理线程的一个类&#xff0c;换句话说&#xff0c;每个线程都有一个唯一…

一网打尽带环链表问题(手把着手带你理解,木有基础也能看懂!)

目录 0.前言 1.认识带环链表 2.带环链表OJ问题简述 3.判断是否为带环链表 4. 寻找入环节点&#xff08;法一&#xff1a;数学推理的魅力&#xff09; 5. 寻找入环节点&#xff08;暴力拆解带环链表的魄力&#xff09; 6.番外&#xff1a;判断是否为带环链表(fast和slow的…

树上的DP

ACACAC来的如此之快&#xff0c;让我以为还要再调试几个点(h)&#xff0c;本文涉及思路参考&#xff1a;参考文章 嗯,这个题和思路让我对跨父节点的树上链有了一个认识&#xff0c;我们来看一下&#xff1a; 如果说&#xff0c;我们要对这样的一条链进行dpdpdp操作&#xff0c…

[GXYCTF2019]BabysqliV3.0

发现我们随便上传一个以后返回的是 alert(Wrong pass); 密码错误 如果上传一个账号永真的话返回 Not this user! 没有这个用户&#xff0c;所以感觉可以使用盲注&#xff0c;对账号进行盲注 可是题目 ascii(substr((select database()),1,1))>1 也不对 最后才知道是…

电脑组装配件知识

目录 1.电脑硬件基础知识 1.1CPU 1.2内存 ​编辑 1.3硬盘 1.4主板 1.5显卡 ​编辑 1.6显示器 1.7电源 1.8机箱 2.电脑硬件搭配及选购 2.1硬件搭配原则 2.2怎样查询软件或游戏配置 2.3配件购买注意事项 2.4搭配一台普通办公电脑 3.电脑组装 1.电脑硬件基础知识 …

软件测试/测试开发 | 一文学会 Appium 环境配置

Appium 是一个开源的、跨平台的测试框架&#xff0c;可以用来测试 Native App、混合应用、移动 Web 应用&#xff08;H5 应用&#xff09;等&#xff0c;也是当下互联网企业实现移动自动化测试的重要工具。Appium 坚持的测试理念&#xff1a; •无需用户对 App 进行任何修改或…

OAuth2.0 开放平台认证授权开发套件 Authmore-Framework 1.0 发布

简介 | Intro 基于 OAuth2.0 协议的开放平台认证授权开发套件, 包含授权服务和开放平台 Docker 镜像&#xff0c;基于 Spring Boot Starter 的资源服务工具包和客户端&#xff08;第三方应用&#xff09;工具包 优点 | Advantages 简洁&#xff1a;专注核心功能 —— 社会化…

剑指offer----C语言版----第十六天----面试题22:链表中的倒数第k个节点

目录 1. 链表中倒数第 k 个节点 1.1 题目描述 1.2 思路一 1.3 思路二&#xff1a; 1.4 总结----代码的鲁棒性 1. 链表中倒数第 k 个节点 原题链接&#xff1a; 剑指 Offer 22. 链表中倒数第k个节点 - 力扣&#xff08;LeetCode&#xff09;https://leetcode.cn/problems/l…

竹制品行业市场运行态势及未来前景分析

2023-2029年中国竹制品行业市场运行态势及未来前景分析报告报告编号&#xff1a;1691644免费目录下载&#xff1a;http://www.cninfo360.com/yjbg/qthy/qt/20230110/1691644.html本报告著作权归博研咨询所有&#xff0c;未经书面许可&#xff0c;任何组织和个人不得以任何形式复…

基于Power BI的终端消费会员客户价值RFM分析

一、原理&#xff1a;RFM分析 &#xff08;一&#xff09;概念 RFM模型衡量当前客户价值和客户潜在价值的重要工具和手段。通过一个客户的近期购买行为、购买的总体频率以及花了多少钱三个维度来描述该客户价值状况的客户分类模型。 &#xff08;二&#xff09;分析维度 R&a…