docker 部署mongodb集群(主、從、仲裁)


1、拉取mongo鏡像

docker pull mongo

2、創建Master路徑

#創建配置文件地址
2 mkdir /home/mongodb/master/configdb
#創建db存放地址
mkdir /home/mongodb/master/db

3、創建Slave路徑

#創建配置文件路徑
mkdir /home/mongodb/slave/configdb
#創建db存放路徑
mkdir /home/mongodb/slave/db

4、創建Arditer路徑

#創建配置文件路徑
mkdir /home/mongodb/arditer/configdb
#創建db存放路徑
mkdir /home/mongodb/arditer/db

5、創建配置文件(三個配置文件保持一致,如果在同一個服務器中一份文件即可)

vi /home/mongodb/master/configdb/mongod.conf

6、配置文件內容如下:

net:
    #啟動端口
    port: 27017
    #允許連接的IP(0.0.0.0作用與--bind_ip_all類似)
    bindIp: 0.0.0.0
systemLog:
    #重新啟動mongodb的時候日志拼接在以前的日志文件上
    logAppend: true
security:
    #路徑是容器映射到宿主機的路徑
    keyFile: "/home/mongodb/config/mongodbKeyfile.key"
    #開啟客戶端連接認證 disabled 關閉授權
    authorization: "enabled"
replication:
    replSetName: "mongo_rs"

7、生成key文件(需要注意三個都需要用同一個文件,否則會出現驗證失敗的情況)

#生成key文件
openssl rand -base64 756 > /home/mongodb/master/configdb/mongodbKeyfile.key
#key文件必須設置成400,否則將會失敗(設置成其他都會失敗了,不知道是不是這個權限問題)
chmod 400 /home/mongodb/master/configdb/mongodbKeyfile.key

8、啟動容器

#啟動容器 master
docker run -di --name=mongo_master -p 27110:27017 -v /home/mongodb/master/configdb/:/data/configdb/ -v /home/mongodb/master/db/:/data/db/ mongo --replSet "mongo_rs" --bind_ip_all -f /data/configdb/mongod.conf

#啟動容器 slave
docker run -di --name=mongo_slave -p 27111:27017 -v /home/mongodb/slave/configdb/:/data/configdb/ -v /home/mongodb/slave/db/:/data/db/ mongo --replSet "mongo_rs" --bind_ip_all -f /data/configdb/mongod.conf

#啟動容器 arditer
docker run -di --name=mongo_arditer -p 27112:27017 -v /home/mongodb/arditer/configdb/:/data/configdb/ -v /home/mongodb/arditer/db/:/data/db/ mongo --replSet "mongo_rs" --bind_ip_all -f /data/configdb/mongod.conf

9、進入容器配置主從

#進入容器
docker exec -it mongo_master mongo admin
#配置主從(同一個服務器可以配置成相同ip,arbiterOnly:true該配置是配置成仲裁)
rs.initiate({_id:"mongo_rs",members:[{_id:0,host:"192.168.1.100:27110"},{_id:1,host:"192.168.1.101:27111"},{_id:2,host:"192.168.1.102:27112",arbiterOnly:true}]})

以上是配置主、從、仲裁的全部配置,以下則是配置權限

10、配置用戶權限

#切換至admin
use admin
#添加用戶
db.createUser({user:'root',pwd:'123456',roles:[{role:'userAdminAnyDatabase',db:'admin'},{role:'dbAdminAnyDatabase',db:'admin'}]})
#登錄
db.auth('root','123456')
#切換至測試庫
use test
#給測試庫添加賬戶
db.createUser({user:'test',pwd:'123456',roles:[{role:'readWrite',db:'test'}]})
#給測試庫添加數據
db.userinfo.insert({"name":"張三","sex":""})

11、進入slave中查看是否已經同步數據

#進入備機
docker exec -it mongo_slave mongo admin
#切換至test庫
use test
#登錄
db.auth('test','123456')
#設置備機可讀
rs.slaveOk()
#查詢數據
db.userinfo.find()

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM