集群應用到數據庫伺服器的IP配置
我需要設置應用程序伺服器集群的 IP 以連接到數據庫伺服器集群。對於 1 對 1,應用程序伺服器到數據庫伺服器很容易,但是當涉及到集群環境時,我想知道我應該如何配置/設置應用程序伺服器中的 IP 以連接多個數據庫伺服器,尤其是在主動/被動設置。我很困惑,因為我不確定我應該如何設置應用程序伺服器知道它應該與哪個活動數據庫伺服器通信以及當主數據庫伺服器關閉時何時與另一個數據庫伺服器通信的 IP。有人可以引導我走向我應該去的方向嗎?
這些是集群/HA 設置的配置:
- 我有一個連接到數據中心路由器的第 2 層交換機。
- 我有 2 台應用程序伺服器和 2 台數據庫伺服器。
- 應用程序伺服器和數據庫伺服器都在它們自己的集群中,使用 Debian OS 和 Corosync、Pacemaker 和 DRBD 設置。
- 應用伺服器和數據庫伺服器集群都直接連接到交換機。
- 在應用程序/數據庫伺服器之間,我為 corosync 使用了一個專用的 NIC 來監控心跳。
- 在我的應用伺服器上執行的應用程序只是使用程式碼點火器編碼的 API。
- 我的數據庫包含 postgesSQL 和 MongoDB。
只能代表
PostgreSQL
,因為我缺乏有關以下方面的知識MongoDB
:
我不會使用
DRBD
forPostgreSQL
。相反,我強烈建議使用pgsql ocf 資源代理。
PostgreSQL
這允許您使用從 9.1 版開始實施的同步流複製來設置主動/被動集群。向集群添加一個虛擬/浮動 IP,並使用託管約束,強制它在目前
PostgreSQL
分配了主角色的節點上執行。將您的應用程序伺服器指向此虛擬/浮動 IP。
但是,這種方法也有一個缺點:故障轉移後,您可能必須將數據從“現在的主”複製到“現在的從”(以使集群恢復到完全工作狀態)。這沒什麼大不了的,因為
- 故障轉移不會經常發生(通常),
- 您可以為此使用方便的工具 (
pg_basebackup
),- 根據兩個節點之間的複制沒有工作多長時間以及在此期間向數據庫寫入/刪除了多少數據,
PostgreSQL
將在故障節點恢復執行後自動處理此問題。如果您實施這種方法,我建議(自動)監視複製狀態和一些細節,例如 via
postgres -c "psql -c \"SELECT application_name, client_addr, client_hostname, sync_state, state, sync_priority, replay_location FROM pg_stat_replication;\""
,它給出了類似於application_name | client_addr | client_hostname | sync_state | state | sync_priority | replay_location --------------------+-------------+-----------------+------------+-----------+---------------+----------------- node2.example.com | 10.0.15.21 | | sync | streaming | 0 | 0/40000C8
所以你會得到通知,如果事情變得可疑。
- 披露:大約兩年以來,我一直在生產中使用它。
**編輯:**儘管本教程使用的是 Fedora 19,但它可能對您也有幫助和幫助。