天天看點

mongoDB CentOS7.2叢集部署

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. 建立具有叢集管理權限的使用者

    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/

登入修改/var/lib/mongo/authkey/,修改權限

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

添加配置

  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

重新開機後仍然好用

編輯 /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 <port></port>

其中的預設為27017,在 /etc/mongod.conf中配置,則啟動成功

3)開機自啟動

systemctl start mongod.service

systemctl enable mongod.service

繼續閱讀