简介
本文档介绍在思科会议服务器(CMS)或Acano呼叫网桥(CB)上配置数据库(DB)集群的步骤。
先决条件
要求
- 思科建议您至少拥有3个CMS节点,以便能够创建可行的数据库群集
注意:建议使用奇数的DB群集节点,因为它对主节点选择和主用故障转移机制非常重要。另一个原因是主DB节点是与群集中大多数DB有连接的节点。在DB集群中,最多可以有5个节点。
注意: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。
相关信息
有关如何排除问题以及有关数据库群集的其他问题的详细信息,请参阅以下链接中的常见问题: