1. 程式人生 > >阿裏雲環境遷移記錄 - Mongo ReplicationSet搭建

阿裏雲環境遷移記錄 - Mongo ReplicationSet搭建

only author x86_64 start rsync -av ole fast http storage

mongo集群的搭建,至少需要3個節點,2兩個數據節點和1個仲裁節點,所以這裏使用三臺機器搭建一個包含3節點的replicationSet。

1. 下載解壓安裝:
mkdir -P /opt/install
cd /opt/install/
wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-4.0.3.tgz

#從遠程服務器copy到本地安裝目錄
rsync -avzh [email protected]:/data/install/mongodb-linux-x86_64-rhel70-4.0.3.tgz /data/install/

#解壓copy
tar -xvf xxx

mv mongodb-linux-x86_64-rhel70 /usr/local/mongodb

#添加到環境變量
echo ‘export PATH=/usr/local/mongodb/bin:$PATH‘ >> /etc/profile
source /etc/profile
#測試
mongo --version

2. 配置文件修改

#創建數據、配置文件及日誌目錄
mkdir -p /data/mongodb/data
mkdir -p /data/mongodb/logs
mkdir -p /data/mongodb/conf

vim /data/mongodb/conf/mongod.conf

systemLog:
destination: file

path: "/data/mongodb/logs/mongod.log"
logAppend: true
storage:
dbPath: "/data/mongodb/data"
journal:
enabled: true
processManagement:
fork: true
pidFilePath: "/usr/local/mongodb/mongod.pid"
net:
bindIp: 127.0.0.1,172.26.27.70
port: 20467
#security:

keyFile: "/data/mongodb/conf/access.key"

authorization: enabled

#setParameter:

authenticationMechanisms: SCRAM-SHA-1

replication:
oplogSizeMB: 500
replSetName: rs_mongo_88

#添加防火墻端口
firewall-cmd --zone=public --permanent --add-port=20467/tcp
systemctl restart firewalld.service

3. 啟動並創建集群
#分別啟動三臺實例
ln -s /data/mongodb/conf/mongod.conf /etc/mongod.conf
mongod -f /etc/mongod.conf

#進入任意一臺實例,初始化集群
mongo 127.0.0.01:20467

cfg={_id: ‘rs_mongo_88‘, members:[{_id: 1, host: ‘172.26.27.70:20467‘},
{_id: 2, host: ‘172.26.27.71:20467‘},{_id: 3, host: ‘172.26.27.72:20467‘}
]}
##添加單個節點
cfg.members.push({_id: 1, host: ‘172.26.27.70:20467‘})
cfg.members.push({_id: 2, host: ‘172.26.27.71:20467‘})
cfg.members.push({_id: 3, host: ‘172.26.27.72:20467‘}, arbiterOnly: true)
rs.initiate(cfg)
rs.isMaster()
rs.status()

#永久設置slaveOk
vim /root/.mongorc.js
rs.slaveOk();

  1. 創建用戶

    use admin

#創建數據庫管理員

db.createUser(
{
"user":"root",
"pwd":"88gongxiangds",
"roles":[
{
"role":"readWriteAnyDatabase",
"db":"admin"
},
{
"role":"dbAdminAnyDatabase",
"db":"admin"
},
{
"role":"userAdminAnyDatabase",
"db":"admin"
}
]
}
)

#管理員登錄,可進行數據庫操作
mongo admin -uroot -p --port 20467

#創建集群管理員
db.createUser(
{
"user":"suroot",
"pwd":"88gongxiangds",
"roles":[
{
"role":"clusterAdmin",
"db":"admin"
},
{
"role":"clusterManager",
"db":"admin"
},
{
"role":"clusterMonitor",
"db":"admin"
}
]
}
)

#集群管理員登錄,可進行集群狀態查看和操作
mongo admin -usuroot -p --port 20467

#創建特定庫的特定用戶
user testdb
db.createUser(
{
"user":"test",
"pwd":"testpwd",
"roles":[
{
"role":"readWrite",
"db":"testdb"
},
{
"role":"dbAdmin",
"db":"testdb"
},
{
"role":"userAdmin",
"db":"testdb"
}
]
}
)

#查看創建的用戶
use admin

db.system.users.find()

5. 開啟認證

mongodb有2個認證環節:客戶端與mongod或者mongos之間,以及集群環境中每個mongod之間。

用戶添加完成後需要關閉所有節點(先關閉仲裁和從節點, 再關閉主節點, 避免主節點切換):

#shutdown
#登錄前關閉
mongod -f conf/mongod.conf --shutdown
#登錄後關閉服務:
db.shutdownServer()

#生成keyFile(keyFile的用途是作為所有mongod後臺進程允許加入集群的憑證, 所有集群中的節點共用一個keyFile, 避免其他mongod非法加入集群):
#生成keyFile, keyFile的長度必須在6-1024個字符之間
openssl rand -base64 756 > /data/mongodb/conf/access.key
#key只讀
chmod 600 /data/mongodb/conf/access.key
#copy到另外兩臺服務器conf目錄
scp access.key [email protected]:/data/mongodb/conf/
scp access.key [email protected]:/data/mongodb/conf/

#更換SSH默認端口(22 -> 20462)後的同步方式
rsync -azvh -e ‘ssh -p 20462‘ access.key [email protected]:/data/mongodb/conf/

#取消三個節點mongod.conf文件中security部分的註釋,並重啟實例

use admin
db.auth(‘root‘,‘88gongxiangds‘)

6. 停止mongod,創建mongodb用戶替代root

useradd mongo -s /sbin/nologin
passwd mongo
mongopwd

登錄權限也可添加後修改:
usermod -s /sbin/nologin mongo
usermod -s /bin/bash mongo

chown -R mongo:mongo /data/mongodb/
chown -R mongo:mongo /usr/local/mongodb/
chown mongo:mongo /etc/mongod.conf

su mongo
mongod -f /data/mongod.conf

##跳板機設置

ssh -CfNg -L 20462:127.0.0.1:20467 [email protected]

ssh -CfNg -R 20467:127.0.0.1:20462 [email protected]

##啟動停止服務
關閉:mongod -f conf/mongod.conf --shutdown
啟動: mongod -f conf/mongod.conf

##管理員登錄
mongo admin -uroot -p88gongxiangds --port 20467

##集群管理員登錄
mongo admin -usuroot -p88gongxiangds --port 20467

##集群狀態監控
mongostat --uri=mongodb://suroot:[email protected]:20467/admin 5
mongostat --uri=mongodb://suroot:[email protected]:20467/admin 5
mongostat --uri=mongodb://suroot:[email protected]:20467/admin 5

##集群統計
mongotop --host 172.26.27.71 --port 20467 -usuroot -p88gongxiangds --authenticationDatabase=admin 5
##查看每個數據庫的鎖的使用
mongotop --host 172.26.27.71 --port 20467 -usuroot -p88gongxiangds --authenticationDatabase=admin --locks 5

阿裏雲環境遷移記錄 - Mongo ReplicationSet搭建