Introdução
Este documento descreve as etapas para configurar o agrupamento do banco de dados (DB) no Cisco Meeting Server (CMS) ou nas pontes de chamada Acano (CB).
Pré-requisitos
Requisitos
- A Cisco recomenda que você tenha pelo menos 3 nós CMS para poder criar um cluster DB viável
Note: É recomendável ter um número ímpar de nós de cluster de BD, pois isso é importante para a seleção principal e para o mecanismo de failover ativo. Outra razão para isso é que o nó de BD principal seria o nó que tem conexões com a maior parte do BD no cluster. Apenas 3 nós podem ser adicionados a um cluster de banco de dados e qualquer outro servidor pode ser adicionado ao cluster usando o comando database cluster connect.
- Porta 5432 aberta no firewall
Observação: o nó Primário do cluster de BD escuta na porta 5432 em busca de conexões dos nós de Réplica; portanto, se houver um firewall (FW) entre os nós, verifique se essa porta está aberta.
Componentes Utilizados
Este documento não se restringe a versões de software e hardware específicas.
As informações neste documento foram criadas a partir de dispositivos em um ambiente de laboratório específico. Todos os dispositivos utilizados neste documento foram iniciados com uma configuração (padrão) inicial. Se a rede estiver ativa, certifique-se de que você entenda o impacto potencial de qualquer comando.
Configurar
Há dois tipos de certificados para o cluster do BD:
1. Cliente: O certificado do cliente, como o nome sugerido, é usado pelos clientes do BD para se conectar ao servidor do BD (primário). Este certificado deve conter a sequência de caracteres, postgres, em seu campo Nome comum (CN).
2. Servidor: O certificado do servidor, como o nome sugerido, é usado pelo servidor de BD para se conectar ao BD postgres.
Parte 1. Criação do certificado
1. Conecte-se com um Secure Shell (SSH) com as credenciais de administrador ao MMP do servidor.
2. Gerar CSR (Certificate Signing Request, Solicitação de Assinatura de Certificado):
a. Para o certificado de cliente de cluster de banco de dados:
pki csr <nome de base chave/certificado> CN:postgres
Por exemplo: pki csr databasecluster_client CN:postgres
b. Para o certificado do servidor de cluster de banco de dados:
pki csr <key/cert basename> CN:<domainname>
Por exemplo: pki csr databasecluster_server CN:vngtpres.aca
3. Envie os CSRs à sua autoridade de certificação (CA) para que eles sejam assinados. Certifique-se de que a CA forneça a você os certificados de CA raiz (e qualquer CA intermediária).
4. Carregue os certificados assinados, a CA raiz (e qualquer CA intermediária) em todos os nós de BD usando um cliente SFTP (Secure File Transfer Protocol) (por exemplo, WinSCP).
Note: O CN para a Parte A deve ser postgres e a Parte B pode ser o nome de domínio da ponte de chamada, não são necessárias entradas de Nome alternativo do assunto (SAN).
Parte 2. Configuração da Call Bridge
No CB que executa o BD principal, siga estas etapas:
1. Para selecionar a interface a ser usada, insira o comando:
cluster de banco de dados localnode a
Isso permite que a interface "a" seja usada para o cluster de BD.
2. Defina os certificados do cliente, do servidor e da autoridade de certificação raiz, bem como as chaves privadas a serem usadas pelo cluster de BD com estes comandos:
certificados de cluster de banco de dados <client_key> <client_crt> <ca_crt>
certificados de cluster de banco de dados <server_key> <server_crt> <client_key> <client_crt> <ca_crt>
Note: Os mesmos certificados de cliente e servidor podem ser usados em outros nós CB a serem agrupados quando você copia as chaves privadas e os certificados para os outros nós. Isso é possível porque os certificados não contêm SAN que os vincule a uma ponte de chamada específica. No entanto, é recomendável ter certificados individuais para cada nó de BD.
3. Inicialize este BD no CB local como o principal deste cluster de BD:
inicialização de cluster de banco de dados
4. Nas CallBridges que fariam parte do BD clusterizado e se tornariam a réplica de BD, execute este comando depois de concluir as Etapas 1 e 2 para a Parte 2:
junção de cluster de banco de dados <Endereço IP do CB primário>
Por exemplo: junção de cluster de banco de dados <10.48.36.61>

Isso inicia a sincronização do banco de dados e copia o banco de dados do par primário.
Note: O BD local que existia antes do comando database cluster join será substituído e, portanto, seu conteúdo será excluído.
Diagrama de Rede

Verificar
Use esta seção para confirmar se a sua configuração funciona corretamente.
Para verificar o status do BD clusterizado, execute este comando em qualquer um dos nós do cluster de BD:
status de cluster de banco de dados
A saída é semelhante a:
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)
Troubleshooting
Esta seção disponibiliza informações para a solução de problemas de configuração.
Use este comando, na CLI, para exibir os logs atuais relacionados ao cluster de BD:
acompanhamento de syslog
As saídas de log para o DB normalmente contêm a sequência de caracteres postgres, como a seguir:
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
Aqui estão alguns problemas e soluções típicos de BD:
Problema: Erro de esquema de banco de dados em um par não primário
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)
Solução:
1. Primeiro, execute este comando para limpar o erro:
erro de limpeza de cluster de banco de dados
2. Seguido por este comando para atualizar o esquema DB:
esquema_de_atualização de cluster de banco de dados
3. Em seguida, verifique o status do cluster DB com:
status de cluster de banco de dados
Os registros mostram uma saída semelhante a esta:
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
Problema: Os nós pares não podem se conectar ao nó primário do banco de dados
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?|
Solução:
Use estas etapas para coletar rastreamentos para solucionar problemas de conexão:
1. Execute o comando pcap <interface> no nó não primário (réplica) e, após alguns minutos, interrompa a captura com Ctrl-C.
2. Conecte-se com um cliente SFTP (Secure File Transfer Protocol) ao servidor e baixe o arquivo .pcap do diretório raiz:

3. Abra o arquivo de captura no Wireshark e filtre na porta 5432 com tcp.port==5432 para verificar o tráfego entre o peer não primário e o DB primário.
4. Se não houver tráfego de retorno do servidor, é provável que um FW possa estar bloqueando a porta entre o local lógico dos dois servidores.
Aqui está uma captura de pacote típica de uma conexão em funcionamento entre o cliente e o servidor:
Neste exemplo, o IP do cliente é 10.48.54.119 e o servidor é 10.48.54.75.

Informações Relacionadas
Para obter mais informações sobre como solucionar problemas e outras perguntas sobre o cluster de banco de dados, consulte as perguntas frequentes nestes links: