简介
本文档介绍在思科会议服务器(CMS)或Acano呼叫网桥(CB)上配置数据库(DB)集群的步骤。
先决条件
要求
- Cisco建议您至少有3个CMS节点才能创建可行的数据库集群
注意:建议数据库群集节点的数量为奇数,因为这对主选择以及主用故障转移机制非常重要。另一个原因是主数据库节点是连接到群集中大部分数据库的节点。只有3个节点可以加入数据库群集,并且任何其他服务器都可以使用database cluster connect命令添加到群集中。
注意:数据库集群主节点在端口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)证书上传到所有DB节点。
注意:部分A的CN必须是明信片,部分B可以是呼叫网桥的域名,不需要主题备用名(SAN)条目。
第2部分:呼叫网桥配置
在运行主数据库的CB上,请执行以下步骤:
1.要选择要使用的接口,请输入命令:
数据库集群localnode a
这样接口“a”就可用于DB群集。
2.使用以下命令定义客户端、服务器和根ca证书以及数据库集群要使用的私钥:
database cluster certs <client_key> <client_crt> <ca_crt>
database cluster certs <server_key> <server_crt> <client_key> <client_crt> <ca_crt>
注意:将私钥和证书复制到其他节点时,相同的客户端和服务器证书可用于要集群的其他CB节点。这是可能的,因为证书不包含将证书绑定到特定呼叫网桥的SAN。但是,建议为每个数据库节点设置单独的证书。
3.在本地CB上初始化此数据库作为此数据库群集的主数据库:
数据库群集初始化
4.在将成为集群数据库的一部分并成为数据库副本的CallBridges上,完成第2部分的步骤1和2后,请运行以下命令:
数据库集群联接
例如:数据库群集联合<10.48.36.61>

这将启动DB同步并从主对等体复制数据库。
注意:database cluster join命令被覆盖之前存在的本地数据库,因此其内容将被删除。
网络图

验证
使用本部分可确认配置能否正常运行。
要检查群集数据库的状态,请在数据库群集中的任何节点上运行此命令:
数据库集群状态
输出类似于:
Status : Enabled
Nodes:
10.48.36.61 : Connected Primary
10.48.36.118 : Connected Replica ( In Sync )
10.48.36.182 (me) : Connected Replica ( 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上使用此命令查看与DB集群相关的当前日志:
系统日志跟踪
数据库的日志输出通常包含postgres字符串,示例如下:
Mar 30 12:39:04 local0.warning ClusterCore1 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 ClusterCore1 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 ClusterCore1 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 ClusterCore1 postgres[20882]: [2-10] #011PL/pgSQL function create_matching_domain(uuid,text,uuid,integer,integer,text) line 3 at SQL statement
以下是一些典型的数据库问题和解决方案:
问题:非主对等体上的DB架构错误
ERROR : Couldn't upgrade the schema
Status : Error
Nodes:
10.48.54.75 : Connected Primary
10.48.54.76 : Connected Replica ( In Sync )
10.48.54.119 (me) : Connected Replica ( 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.首先,运行此命令以清除错误:
数据库集群clear error
2.然后使用此命令来升级数据库架构:
数据库集群升级方案
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。

相关信息
有关如何解决问题以及关于数据库集群的其他问题的详细信息,请参阅以下链接中的常见问题解答: