扩容 MongoDB RS 集群(切片集集群)

MongoDB 是一种通用文档型数据库。在蓝鲸后台架构中,主要为以下平台提供存储服务:

  • 配置平台(CMDB)的核心数据
  • 作业平台(Job)的执行日志
  • 管控平台(GSE)的插件信息

本教程描述了如何在蓝鲸社区版中扩容 Mongod 副本集。要使一个副本集能提供足够的冗余,至少需要部署三个节点,所以新增节点数必须为偶数,至少增加两台机器。

1. 数据备份

1
2
3
4
5
6
7
8
ssh <MongoDB ip>

backup_dir=$(/data/backup/mongodb-backup-$(date +"%F-%H-%M-%S")
mkdir -p ${backup_dir}

# 默认不备份 oplog,如需备份 oplog,请在选项中添加 --oplog 选项以备份操作日志
/usr/bin/mongodump --host ${LAN_IP} --port 27017 --username ${BK_MONGODB_ADMIN_USER} --password ${BK_MONGODB_ADMIN_PASSWORD} --out ${backup_dir} --gzip
ls -l ${backup_dir}

2. Mongod 副本集扩容

2.1. 使用标准运维流程扩容

  • 该标准运维流程适用于:单/多节点副本集集群新增节点

2.1.1. 前置准备

  1. 机器准备
  1. 实现免密
    开始部署前,请确保新增主机跟中控机已实现免密。

    1
    ssh-copy-id <ip>
  2. 请先前往节点管理,对新增主机进行 agent 安装

  3. 将需要部署产品的标准运维流程模版导入至标准运维
    标准运维流程模版 下载
    详细步骤: 打开标准运维 -> 流程 -> 项目流程 -> 导入YAML -> 点击上传 -> 导入

2.1.2. 执行扩容操作

  1. 选择流程 “[ce][scale]mongodb” 流程模版进行新建任务,根据提示填写相关信息。确认填写信息无误后,开始执行任务。
  2. 点击下一步进入到“参数信息”填写页,按需填入参数

1.2. 手动单步扩容

  1. 机器准备

2.2.1. 准备机器:新增并初始化机器

以下初始化步骤以单个机器为例,如有多台扩容机器,请多次重复执行,注意替换机器 IP

以下操作在中控机执行,默认在 /data/install 下执行

  1. 配置新机器免密

    1
    ssh-copy-id <ip>
  2. 同步蓝鲸的 yum repo

    1
    rsync -av /etc/yum.repos.d/Blueking.repo root@<ip>:/etc/yum.repos.d/
  3. 在 install.config 中增加扩容的机器和模块定义

    1
    2
    3
    cat >> install.config <<EOF
    <ip> mongodb
    EOF
  4. 执行蓝鲸的机器初始化操作

    1
    2
    3
    4
    5
    6
    # 同步脚本至新机器
    ./bkcli sync common
    # 执行初始化脚本
    pcmd -H <ip> '/data/install/bin/init_new_node.sh'
    # 确认新机器成功加入了 consul 集群,如果没有输出,可以再次重试
    consul members | grep "<ip>:"

2.2.2. 执行扩容操作

如有多台扩容机器,一下操作请多次重复执行,注意替换机器 IP
以下操作在新增机器上执行,默认在 /data/install 下执行,注意替换变量

  1. 登陆新增机器

    1
    ssh <ip>
  2. 安装 MongoDB 并完成配置

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    # 默认的数据、日志目录
    DATA_DIR="/data/bkce/public/mongodb"
    LOG_DIR="/data/bkce/logs/mongodb"

    # 安装 MongoDB server 及配套工具
    if ! rpm -ql mongodb-org-"4.2.3" &>/dev/null; then
    yum install -y mongodb-org-"4.2.3" \
    mongodb-org-server-"4.2.3" \
    mongodb-org-shell-"4.2.3" \
    mongodb-org-mongos-"4.2.3" \
    mongodb-org-tools-"4.2.3"
    fi

    # 创建目录并配置权限
    install -d -m 755 -o mongod -g mongod "$DATA_DIR"
    install -d -m 755 -o mongod -g mongod "$LOG_DIR"

    # 选取一台现有节点机器,拷贝配置至新增节点
    rsync -av <参考节点的ip>:/etc/mongod.conf /etc/mongod.conf
    rsync -av <参考节点的ip>:/etc/mongod.key /etc/mongod.key

    # 同步日志滚动策略
    rsync -av <参考节点的ip>:/etc/logrotate.d/mongodb /etc/logrotate.d/mongodb

    # 修改配置中内网 ip 地址
    source /etc/blueking/env/local.env
    sed -i "/bindIp/s/127.0.0.1.*/127.0.0.1, $LAN_IP/" /etc/mongod.conf
  3. 启动服务

    1
    2
    3
    4
    systemctl enable --now mongod.service

    # 确认服务状态
    systemctl status mongod.service

2.2.3. 注册副本集新节点

任意一个节点的机器上执行,新增2个节点,需执行注册步骤两次

1
mongo mongodb://<user>:<password>@<primary-ip>:27017/test?authSource=admin --eval 'rs.add("<ip>")'

2.2.4. 注册 consul:mongodb.service.consul

中控机上执行

1
2
3
4
5
6
cd /data/install ; source utils.fc; source tools.sh
reg_consul_svc monogodb 27017 "${BK_MONGODB_IP_COMMA}"

# 检查
dig +short mongodb.service.consul
## 预期输出所有部署了 mongodb 机器的 ip

2.2.5. 完成扩容,验证产品功能

2.2.6 注册蓝鲸业务拓扑

以 “Kafka” 为例:

  1. 打开“配置平台” > “蓝鲸” 业务 > 选中新增的机器 > 点击“追加至” > “业务模块”
  2. 选择“公共组件” > “kafka” > “下一步”
  3. 确认变更内容 > “确认追加”

扩容 MongoDB RS 集群(切片集集群)

https://1.not.icu/Scale-up-mongod-replica-set-cluster/

作者

Sony Dog

发布于

2023-04-13

更新于

2023-12-26

许可协议

CC BY-NC-SA 4.0