目录

简介

先决条件

要求

使用的组件

配置

第1部分：证书创建

第2部分：呼叫网桥配置

网络图

验证

故障排除

相关信息

简介

本文档介绍在思科会议服务器(CMS)或Acano呼叫网桥(CB)上配置数据库(DB)集群的步骤。

先决条件

要求

- 思科建议您至少拥有3个CMS节点，以便能够创建可行的数据库群集

注意：建议使用奇数的DB群集节点，因为它对主节点选择和主用故障转移机制非常重要。另一个原因是主DB节点是与群集中大多数DB有连接的节点。在DB集群中，最多可以有5个节点。

- 在防火墙上打开的端口5432

注意：DB集群主用设备在端口5432上侦听来自客户端节点的连接，因此，如果节点之间有防火墙(FW)，请确保此端口已打开。

使用的组件

本文档不限于特定的软件和硬件版本。

本文档中的信息都是基于特定实验室环境中的设备编写的。本文档中使用的所有设备最初均采用原始（默认）配置。如果您的网络处于活动状态，请确保您了解所有命令的潜在影响。

配置

DB集群有两种类型的证书：

1.客户：DB客户端使用客户端证书（名称表示）连接到DB服务器（主服务器）。 此证书必须在其公用名(CN)字段中包含字符串postgres。

2.服务器：DB服务器使用名称sugst的服务器证书连接到postgres DB。

第1部分：证书创建

1.使用安全外壳(SSH)连接服务器MMP，并提供管理员凭证。

2.生成证书签名请求(CSR):

a.对于数据库集群客户端证书：

pki csr <key/cert basename> CN:postgres

例如：pki csr databasecluster_client CN:postgres

b.对于数据库集群服务器证书：

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

例如： pki csr databasecluster_server CN:vngtpres.aca

3.将CSR发送至您的证书颁发机构(CA)，使其签名。确保CA为您提供根CA（和任何中间CA）证书。

4.使用安全文件传输协议(SFTP)客户端（例如WinSCP）将签名证书、根CA（和任何中间CA）证书上传到所有数据库节点。

注意：第A部分的CN必须是postgres，第B部分可以是呼叫网桥的域名，无需主题备用名(SAN)条目。

第2部分：呼叫网桥配置

在运行主数据库的CB上，请执行以下步骤：

1.要选择要使用的接口，请输入命令：

数据库群集本地节点

这使接口“a”可用于数据库集群。

2.使用以下命令定义客户端、服务器和根CA证书以及DB群集要使用的私钥：

数据库集群证书<client_key> <client_crt> <ca_crt>

数据库群集证书<server_key> <server_crt> <client_key> <client_crt> <ca_crt>

注意：当将私钥和证书复制到其他节点时，相同的客户端和服务器证书可用于要群集的其他CB节点。这是可能的，因为证书不包含将其绑定到特定呼叫网桥的SAN。但是，建议为每个数据库节点使用单个证书。

3.在本地CB上将此数据库初始化为此数据库群集的主数据库：

数据库集群初始化

4.在CallBridges上，在完成第2部分的步骤1和2后，将作为集群数据库的一部分并成为数据库从服务器的CallBridges运行以下命令：

数据库集群加入<主CB IP地址>

例如：数据库集群加入<10.48.36.61>

这将启动数据库同步并从主对等体复制数据库。

注意：在启动数据库集群加入命令之前存在的本地数据库继续存在，直到从集群数据库中删除节点。只要节点在DB集群中，就不使用其本地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.后跟此命令以升级数据库架构：

数据库集群升级模式

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上打开捕获文件，在端口5432上使用tcp.port==5432进行过滤，以检查非主对等体与DB主设备之间的流量。

4.如果没有来自服务器的返回流量，则FW可能会阻塞两个服务器逻辑位置之间的端口。

以下是客户端和服务器之间工作连接中的典型数据包捕获：

在本例中，客户端的IP为10.48.54.119，服务器为10.48.54.75。

相关信息

有关如何排除问题以及有关数据库群集的其他问题的详细信息，请参阅以下链接中的常见问题：

- 当对数据库服务器进行群集时，为什么我需要将它们放置在不同的位置

- 我们有一个数据库群集，我在日志中看到数据库错误或警告。我该做什么

- 一个或多个数据库服务器未连接或处于“同步”状态。我该做什么

- 如果没有主数据库，我该怎么办

- 如何移动主数据库

- 技术支持和文档 - Cisco Systems