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

news2025/1/23 7:16:24

一、部署背景

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

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


二、功能简介

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

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


三、工具下载

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


四、工具说明

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

目录说明如下:

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

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

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


五、部署要求

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


六、部署步骤

说明:根据主机数量,请选择一台主机作为主控端,其它主机作为受控端,如果服务器数量为1台,则即可为主控端,又可为受控端。主控端需提前安装好ansible工具。这里为了避免麻烦,特意写了一个离线的ansible部署脚本,可实现一键部署ansible。脚本已经集成到该工具中,开箱即用,非常方便!
在这里插入图片描述

由于文章篇幅有限,这里就只介绍,在单台主机模式下,如果使用ansible工具实现redis-cluster集群的一键容器化部署?


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

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

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

# 服务名称:redis cluster集群
# 服务器支持: <最多支持6台服务器>
# 网络环境要求:<适用于企业或单位内网环境\互联网环境>
# 说明:根据实际服务器数量进行部署规划,如不清楚,建议咨询公司运维工程师
# 部署类型:单台主机部署redis cluster集群
[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 cluster集群一键部署工具包workspace),不修改
base_dir="/opt/pkgs/redis-cluster"

3、编辑config.yml

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

# 使用1台服务器部署redis cluster集群

# 宿主机最大磁盘空间分区下目录,比如说"/"分区下空间最大,就在"/"分区下创建一个data目录
MAX_SPACE_DIR: "/data"

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

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

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

# redis cluster集群之实例1所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7001端口是客户端通信端口,17001端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE1_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE1_PORT: "7001"
REDIS_NODE1_ANNOUNCE_BUS_PORT: "17001"

# redis cluster集群之实例2所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7002端口是客户端通信端口,17002端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE2_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE2_PORT: "7002"
REDIS_NODE2_ANNOUNCE_BUS_PORT: "17002"

# redis cluster集群之实例3所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7003端口是客户端通信端口,17003端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE3_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE3_PORT: "7003"
REDIS_NODE3_ANNOUNCE_BUS_PORT: "17003"

# redis cluster集群之实例4所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7004端口是客户端通信端口,17004端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE4_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE4_PORT: "7004"
REDIS_NODE4_ANNOUNCE_BUS_PORT: "17004"

# redis cluster集群之实例5所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7005端口是客户端通信端口,17005端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE5_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE5_PORT: "7005"
REDIS_NODE5_ANNOUNCE_BUS_PORT: "17005"

# redis cluster集群之实例6所在主机内网ip地址及映射宿主机端口,默认不修改
# 其中7006端口是客户端通信端口,17006端口是数据端口,用于集群总线,主要目的是用于节点的失败侦测、配置更新、故障转移授权等等
# # 集群总线端口(客户端通信端口 + 10000)
REDIS_NODE6_HOST: "{{ REDIS_HOST }}" 
REDIS_NODE6_PORT: "7006"
REDIS_NODE6_ANNOUNCE_BUS_PORT: "17006"

# redis cluster集群密码,默认不修改
REDIS_PASSWORD: "AhspHJ2l0ychcves"

4、执行部署操作

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

一键部署服务

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

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

一键部署结果,如下图所示:
在这里插入图片描述

查看集群节点信息,如下图所示:
在这里插入图片描述


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


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

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

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

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

相关文章

采用模块化设计的轮腿式六足机器人

原创作者&#xff1a;王菡琪1、前言 1.1 背景及意义 近两个世纪以来&#xff0c;人类生产技术水平不断飞跃&#xff0c;人口数量也大幅增长&#xff0c;这是人类史上不曾有的盛景&#xff0c;但是这也同时对我们提出了全新的挑战&#xff0c;于是我们研发了各类机器&#xff…

ECS简单介绍

ECS 云服务器ECS (Elastic Compute Service)是一种可弹性伸缩的计算服务&#xff0c;降低IT成本&#xff0c;提升运维效率&#xff0c;更专注于核心业务创新。 定位&#xff1a;最基础的计算服务&#xff0c;ECS及其上装载的操作系统&#xff0c;通常用作应用程序的运行环境。…

聚类--常见的K-MEANS聚类,DBSCAN聚类方法介绍

聚类 1. 什么是聚类⁉️ ➡️ 聚类就是把相似的物品分到一组。例如苹果&#xff0c;橙子属于水果类&#xff0c;猫&#xff0c;狗属于动物类&#xff0c;聚类把具有相似属性的物品分到同一组。 ☕常见的两种监督问题 有监督问题&#xff1a;有标签学习&#xff0c;通过已知…

过线检测判断方向

过线检测时需要判断目标是从哪个方向经过的 L1向量&#xff1a;&#xff08;-1&#xff0c;-7&#xff09; L2向量&#xff1a;&#xff08;-5&#xff0c;0&#xff09; 叉乘&#xff1a;L1 X L2 (-1x0 - (-5 x -7)) 0 - 35 -35 点乘&#xff1a;L1 L2 -1 x -5 -7 x 0…

管道设计软件:PIPEDATA-PRO

PIPEDATA-PROPipedata-Pro 提高了管道设计的效率&#xff0c;减轻了查找管道信息的负担。它可以直观、轻松地检索最新的管道和设计数据。尺寸和重量单位可以设置为公制或美国惯用单位。 Pipedata-Pro 于 1996 年由 Zeataline Projects 推出&#xff0c;现在已遍布全球&#xff…

靶机测试DomDom笔记

靶机描述Back to the TopHow well do you understand PHP programs? How familiar are you with Linux misconfigurations? This image will cover advanced Web attacks, out of the box thinking and the latest security vulnerabilities.Please note that this is captur…

阿里云中MindOpt优化器在python中如何安装

文章目录1 背景2 目的3 Bug4 安装教程6 小丑竟是我自己1 背景 我需要本地下载安装使用阿里元的MindOpt&#xff0c;安装教程可以看官网说明文档&#xff08;方方面面都有&#xff0c;不过细节部分有点欠缺&#xff0c;可能会踩一些坑&#xff0c;但总体问题不大&#xff09;。…

盘点 | CES2023落幕!新能源车、显示技术、AI/元宇宙、芯片…百花齐放百家争鸣中……

美国时间1月8日&#xff0c;全球规模最大、水平最高、影响力最广泛的国际消费电子展&#xff08;CES 2023&#xff09;在美国拉斯维加斯闭幕。这场堪比科技“春晚”的消费电子盛宴以“技术如何应对世界上最大的挑战”为主题&#xff0c;来自全球170多个国家与地区的3200余家科技…

OpenResty(Nginx+Redis+Lua)实现缓存限流

OpenResty介绍 OpenResty(又称&#xff1a;ngx_openresty) 是一个基于 nginx的可伸缩的 Web 平台&#xff0c;由中国人章亦春发起&#xff0c;提供了很多高质量的第三方模块。 OpenResty 是一个强大的 Web 应用服务器&#xff0c;Web 开发人员可以使用 Lua 脚本语言调动 Ngin…

2013-2021年核心城市空气质量日度数据

2013-2021年核心城市空气质量日度数据 1、时间&#xff1a;2013年12月-2021年4月13日 2、城市包括&#xff1a;北京 上海 广州 深圳 杭州 天津 成都 南京 西安 武汉 3、指标&#xff1a;日期、AQI、范围、质量等级、PM2.5、PM10、SO2、CO、NO2、O3、城市 4、来源&#xff1…

MYSQL基础——DML语句

DML语句 DML英文全称是Data Manipulation Language(数据操作语言)&#xff0c;用来对数据库中表的数据进行增(INSERT)、删(DELETE)、改(UPDATE)操作。 接下来代码演示所用的数据表如下&#xff1a; desc employee; 添加 添加数据语法格式如下&#xff1a; # 给指定字段添加…

IEEE | DSConv: Efficient Convolution Operator

论文标题 &#xff1a;DSConv: Efficient Convolution Operator 论文链接 &#xff1a;https://arxiv.org/abs/1901.01928v2 发表时间 &#xff1a;2019年11月 创新点 实现更低的内存使用&#xff0c;并且加快了计算速度 概要 引入了一种称为 DSConv&#xff08;分布移位卷…

【服务器数据恢复】服务器卷被误删除的raid5数据恢复案例

服务器数据恢复环境&故障&#xff1a; 某品牌服务器&#xff0c;搭建raid5磁盘阵列。 用户误操作删除服务器上的卷。 经过检测发现服务器不存在物理故障&#xff0c;可以从raid5磁盘阵列层面进行数据恢复。 服务器数据恢复过程&#xff1a; 1、对故障服务器所有硬盘以只读…

Chromedriver安装教程【无需翻墙】

第一步 查看你当前Chrome浏览器的版本&#xff0c;如下图所示&#xff1a; 第二步 查看当前Chrome浏览器的版本号&#xff0c;如下图所示,版本 108.0.5359.125&#xff08;正式版本&#xff09; &#xff08;64 位&#xff09;中的&#xff0c;108就是我们的版本号。 第三…

第47讲:SQL优化之主键优化

文章目录1.主键优化方面的概念1.1.数据的组织方式1.2.主键顺序写入的过程1.3.主键乱序写入引发页分裂的现象1.4.页合并的概念2.主键的设计原则1.主键优化方面的概念 1.1.数据的组织方式 在InnoDB存储引擎中&#xff0c;表的数据都是根据主键顺序组织然后存放的&#xff0c;这…

集成开发工具IDEA导入新项目,update index时间过长

集成开发工具IDEA导入新项目&#xff0c;update index时间过长&#xff0c;一般这种场景出现在&#xff1a; 1.继承开发工具比较新&#xff08;使用了优化的索引算法&#xff0c;这种算法一般是前期编译比较慢&#xff0c;一旦编译完&#xff0c;存入缓存&#xff0c;后期搜索就…

为何国家应该大力推行IPV9而不是IPv6.md

不得不说,中国的发展突飞猛进,你看连神舟16号都已经提升了日程。 我们见证了中国的崛起,更见证了中国的力量,集中力量办大事的决心。 当然计算机网络体系也发生了很大的改变,从之前的IPv4到20年前的IPv6的提出,再到现在的IPV9技术的商业实施。 为何IPv6提出了20多年了,普及还是…

11点还不睡会错过肝脏排毒吗?

人体脏器有排毒时间这个说法由来已久&#xff0c;肝经循行时间为晚上11点-1点&#xff0c;这让很多人害怕自己在11点还没睡就会错过肝脏排毒的时间。这个说法是真的吗&#xff1f;肝脏作为人体的“生物加工厂”&#xff0c;24小时都在工作。工作内容包括调节代谢、合成、调节免…

JSONArray.parseArray

1. 需求 最近有个需求&#xff1a; 要接收某个接口的 JSON 数据&#xff0c;而这个JSON数据有可能是一个 JSON 对象&#xff0c;也有可能是一个 JSON数组。 "{name,王五,age:10}""[{name:张三,age:12},{name:李四,age:11}]"现在呢&#xff0c;我需要根据…

指令+运算=CPU

1 组合逻辑电路&#xff08;Combinational Logic Circuit&#xff09; 要实现完整CPU功能&#xff0c;除加法器这种电路&#xff0c;还需实现其他功能的电路。有这样一种电路&#xff0c;类似加法器&#xff0c;给定输入&#xff0c;就能得到固定输出。 但仅有组合逻辑电路还…