Mongo Sharding - 配置伺服器和 Mongo 身份驗證
我需要盡快對數據庫進行分片,並且不清楚在
mongos
和config
伺服器上啟用身份驗證的最佳實踐是什麼。我想用密碼保護一切。
- 每個配置伺服器都應該
auth
啟用嗎?- 如果是這樣,那麼在每個使用者中設置相同的使用者?只是為了管理員數據庫?或者是否需要為配置數據庫創建一個?
- 我猜你不需要在 mongos 上創建任何使用者,因為它應該從配置和分片本身繼承,這是正確的嗎?
- 添加新分片時,是否需要為新分片上的每個分片數據庫設置相同的使用者?
謝謝!
我會一次拿這些:
每個配置伺服器都應該啟用身份驗證嗎?
是的,基本上你執行的每個 mongod 實例都應該啟用 auth (和密鑰文件,這意味著 auth)。
如果是這樣,那麼在每個使用者中設置相同的使用者?只是為了管理員數據庫?或者是否需要為配置數據庫創建一個?
分片環境中的管理數據庫實際上將存在於配置伺服器上。因此,您將擁有所有三個上的 admin 數據庫的副本(它們將彼此相同)。您應該始終通過 連接到配置數據庫,
mongos
並且您不會在那裡創建其他數據庫,因此無需添加特定使用者。我猜你不需要在 mongos 上創建任何使用者,因為它應該從配置和分片本身繼承,這是正確的嗎?
您添加的第一個分片(如果它具有現有數據庫)將是這些數據庫的主分片(永遠)。該主分片將包含這些數據庫的身份驗證記錄,即使您隨後將集合分片到多個分片。在您分片之後創建的任何後續數據庫都可能存在於另一個分片上,並且它們的憑據將儲存在那裡。基本的經驗法則是:用於
mongos
在分片環境中管理您的使用者。**注意:**以上在 MongoDB 2.4 及更低版本中是正確的。2.6 中的計劃更改將把所有憑據集中到分片環境中的配置數據庫中,並消除一些複雜性。但是,經驗法則仍然適用,使用
mongos
添加新分片時,是否需要為新分片上的每個分片數據庫設置相同的使用者?
正如上一個問題的答案所暗示的那樣,只要您始終通過連接
mongos
(推薦 - 它知道每個數據庫的主分片是什麼,並將適當地路由您的身份驗證請求),就沒有必要這樣做。在某些極端情況下,您可能需要在所有分片上擁有使用者,在這種情況下,您必須在每個分片上添加(和維護)它們,但對於一般用途,這不是必需的。