Mongodb复制集集群搭建

一、环境说明

  1. 操作系统:Centos7.6

  2. Mongodb 3.2.1 的rpm包

    mongodb-org-server-3.2.1-1.el7.x86_64.rpm
    mongodb-org-tools-3.2.1-1.el7.x86_64.rpm
    mongodb-org-mongos-3.2.1-1.el7.x86_64.rpm
    mongodb-org-shell-3.2.1-1.el7.x86_64.rpm
    mongodb-org-3.2.1-1.el7.x86_64.rpm
    
  3. 集群模式:Replica Set,一个主节点两个从节点,没有仲裁节点

    节点 IP
    primary 172.16.20.29
    secondary 172.16.20.30
    secondary 172.16.20.31

    二、离线安装

    1、关闭防火墙

    关闭三台机器的防火墙:

    systemctl stop firewalld.service
    systemctl disable firewalld.service
    

    注意:如果后面端口还是不通,可以考虑是否是Selinux的影响。

    2、离线安装mongodb

    在三台机器上依次执行安装mongodb的脚本:bash mongo_install.sh

    具体脚本信息如下:

    #!/bin/bash
    
    rpm -ivh mongodb-org-server-3.2.1-1.el7.x86_64.rpm
    rpm -ivh mongodb-org-tools-3.2.1-1.el7.x86_64.rpm
    rpm -ivh mongodb-org-mongos-3.2.1-1.el7.x86_64.rpm
    rpm -ivh mongodb-org-shell-3.2.1-1.el7.x86_64.rpm
    rpm -ivh mongodb-org-3.2.1-1.el7.x86_64.rpm
    
    systemctl start mongod
    
    EXCODE=$?
    if [ "$EXCODE" == "0" ]; then
        echo '-------------------------------------'
        echo 'Mongo install Sucess!'
        echo '-------------------------------------'
    fi
    systemctl status mongod
    

    注意:因我司机房环境特殊,无法连通外网,故使用rpm包形式进行安装。同时也解决了tar包启动中要创建用户、注册为服务、设置开机启动的繁琐事项。如果可以访问外网,也可以使用yum在线安装。

三、集群配置

1、生成密钥文件

第一台主机上执行:

openssl rand -base64 756 > /var/lib/mongo/keyFile
chmod 600 /var/lib/mongo/keyFile
chown -R mongod:mongod /var/lib/mongo/keyFile

其他两台主机复制第一台生成的keyFile文件(通过lszrz 或者 scp 或者 ftp),并执行以下命令:

cp keyFile /var/lib/mongo/
chmod 600 /var/lib/mongo/keyFile
chown -R mongod:mongod /var/lib/mongo/keyFile

2、修改监听,配置集群名称

三台机器依次做如下操作

1)修改监听:

sed -i "s/bindIp: 127.0.0.1/bindIp: 0.0.0.0/g" /etc/mongod.conf

2)配置集群名称:

cat >> /etc/mongod.conf << EOF
replication:
  oplogSizeMB: 1024 
  replSetName: mars
EOF

右上角bash复制代码存在bug,会去除缩进。请尽量使用鼠标右键复制。

3)重启

三台机器依次重启服务:

systemctl restart mongod

3、初始化集群

在第一台主机上,执行mongo命令,进入mongo shell:

use admin
# 设置集群配置(根据具体情况修改IP和端口)
config = {_id:"mars",members:[{_id:0,host:'172.16.20.29:27017',priority :100},{_id:1,host:'172.16.20.30:27017',priority:100},{_id:2,host:'172.16.20.31:27017',priority:100}]}
# 初始化集群
rs.initiate(config)
# 查看集群状态
rs.status()

二、认证配置

1、创建用户

在第一台机器上

在mongo shell中输入:

创建管理员账户:

db.createUser({user: "admin",pwd: "xxxxxx",roles: [ { role: "userAdminAnyDatabase", db: "admin" },{ role: "clusterAdmin", db: "admin" }]})

创建客户端账户:

db.createUser({user: "用于客户端用户名",pwd: "用于客户端密码",roles: [ "readWriteAnyDatabase"]})

退出mongo shell:exit

2、开启认证

在所有三台机器上

在shell终端中输入:

cat >> /etc/mongod.conf << EOF

security:
  authorization: enabled
  keyFile: /var/lib/mongo/keyFile
EOF

3、重启

全部三个几点,一次重启

systemctl restart mongod


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 lxwno.1@163.com

×

喜欢就点赞,疼爱就打赏