소개
이 문서에서는 CMS(Cisco Meeting Server) 또는 CB(Acano Call Bridge)에서 데이터베이스(DB) 클러스터링을 구성하는 단계에 대해 설명합니다.
사전 요구 사항
요구 사항
- Cisco에서는 실행 가능한 DB 클러스터를 생성할 수 있도록 최소 3개의 CMS 노드가 있는 것을 권장합니다
참고: 기본 선택 및 활성 장애 조치 메커니즘에서 중요하므로 홀수 개수의 DB 클러스터 노드를 사용하는 것이 좋습니다. 또 다른 이유는 기본 DB 노드가 클러스터의 대부분의 DB에 대한 연결이 있는 노드이기 때문입니다. 3개의 노드만 데이터베이스 클러스터에 가입할 수 있으며, database cluster connect 명령을 사용하여 모든 추가 서버를 클러스터에 추가할 수 있습니다.
참고: DB 클러스터 기본 노드는 복제 노드의 연결을 포트 5432에서 수신 대기하므로 노드 사이에 방화벽(FW)이 있는 경우 이 포트가 열려 있는지 확인합니다.
사용되는 구성 요소
이 문서는 특정 소프트웨어 및 하드웨어 버전으로 한정되지 않습니다.
이 문서의 정보는 특정 랩 환경의 디바이스를 토대로 작성되었습니다. 이 문서에 사용된 모든 디바이스는 초기화된(기본) 컨피그레이션으로 시작되었습니다. 현재 네트워크가 작동 중인 경우 모든 명령의 잠재적인 영향을 미리 숙지하시기 바랍니다.
구성
DB 클러스터링에는 두 가지 유형의 인증서가 있습니다.
1. 고객 이름이 sugest인 클라이언트 인증서는 DB 클라이언트에서 DB 서버(기본)에 연결하는 데 사용됩니다. 이 인증서는 CN(Common Name) 필드에 postgres 문자열을 포함해야 합니다.
2. 서버 이름이 sugest인 서버 인증서는 DB 서버에서 postgres DB에 연결하는 데 사용됩니다.
1부. 인증서 생성
1. 관리자 자격 증명으로 SSH(Secure Shell)를 사용하여 서버 MMP에 연결합니다.
2. CSR(Certificate Signing Request) 생성
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(Central Authority)에 CSR을 보냅니다. CA가 루트 CA(및 중간 CA) 인증서를 제공하는지 확인합니다.
4. 서명된 인증서, 루트 CA(및 중간 CA) 인증서를 SFTP(Secure File Transfer Protocol) 클라이언트(예: WinSCP)를 사용하여 모든 DB 노드에 업로드합니다.
참고: 부품 A의 CN은 postgres여야 하며 부품 B는 통화 브리지의 도메인 이름일 수 있습니다. SAN(주체 대체 이름) 항목은 필요하지 않습니다.
2부. 통화 브리지 컨피그레이션
기본 DB를 실행하는 CB에서 다음 단계를 수행합니다.
1. 사용할 인터페이스를 선택하려면 다음 명령을 입력합니다.
데이터베이스 클러스터 localnode a
이렇게 하면 인터페이스 "a"를 DB 클러스터링에 사용할 수 있습니다.
2. 클라이언트, 서버 및 루트 ca 인증서와 다음 명령을 사용하여 DB 클러스터에서 사용할 개인 키를 정의합니다.
데이터베이스 클러스터 인증서 <client_key> <client_crt> <ca_crt>
데이터베이스 클러스터 인증서 <server_key> <server_crt> <client_key> <client_crt> <ca_crt>
참고: 다른 노드에 개인 키 및 인증서를 복사할 때 클러스터링할 다른 CB 노드에서도 동일한 클라이언트 및 서버 인증서를 사용할 수 있습니다. 이는 인증서가 특정 통화 브리지에 연결하는 SAN을 포함하지 않기 때문에 가능합니다. 그러나 각 DB 노드에 대해 개별 인증서를 갖는 것이 좋습니다.
3. 로컬 CB에서 이 DB를 이 DB 클러스터의 기본으로 초기화합니다.
데이터베이스 클러스터 초기화
4. 클러스터링된 DB의 일부가 되고 DB 복제본이 되는 CallBridge에서 2부에 대해 단계 1과 2를 완료한 후 이 명령을 실행합니다.
데이터베이스 클러스터 조인 <기본 CB IP 주소>
예를 들면 다음과 같습니다. 데이터베이스 클러스터 조인 <10.48.36.61>

이렇게 하면 DB 동기화가 시작되고 기본 피어에서 DB가 복사됩니다.
참고: 데이터베이스 클러스터 join 명령 이전에 존재했던 로컬 DB를 덮어쓰므로 해당 내용이 삭제됩니다.
네트워크 다이어그램

다음을 확인합니다.
설정이 올바르게 작동하는지 확인하려면 이 섹션을 활용하십시오.
클러스터링된 DB 상태를 확인하려면 DB 클러스터의 노드에서 다음 명령을 실행합니다.
데이터베이스 클러스터 상태
출력은 다음과 유사합니다.
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 클러스터링과 관련된 현재 로그를 볼 수 있습니다.
syslog 팔로우
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 문제 및 솔루션입니다.
문제/장애: 주 피어가 아닌 피어에서 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. 먼저 다음 명령을 실행하여 오류를 지웁니다.
데이터베이스 클러스터 지우기 오류
2. 다음 명령을 사용하여 DB 스키마를 업그레이드합니다.
데이터베이스 클러스터 업그레이드_스키마
3. 다음으로 DB 클러스터링 상태를 확인합니다.
데이터베이스 클러스터 상태
로그에는 다음과 유사한 출력이 표시됩니다.
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
문제/장애: 피어 노드가 DB 기본 노드에 연결할 수 없습니다.
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(Secure File Transfer Protocol) 클라이언트를 서버에 연결하고 루트 디렉토리에서 .pcap 파일을 다운로드합니다.

3. Wireshark에서 캡처 파일을 열고 tcp.port==5432를 사용하여 포트 5432에서 필터링하여 주 피어와 DB 주 피어 간의 트래픽을 확인합니다.
4. 서버에서 반환 트래픽이 없는 경우 FW가 두 서버의 논리적 위치 사이의 포트를 차단할 수 있습니다.
클라이언트와 서버 간의 작동 연결에서 일반적인 패킷 캡처는 다음과 같습니다.
이 예에서 클라이언트 IP는 10.48.54.119이고 서버는 10.48.54.75입니다.

관련 정보
데이터베이스 클러스터링에 대한 문제 및 기타 질문을 해결하는 방법에 대한 자세한 내용은 다음 링크의 FAQ를 참조하십시오.