Mongodb

MongoDB中的副本集使用IP而不是域?

  • February 27, 2022

我想通過 IP 在 2 台伺服器上以副本集模式使用 MongoDB。但是當我在另一台伺服器上部署輔助伺服器時,我遇到了關於在 2 個實例之間連接的問題。例如,主要位於伺服器 192.168.1.1:27018 上,主機名為 COM1,第二個位於伺服器 192.168.1.2:27018 上,主機名為 COM2。儘管像這樣配置

net:
   bindIp: 0.0.0.0, COM1|192.168.1.1, COM2|192.168.1.2
   port: 27018

但是在 MongoDB 的日誌中,它的響應是無法聽到 COM1:27018 或可以找到 COM2:27018,我不知道如何將這些地址與這些 IP 映射。請幫助我,謝謝!

從您的主機執行以下命令

mongo --host COM2 --port 27018 

您應該能夠使用上述命令連接到在輔助節點中執行的 MongoDB。如果連接失敗,請檢查以下配置設置

  1. 檢查bindIp輔助節點配置文件的設置,它應該允許從192.168.1.1:27018.
  2. 檢查埠號27018是否接受輔助節點中的入站連接。如果沒有在IP 表中添加一個條目。
  3. 檢查輔助節點主機文件是否已使用主電腦 DNS 名稱和 IP 地址進行更新。

對主節點也遵循相同的操作,並嘗試使用第一個命令從其他機器連接到每台機器。如果一切正常,您應該能夠設置您的副本集。

MongoDB中的副本集使用IP而不是域?

根據此處的 MongoDB 文件,要覆蓋並綁定到其他 IP 地址,您可以使用net.bindIp配置文件設置或--bind_ip命令行選項來指定主機名或 IP 地址列表。

For example,以下 mongod 實例綁定到 localhost 和主機名 My-Example-Associated-Hostname,它與 ip 地址 198.51.100.1 關聯:

mongod --bind_ip localhost,My-Example-Associated-Hostname

為了連接到這個實例,遠端客戶端必須指定主機名或其關聯的 IP 地址 198.51.100.1:

mongo --host My-Example-Associated-Hostname

mongo --host 198.51.100.1

確保網路流量可以在集合的所有成員和網路中的所有客戶端之間安全地傳遞。

考慮以下:

  • 建立虛擬專用網路。確保您的網路拓撲通過區域網路路由單個站點內成員之間的所有流量。
  • 配置訪問控制以防止未知客戶端連接到副本集。
  • 配置網路和防火牆規則,以便僅在預設 MongoDB 埠上允許傳入和傳出數據包,並且只能來自您的部署。請參閱 IP 綁定注意事項。

**警告注意:**在綁定到非本地主機(例如可公開訪問的)IP 地址之前,請確保您已保護您的集群免受未經授權的訪問。有關安全建議的完整列表,請參閱安全清單。至少,考慮啟用身份驗證和強化網路基礎設施。

如果您將通過 –replSet 和 –bind_ip 命令行選項指定副本集名稱和 ip 綁定:

mongod --replSet "rs0" --bind_ip localhost,<hostname(s)|ip address(es)>

對於 ,指定遠端客戶端(包括副本集的其他成員)可以用來連接到實例的 mongod 實例的主機名和/或 IP 地址。

或者,您也可以在配置文件中指定副本集名稱ip 地址

replication:
  replSetName: "rs0"
net:
  bindIp: localhost,<hostname(s)|ip address(es)>

**注意:**在 3.6 版更改:從 MongoDB 3.6 開始,MongoDB 二進製文件、mongod 和 mongos 預設綁定到 localhost。如果為二進制設置了 net.ipv6 配置文件設置或 –ipv6 命令行選項,則二進制額外綁定到 localhost IPv6 地址。

引用自:https://dba.stackexchange.com/questions/233237