1. 程式人生 > >mongodb3.6集群搭建:分片集群認證

mongodb3.6集群搭建:分片集群認證

open node roo mongodb stop 結點 ssl 重新 -s

上篇集群已經創建,現在加入認證。

1. 生成密鑰文件
每個服務器上創建路徑:
mkdir -p /var/lib/mongo/auth

生成64字節的密鑰文件
openssl rand -base64 64 > /var/lib/mongo/auth/keyfile.key

把密鑰文件復制到集群中每一個結點上(路由結點,元配置結點,分片結點上都要有這個密鑰文件)
scp /var/lib/mongo/auth/keyfile.key root@node2:/var/lib/mongo/auth
scp /var/lib/mongo/auth/keyfile.key root@node3:/var/lib/mongo/auth

把密鑰文件的權限設置為600,owner為mongod(啟動mongo實例的用戶)
chown -R mongod:mongod /var/lib/mongo/auth
chmod 600 /var/lib/mongo/auth/keyfile.key
2. 創建集群用戶
每個結點(每個分片結點,每個路由結點)上都要創建創建admin庫的管理員用戶
mongo 127.0.0.1:20000/admin

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

創建業務庫用戶(這裏是test),需要在每個結點(每個分片結點,每個路由結點)上都要創建用戶
use test
db.createUser(
{
user : "test",
pwd : "test123456",
roles :
[
{ role : "dbOwner", db : "test" },
{ role : "clusterAdmin", db : "admin" }
]
}
)

3. 開啟集群認證
在每個結點(路由結點,元配置結點,分片結點)的配置文件中加入keyFile的配置項;
security:
keyFile: /var/lib/mongo/auth/keyfile.key

在每個元配置結點和分片結點(即除了mongos結點)的配置文件中加入authorization配置項
security:
authorization: enabled

關閉集群
按照路由結點、分片結點、配置結點順序,依次關閉各結點服務:
systemctl stop mongod-mongos
systemctl stop mongod-shard3
systemctl stop mongod-shard2
systemctl stop mongod-shard1
systemctl stop mongod-configsvr

重新啟動集群
systemctl start mongod-configsvr
systemctl start mongod-shard1
systemctl start mongod-shard2
systemctl start mongod-shard3
systemctl start mongod-mongos

4. 驗證集群的認證
mongo 127.0.0.1:20000/admin

use admin
db.auth(“admin”, ” admin123456”)

查看分片狀態
db.printShardingStatus()

use test
db.auth(“test”,”test123456”)

查看該庫中的該表的集群狀態
db.users.stats()
若發現裏面最開始的sharded字段是true,則表示添加認證功能後的集群沒有出現異常

mongodb3.6集群搭建:分片集群認證