目錄

簡介

必要條件

需求

採用元件

設定

第1部分。證書建立

第2部分。呼叫網橋配置

網路圖表

驗證

疑難排解

相關資訊

簡介

本文檔介紹在思科會議伺服器(CMS)或Acano呼叫網橋(CB)上配置資料庫(DB)集群的步驟。

必要條件

需求

- 思科建議您至少擁有3個CMS節點才能建立可行的資料庫群集

附註：建議資料庫群集節點的個數為奇數，因為這對主節點選擇和活動故障轉移機制非常重要。另一個原因是主資料庫節點是與群集中大部分資料庫具有連線的節點。資料庫群集中最多可以有5個節點。

- 埠5432在防火牆上開啟

註：資料庫集群主用裝置在埠5432上偵聽來自客戶端節點的連線，因此，如果節點之間存在防火牆(FW)，請確保開啟此埠。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

設定

DB集群有兩種型別的證書：

1.客戶端：名稱所建議的客戶端證書由資料庫客戶端用於連線到資料庫伺服器（主伺服器）。 此證書的Common Name(CN)欄位中必須包含字串postgres。

2.伺服器：伺服器證書（如名稱所示）由資料庫伺服器用於連線到postgres資料庫。

第1部分。證書建立

1.使用具有管理員憑據的安全外殼(SSH)連線到伺服器MMP。

2.生成證書簽名請求(CSR):

a.對於databasecluster客戶端證書：

pki csr <key/cert basename> CN:postgres

例如：pki csr databasecluster_client CN:postgres

b.對於databasecluster伺服器證書：

pki csr <key/cert basename> CN:<domainname>

例如：pki csr databasecluster_server CN:vngtpres.aca

3.將CSR傳送至您的中央授權(CA)以簽署CSR。請確保CA向您提供根CA（以及所有中間CA）憑證。

4.使用安全檔案傳輸通訊協定(SFTP)使用者端（例如WinSCP），將簽署的憑證、根CA（和任何中間CA）憑證上傳到所有資料庫節點。

附註：部分A的CN必須為postgres，部分B可以是呼叫網橋的域名，無需使用者替代名稱(SAN)條目。

第2部分。呼叫網橋配置

在執行主資料庫的CB上，請執行以下步驟：

1.要選擇要使用的介面，請輸入命令：

資料庫群集本地節點a

這樣，介面「a」便可用於資料庫群集。

2.使用以下命令定義客戶端、伺服器和根ca證書以及資料庫群集要使用的私鑰：

資料庫群集證書<client_key> <client_crt> <ca_crt>

database cluster certs <server_key> <server_crt> <client_key> <client_crt> <ca_crt>

附註：將私鑰和證書複製到其他節點時，可以在要群集的其他CB節點上使用相同的客戶端和伺服器證書。這是可行的，因為憑證中不包含將憑證連線到特定通話橋接器的SAN。但是，建議每個資料庫節點都有單獨的證書。

3.在本地CB上初始化此資料庫作為此資料庫群集的主資料庫：

資料庫群集初始化

4.在將成為集群資料庫的一部分並成為DB從屬的CallBridge上，完成第2部分的步驟1和2後運行此命令：

資料庫群集加入<主CB IP地址>

例如：資料庫群集加入<10.48.36.61>

這將啟動DB同步並從主對等體複製DB。

附註：在啟動資料庫cluster join命令之前存在的本地DB繼續存在，直到從群集DB中刪除該節點。只要節點位於資料庫集群中，就不會使用其本地資料庫。

網路圖表

驗證

使用本節內容，確認您的組態是否正常運作。

要檢查群集資料庫的狀態，請在資料庫群集中的任何節點上運行此命令：

資料庫群集狀態

輸出類似於：

Status                   : Enabled

Nodes:

10.48.36.61          : Connected Master

10.48.36.118         : Connected Slave ( In Sync )

10.48.36.182 (me)    : Connected Slave ( In Sync )

Node in use              : 10.48.36.61

Interface            : a

Certificates

Server Key           : dbclusterserver.key

Server Certificate   : dbclusterserver.cer

Client Key           : dbclusterclient.key

Client Certificate   : dbclusterclient.cer

CA Certificate       : vngtpRootca.cer

Last command             : 'database cluster join 10.48.36.61' (Success)

疑難排解

本節提供的資訊可用於對組態進行疑難排解。

在CLI上，使用以下命令檢視與資料庫群集相關的當前日誌：

系統日誌跟蹤

資料庫的日誌輸出通常包含postgres字串，示例如下：

Mar 30 12:39:04 local0.warning DBMaster postgres[20882]:  [2-7] #011SQL statement "INSERT INTO domains(domain_id, domain_name, tenant_id, target, priority, passcode_separator) VALUES (inp_domain_id, inp_domain_name, inp_tenant_id, existing_target, inp_priority, inp_passcode_separator)"

Mar 30 12:39:04 local0.warning DBMaster postgres[20882]:  [2-8] #011PL/pgSQL function create_or_update_matching_domain(boolean,uuid,text,boolean,uuid,integer,integer,integer,text) line 61 at SQL statement

Mar 30 12:39:04 local0.warning DBMaster postgres[20882]:  [2-9] #011SQL statement "SELECT * FROM create_or_update_matching_domain(TRUE, inp_domain_id, inp_domain_name, TRUE, inp_tenant_id, inp_target_true, 0, inp_priority, inp_passcode_separator)"

Mar 30 12:39:04 local0.warning DBMaster postgres[20882]:  [2-10] #011PL/pgSQL function create_matching_domain(uuid,text,uuid,integer,integer,text) line 3 at SQL statement

CMS日誌收集器提供了一個簡單且使用者友好的使用者介面(UI)，用於從CMS伺服器收集日誌。

以下是一些典型的資料庫問題和解決方案：

問題：非主對等體上的資料庫架構錯誤

ERROR                    : Couldn't upgrade the schema

Status                   : Error

Nodes:

10.48.54.75          : Connected Master

10.48.54.76          : Connected Slave ( In Sync )

10.48.54.119 (me)    : Connected Slave ( In Sync )

Node in use              : 10.48.54.75

Interface                : a

Certificates

Server Key             : dbclusterServer.key

Server Certificate     : dbserver.cer

Client Key             : dbclusterClient.key

Client Certificate     : dbclient.cer

CA Certificate         : Root.cer

Last command             : 'database cluster upgrade_schema' (Failed)

解決方案：

1.首先，運行此命令以清除錯誤：

資料庫群集清除錯誤

2.然後執行以下命令以升級資料庫架構：

資料庫群集upgrade_schema

3.然後使用以下命令檢查資料庫群集的狀態：

資料庫群集狀態

日誌顯示的輸出與以下內容類似：

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  Upgrading schema with connect line 'connect_timeout=4 user=postgres host=127.0.0.1 port=9899 sslmode=verify-ca sslcert=/srv/pgsql/client.crt sslkey=/srv/pgsql/client.key sslrootcert=/srv/pgsql/ca.crt '

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  Using database name 'cluster'

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  schema build on database cluster complete

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  Using CiscoSSL 1.0.1u.4.13.322-fips  (caps 0x4FABFFFF)

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  Using 0x1000115F

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  INFO    : Waiting for database cluster to settle...

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  INFO    : Database cluster settled

Mar 30 11:22:45 user.notice acanosrv05 schema_builder:  Schema upgrade complete

Mar 30 11:22:45 user.info acanosrv05 dbcluster_watcher:  Operation Complete

問題：對等節點無法連線到資料庫主節點

Mar 31 10:16:59 user.info acanosrv02 sfpool:  Health check 10.48.54.119: error (up = 1): could not connect to server: Connection refused|#011Is the server running on host "10.48.54.119" and accepting|#011TCP/IP connections on port 5432?|

解決方案：

使用以下步驟收集跟蹤以對連線問題進行故障排除：

1.  在非主（從）節點上運行命令pcap <interface>，幾分鐘後，使用Ctrl-C停止捕獲。

2.  使用安全檔案傳輸通訊協定(SFTP)使用者端連線到伺服器，並從根目錄下載.pcap檔案：

3.在Wireshark上開啟捕獲檔案，並使用tcp.port==5432在埠5432上過濾，以檢查非主對等體與資料庫主節點之間的流量。

4.如果伺服器沒有返回流量，則防火牆可能會阻塞兩台伺服器邏輯位置之間的埠。

以下是來自使用者端和伺服器之間有效連線的典型封包擷取：

在本示例中，客戶端的IP是10.48.54.119，伺服器是10.48.54.75。

相關資訊

有關如何解決問題以及其他有關資料庫群集問題的詳細資訊，請參閱以下連結中的常見問題解答：

- 當對資料庫伺服器進行群集時，為什麼需要將它們放在不同的位置

- 我們有一個資料庫群集，我在日誌中看到資料庫錯誤或警告。我該怎麼做

- 一個或多個資料庫伺服器未連線或處於「同步」狀態。我該怎麼做

- 如果沒有master資料庫，該怎麼做

- 如何移動主資料庫

- 技術支援與文件 - Cisco Systems