mongoDB CentOS7.2集群部署

原文链接: https://yq.aliyun.com/articles/669824

1.关闭selinux

vi /etc/selinux/config

SELINUX=disabled

setenforce 0

 

2.配置mongodb源

#yum安装mongodb

vi /etc/yum.repos.d/mongodb.repo

[mongodb-org]

name=MongoDB Repository

baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.6/x86_64/

gpgcheck=1

enabled=1

gpgkey=https://www.mongodb.org/static/pgp/server-3.6.asc

 

3.yum安装mongodb

yum install mongodb-org (目前安装的版本是3.6.7)

 

4.关闭这三台机器的防火墙

       service iptables stop

       chkconfig iptables off

 

       service firewalld stop

       chkconfig firewalld off

 

5.分别配置三台机器的/etc/mongod.conf

vi /etc/mongod.conf 添加如下内容

replication:   # 取消这行的注释

  oplogSizeMB: 20  # 增加这一行配置定义oplog的大小,注意前面需要有两个空格

      replSetName: zero  # 定义复制集的名称,同样的前面需要有两个空格

 

       在每台机器的/etc/mongod.conf中配置各自ip地址,如下面的0.0.0.0

       vi /etc/mongod.conf

net:

  port: 27017

        bindIp: 127.0.0.1, 0.0.0.0

6.集群初始化

       systemctl start mongod.service  #分别启动三台机器的MongoDB服务

       进入到其中一台机器,执行下面的命令

       mongo

use admin

config={_id:"zero",members:[{_id:0,host:"0.0.0.0:27017"},{_id:1,host:"0.0.0.0:27017"},{_id:2,host:"0.0.0.0:27017"}]}

rs.initiate(config)  # 初始化

rs.status()  # 查看状态

 

注意:如果在slave上出现show dbs报错,not master and slaveOk=false

rs.slaveOk()  # 如果出现以上错误,需要执行这条命令

 

7. 创建具有集群管理权限的用户

       mongo

    use admin

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

clusterAdmin具有管理集群的权限

db.auth("root", "123456") #如果返回1,则表示成功。

 

8. 给集群添加安全keyfile安全认证

       #生成key

mkdir -p /var/lib/mongo/authkey/ #在每个节点创建该文件夹

#在主节点上执行以下命令

openssl rand -base64 745 > /var/lib/mongo/authkey/mongodb-keyfile

chmod 600 /var/lib/mongo/authkey/mongodb-keyfile

cd /var/lib/mongo/authkey/

chown mongod:mongod mongodb-keyfile

# 该key的权限必须是600,且所有者是mongod

# 将该key放到集群中机器的每一台上,记住必须保持一致,权限设置成600;

scp mongodb-keyfile [email protected]:/var/lib/mongo/authkey/

scp mongodb-keyfile [email protected]:/var/lib/mongo/authkey/

登录修改/var/lib/mongo/authkey/,修改权限

chmod 600 /var/lib/mongo/authkey/mongodb-keyfile

cd /var/lib/mongo/authkey/

chown mongod:mongod mongodb-keyfile

 

9. 分别配置三台机器的/etc/mongod.conf,添加keyfile认证

       取消security的注释,并在下面添加

       keyFile: /var/lib/mongo/authkey/mongodb-keyfile

 

10. 重新启动集群节点的mongodb服务

       systemctl restart mongod.service

 

11. 登录mongodb

mongo admin -u root -p

       输入密码,登录mongo后执行

       rs.status()  # 查看状态,如没有unauth字样,则说明安全认证添加成功

 

12. 测试副本集群

       db.printSlaveReplicationInfo() #查看副本同步状态

       use testdb  # 创建库

switched to db testdb

zero:PRIMARY> db.test.insert({AccountID:1,UserName:"zero"}) 

#创建集合,并且插入一条数据

WriteResult({ "nInserted" : 1 })

zero:PRIMARY> show dbs  # 查看所有的库

zero:PRIMARY> show tables  # 查看当前库的集合

test

在slave上查看数据集,是否已经有新加的数据

如果在slave上出现show dbs报错,not master and slaveOk=false

rs.slaveOk()  # 如果出现以上错误,需要执行这条命令

 

 

添加配置

  1. 设置 /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

添加到/etc/rc.local

#disable transparent_hugepage

echo never >> /sys/kernel/mm/transparent_hugepage/enabled

echo never >> /sys/kernel/mm/transparent_hugepage/defrag

 

重启后仍然好用

编辑 /etc/default/grub,在GRUB_CMDLINE_LINUX加入选项 transparent_hugepage=never
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="rd.lvm.lv=fedora/swap rd.lvm.lv=fedora/root rhgb quiet transparent_hugepage=never"
GRUB_DISABLE_RECOVERY="true"
2.
重新生成grub配置文件
On BIOS-based machines, issue the following command as root:
# grub2-mkconfig -o /boot/grub2/grub.cfg

systemctl status mongod.service

 

6. 查看是否启动成功

$ sudo systemctl status mongod.service

若显示 active(running)则启动成功!或者

$ sudo cat /var/log/mongodb/mongod.log

如出现

[thread1] waiting for connections on port

其中的默认为27017,在 /etc/mongod.conf中配置,则启动成功

 

 

3)开机自启动

systemctl start mongod.service

systemctl enable mongod.service

systemctl status mongod.service

 

你可能感兴趣的:(mongoDB CentOS7.2集群部署)