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

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

一、部署背景

由于业务系统的特殊性我们需要针对不同的客户环境部署 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.shmongodb集群部署的主控脚本
#6、pkgs存放sshpass和nc命令的rpm包文件
#7、playbooksmongodb集群部署的剧本文件
#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系统运维指南》

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6
标签: golinuxcentos