ในบทความนี้แสดงวิธีการคอนฟิก Database cluster ของ Cisco Meeting Server (CMS) โดยจะแยก CMS 1 ตัว ออกมาทำหน้าที่เป็น Database Server เพื่อในตอนที่มีการประชุมเกิดขึ้นเยอะๆ แต่ละ Component บน CMS จะได้ทำงานแยกกันอย่างชัดเชน และประสิทธิภาพการทำงานก็จะดีกว่าการใช้งาน Service ทั้งหมดอยู่บน CMS ตัวเดียวด้วยครับ โดย Database ที่เราจะนำมาทำ Cluster กัน มีได้สูงสุด 5 Server และต้องเป็นจำนวนคี่เท่านั้น เช่น 3 Node หรือ 5 Node
ในบทความมี CMS ทั้งหมด 3 ตัว ตัวที่ 1,2 จะทำหน้าที่เป็น Call bridge และเป็น Database client และ CMS03 จะทำหน้าที่เป็น Database Server
Step 1 : Generate Certificate Signing Request (CSR) สำหรับ Database client โดยเข้าไปที่ CMS ตัวที่เราจะให้เป็น Master (ทำแค่ตัวเดียว ตัวอื่นๆ เราค่อย Copy File เดียวกันไปใช้)
** Common Name (CN) ของ DB client ต้องเป็น postgres นะครับ
pki csr <key/cert basename> CN:postgres
pki csr DBClient CN:postgres
Step 2 : Generate CSR สำหรับ Database Server
pki csr <key/cert basename> CN:<server1.domain.com> subjectAltName: <server2.domain.com,server3.domain.com>
pki csr DBSrerver CN:cms03.dd.go.th subjectAltName:cms01.dd.go.th,cms02.dd.go.th
Step 3 : ตรวจสอบไฟล์ ที่เราได้จากการ Generate จะมีไฟล์ทั้งหมด 4 ไฟล์
DBServer.csr
DBServer.key
DBClient.csr
DBClient.key
Step 5 : Access CMS ผ่าน SFTP และทำการดาวโหลดไฟล์ .CSR ทั้งสองไฟล์ ออกมา เพื่อทำงาน Sign โดยไฟล์ที่ได้จะเป็น Fomat certificate file เช่น .crt .cer .pem
** วิธีการ Sing โดยใช้ Open SSL https://www.ablenet.co.th/2019/02/18/certswithopenssl/
หรือจะ Sign โดยใช้ Windows Server ก็ได้ครับ
Step 6 : Copy File .key , .crt และไฟล์ของ Root Cert ไปยัง CMS01, CMS02
Step 7 : Initialize Database Server
เข้าไปที่ CMS03 ผ่าน CLI หรือ SSH เข้าไป จากนั้น พิมพ์คำสั่งดังนี้
database cluster certs <server.key> <server.cer> <client.key> <client.cer> <ca.crt>
database cluster certs DBServer.key DBServer.crt DBClient.key DBClient.crt cacert.crt
database cluster localnode a
database cluster initialize -> ในขั้นตอนนี้ กด Y เพื่อ Accept warning
Step 8 : ตรวจสอบสถานะ Database หาก Initailize สำเร็จ จะอยู่ในสถานะ Connected primary
CMS03> database cluster status
Status : Enabled
Nodes:
10.0.0.33 (me) : Connected Primary
Node in use : 10.0.0.33
Interface : a
Certificates
Server Key : DBServer.key
Server Certificate : DBServer.crt
Client Key : DBClient.key
Client Certificate : DBClient.crt
CA Certificate : cacert.crt
Last command : 'database cluster initialize' (Success)
Step 9 : เอา CMS01, CMS02 มา Join Database Server โดยใช้คำสั่งดังนี้ (Copy File ใน Step ที่ 6 ก่อน)
ตรวจสอบไฟล์ Certificate โดยใช้คำสั่ง pki list
CMS02> pki list
User supplied certificates and keys:
DBClient.crt
DBClient.key
DBServer.crt
DBServer.key
cacert.crt
ใช้คำสั่ง Join Cluster ดังนี้
database cluster certs DBServer.key DBServer.crt DBClient.key DBClient.crt cacert.crt
database cluster localnode a
database cluster join 10.0.0.33 -> กด Y เพื่อ Accept warning
Step 10 : Verify โดยใช้คำสั่ง database cluster status
CMS01> database cluster status
Status : Enabled
Nodes:
10.0.0.33 : Connected Primary
10.0.0.31 (me) : Connected Replica ( In Sync )
10.0.0.32 : Connected Replica ( In Sync )
Node in use : 10.0.0.33
Interface : a
Certificates
Server Key : DBServer.key
Server Certificate : DBServer.crt
Client Key : DBClient.key
Client Certificate : DBClient.crt
CA Certificate : cacert.crt
Last command : 'database cluster join 10.0.0.33' (Success)
CMS02> database cluster status
Status : Enabled
Nodes:
10.0.0.33 : Connected Primary
10.0.0.31 : Connected Replica ( In Sync )
10.0.0.32 (me) : Connected Replica ( In Sync )
Node in use : 10.0.0.33
Interface : a
Certificates
Server Key : DBServer.key
Server Certificate : DBServer.crt
Client Key : DBClient.key
Client Certificate : DBClient.crt
CA Certificate : cacert.crt
Last command : 'database cluster join 10.0.0.33' (Success)
เรียบร้อยครับ เมื่อ Database Cluster กันเรียบร้อย ข้อมูลคอนฟิกต่างๆ ก็จะ Sync หากันโดยอัตโนมัติ และเมื่อต้องการแก้ไขค่า สามารถเข้าไปจัดได้ที่ CMS ตัวใด ตัวหนึ่งได้เลยครับ