一、部署背景

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

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


二、功能简介

1、支持 1台主机 一键远程部署mongodb副本集群(三节点模式)。
2、支持 2台主机 一键远程部署mongodb副本集群(三节点模式)。
3、支持 3台主机 一键远程部署mongodb副本集群(三节点模式)。
4、支持一键部署所有节点或单个mongodb实例依次部署、启动、停止、重启、检查、移除等功能。
5、 支持数据目录、端口、用户、密码等参数的灵活配置
6、 支持数据目录、日志目录、配置文件等持久化

说明:由于mongodb副本集群是三节点模式,所以最多3台服务器即可。


三、工具下载

基于ansible一键离线部署mongodb4.2.23容器版副本集群工具


四、工具说明

目录结构如下:

目录说明如下:

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

README.txt文件内容如下:

op.sh主控脚本参数如下:

说明:根据部署mongodb副本集群的主机数量,选择不同的部署模式,例如,主机数量为3台,则选择node3。

其中代码行数:1985行,使用shell语言+jinja2语言。


五、部署要求

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


六、部署步骤

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

由于文章篇幅有限,这里就只介绍,在3台主机上,如何使用ansible工具实现mongodb副本集群的一键容器化部署?


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

[root@localhost mongo-replica-cluster]# ./op.sh new node3
2023-02-06 13:38:52 DEBUG generate custom cluster files in /opt/pkgs/mongo-replica-cluster/cluster/node3
2023-02-06 13:38:52 DEBUG cluster node3: files successfully created.
2023-02-06 13:38:52 INFO next steps 1: to config '/opt/pkgs/mongo-replica-cluster/cluster/node3/hosts'
2023-02-06 13:38:52 INFO next steps 2: to config '/opt/pkgs/mongo-replica-cluster/cluster/node3/config.yml'

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

# 服务名称:mongodb 副本集群
# 服务器支持: <最多支持3台服务器>
# 网络环境要求:<适用于企业或单位内网环境\互联网环境>
# 说明:根据实际服务器数量进行部署规划,如不清楚,建议咨询公司运维工程师
# 部署类型:使用3台主机部署mongodb 副本集群
[mongodb_cluster_1]
192.168.1.191 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_python_interpreter=/usr/bin/python2.7[mongodb_cluster_2]
192.168.1.192 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_python_interpreter=/usr/bin/python2.7[mongodb_cluster_3]
192.168.1.193 ansible_ssh_port=22 ansible_ssh_user=root ansible_ssh_pass=123456 ansible_python_interpreter=/usr/bin/python2.7# 为主机组指定变量,作用范围为整个主机组
[all:vars]# Deploy Directory (mongodb 副本集群一键部署工具包workspace),不修改
base_dir="/opt/pkgs/mongo-replica-cluster"

3、编辑config.yml

# 使用3台服务器部署mongodb 副本集群
# 宿主机最大磁盘空间分区下目录,比如说"/"分区下空间最大,就在"/"分区下创建一个data目录
MAX_SPACE_DIR: "/data"# mongodb工作目录,主要用来存放离线镜像及其它部署相关文件,默认不修改
MONGODB_WORK_DIR: "{{ MAX_SPACE_DIR }}/pkgs/mongo-replica-cluster"# mongodb数据存放根目录,建议选择当前磁盘分区最大空间下目录,默认不修改
MONGODB_DATA_DIR: "{{ MAX_SPACE_DIR }}/basic-data/mongo-replica-cluster"# mongodb副本集群之节点1监听地址,根据实际情况修改
# mongodb副本集群之节点1映射宿主机端口,端口不冲突情况下,建议不修改
# 默认为arbiter节点,即仲裁节点
MONGODB_NODE1_HOST: "192.168.1.191"
MONGODB_NODE1_PORT: "17001"# mongodb副本集群之节点2监听地址,根据实际情况修改
# mongodb副本集群之节点2映射宿主机端口,端口不冲突情况下,建议不修改
# 默认为secondary节点,即从节点
MONGODB_NODE2_HOST: "192.168.1.192"
MONGODB_NODE2_PORT: "17002"# mongodb副本集群之节点3监听地址,根据实际情况修改
# mongodb副本集群之节点3映射宿主机端口,端口不冲突情况下,建议不修改
# 默认为primary节点,即主节点
MONGODB_NODE3_HOST: "192.168.1.193"
MONGODB_NODE3_PORT: "17003"# Mongodb副本集群超级用户账号,只在admin数据库中可用,根据实际情况修改
MONGODB_ADMIN_USER: "admin"# mongodb副本集群管理账号密码,根据实际情况修改
MONGODB_ADMIN_PASSWORD: "HvCXJQ6wuyz9"

4、执行部署操作

说明:如果不清楚部署操作命令,可使用其帮助命令,如下所示

一键部署服务

#方式一:一键部署所有节点
[root@localhost mongo-replica-cluster]# ./op.sh setup node3 all#方式二:单个节点依次部署
[root@localhost mongo-replica-cluster]# ./op.sh setup node3 01
[root@localhost mongo-replica-cluster]# ./op.sh setup node3 02
[root@localhost mongo-replica-cluster]# ./op.sh setup node3 03

一键部署结果,如下图所示:

查看集群节点信息,如下图所示:


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


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

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

《Linux运维实战:Centos7.6基于ansible一键离线部署mongodb4.2.23容器版副本集群》相关推荐

  1. ComeFuture英伽学院——2020年 全国大学生英语竞赛【C类初赛真题解析】(持续更新)

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  2. ComeFuture英伽学院——2019年 全国大学生英语竞赛【C类初赛真题解析】大小作文——详细解析

    视频:ComeFuture英伽学院--2019年 全国大学生英语竞赛[C类初赛真题解析]大小作文--详细解析 课件:[课件]2019年大学生英语竞赛C类初赛.pdf 视频:2020年全国大学生英语竞赛 ...

  3. 信息学奥赛真题解析(玩具谜题)

    玩具谜题(2016年信息学奥赛提高组真题) 题目描述 小南有一套可爱的玩具小人, 它们各有不同的职业.有一天, 这些玩具小人把小南的眼镜藏了起来.小南发现玩具小人们围成了一个圈,它们有的面朝圈内,有的 ...

  4. 信息学奥赛之初赛 第1轮 讲解(01-08课)

    信息学奥赛之初赛讲解 01 计算机概述 系统基本结构 信息学奥赛之初赛讲解 01 计算机概述 系统基本结构_哔哩哔哩_bilibili 信息学奥赛之初赛讲解 02 软件系统 计算机语言 进制转换 信息 ...

  5. 信息学奥赛一本通习题答案(五)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  6. 信息学奥赛一本通习题答案(三)

    最近在给小学生做C++的入门培训,用的教程是信息学奥赛一本通,刷题网址 http://ybt.ssoier.cn:8088/index.php 现将部分习题的答案放在博客上,希望能给其他有需要的人带来 ...

  7. 信息学奥赛一本通 提高篇 第六部分 数学基础 相关的真题

    第1章   快速幂 1875:[13NOIP提高组]转圈游戏 信息学奥赛一本通(C++版)在线评测系统 第2 章  素数 第 3 章  约数 第 4 章  同余问题 第 5 章  矩阵乘法 第 6 章 ...

  8. 信息学奥赛一本通题目代码(非题库)

    为了完善自己学c++,很多人都去读相关文献,就比如<信息学奥赛一本通>,可又对题目无从下手,从今天开始,我将把书上的题目一 一的解析下来,可以做参考,如果有错,可以告诉我,将在下次解析里重 ...

  9. 信息学奥赛一本通(C++版) 刷题 记录

    总目录详见:https://blog.csdn.net/mrcrack/article/details/86501716 信息学奥赛一本通(C++版) 刷题 记录 http://ybt.ssoier. ...

  10. 最近公共祖先三种算法详解 + 模板题 建议新手收藏 例题: 信息学奥赛一本通 祖孙询问 距离

    首先什么是最近公共祖先?? 如图:红色节点的祖先为红色的1, 2, 3. 绿色节点的祖先为绿色的1, 2, 3, 4. 他们的最近公共祖先即他们最先相交的地方,如在上图中黄色的点就是他们的最近公共祖先 ...

最新文章

  1. mysql innodb 设置详解_【mysql】mysql innodb 配置详解
  2. 《企业软件交付:敏捷与高效管理精要》——1.6 结论
  3. 安全与隐私没有允许任何来源选项
  4. 【MSDN文摘】使用自定义验证组件库扩展 Windows 窗体: Form Scope
  5. 电赛 | 电源题软件如何准备?
  6. mysql锁与性能_MySQL性能优化--锁(概念)
  7. PHP7 网络编程(四)signal信号【待】
  8. oracle语句_ORACLE 常用语句实例:CTE MERGE 结合
  9. 中间件学习——J2EE中间件四步曲
  10. 使用npm运行react程序报错The 'mode' option has not been set, webpack will fallback to 'production' for th
  11. python画图旋转图形_python简单实现旋转图片的方法
  12. 热电偶的工作原理及结构 1
  13. VS2008编译时error C2248处理方法
  14. Lock锁及获取锁的四种方法
  15. python3携程_python携程
  16. 两个顺序栈共享一个数组的存储空间
  17. 谷歌剧变:李飞飞李佳离职后,现在轮到云CEO出局
  18. Pandas02--pandas基础
  19. 修炼打工皇帝不得不学的三招
  20. 阿里云邮箱设置smtp服务

热门文章

  1. 瓦片、WMS与WMTS
  2. Unable to resolve table ‘XXX‘ 的解决方案
  3. Android大牛的博客
  4. R语言之读取图片的方式总结
  5. 平面广告设计师从学徒到接单不断的逆袭之路
  6. python 3.9特性_Python3.9新鲜出炉,Python3.9有什么特性?
  7. 第七课——【软件实训之从调研到设计,换发型产品设计的从0到1】
  8. S7-1500仿真软件S7-PLCSIM Advanced
  9. C#和服务器上虚拟机内PLCSIM通信
  10. Unreal常见疑难杂症汇总(持续更新)