mongodb3.6集群搭建:分片集群認證
上篇集群已經創建,現在加入認證。
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集群搭建:分片集群認證