Introduction
This document describes how to configure an Extensible Messaging and Presence Protocol (XMPP) Cluster for Cisco Meeting Server (CMS) step by step.
Contributed by Amadeus Ubaldo and Octavio Miralrio, Cisco TAC Engineers.
Prerequisites
Requirements
Cisco recommends that you have knowledge of these topics:
- CMS general configuration
- Secure Shell (SSH) client
- Secure File Transfer Protocol (SFTP) client
- Domain Name System (DNS) server
Components Used
The information in this document is based on these software and hardware versions:
- CMS version 2.9.2
- Putty (SSH client)
- Windows Secure Copy (winSCP) client
The information in this document was created from the devices in a specific lab environment. All of the devices used in this document started with a cleared (default) configuration. If your network is live, ensure that you understand the potential impact of any command.
Configure
Network Diagram


Configurations
XMPP cluster configuration.
Step 1. In case any node has previously been configured for XMPP, reset the XMPP configuration on every node, run the next command:
xmpp reset
Step 2. Assign the XMPP domain to be used, run the next command:
xmpp domain <domain-name>

Step 3. Setup the interfaces for the XMPP server to listen on, run the next command:
xmpp listen <interface allowed list>

Step 4. Create a new Certificate Signing Request (CSR) for the XMPP service. To avoid client certificate errors, ensure that CSR specifies the next:
- The DNS record created for XMPP is contained within the Common Name (CN) field or in the Subject Alternative Name (SAN) field
- XMPP server’s domain name contained in the SAN field
In order to create the CSR, run the next command:
pki csr xmppserver CN:xmpp.example.com subjectAltName: example.com

Step 5. Sign the CSR with the Certificate Authority (CA) of your preference.
Step 6. When the certificate is already signed, submit the file to the CMS via SFTP client of your preference.
Step 7. Assign the private key, the signed certificate and certificate bundle as provided by your CA. Run the next command:
xmpp certs <keyfile> <certificatefile> <cert-bundle>

Step 8. Repeat steps from 2 to 7 on the rest of the CMS servers you want to merge in the XMPP cluster.
Step 9. A certificate bundle needs to be created with all the XMPP certificates for each server. There are 3 different options:
- Linux or UNIX-like Operating Systems:
cat xmppserverl.crt xmppserver2.crt xmppserver3.crt > xmpp-cluster-allowed-list.crt
copy xmppserverl.crt + xmppserver2.crt + xmppserver3.crt xmpp-cluster-allowed-list.crt
- Manually combine the certificates with a text editor. Consider there must be no spaces on the certificate’s END CERTIFICATE line and the next BEGIN CERTIFICATE line, but there MUST be a carriage return at the end of the file. They must also be in Base64 encoded format:

Step 10. Upload the new xmpp bundle certificate into every CMS server, use the SFTP of your preference, as shown in the image:

Step 11. On every node, assign the recent uploaded certificate bundle, run the next command:
xmpp cluster trust xmpp-allow-bundle.crt

Step 12. Enable clustering on one of the XMPP cluster nodes, run the next command:
xmpp enable

Step 13. Configure the Callbridges intended to connect with the XMPP cluster, run the next command:
xmpp Callbridge add <Callbridge name>

Note: Copy the information displayed since this information is required on further steps. If you did not copy the displayed information, you can see the information generated with the next command: xmpp callbridge list

Step 14. Repeat step 13 in order to add the rest of the Callbridges, as shown in the image:

Step 15. In order to enable the XMPP cluster, the XMPP service must be disabled first, Run the next command:
xmpp disable

Step 16. Enable XMPP cluster on this node, run the next command:
xmpp cluster enable

Step 17. Initialize the XMPP cluster on this node. This creates a 1 node XMPP cluster, the rest of the peers are configured on further steps, run the next command:
xmpp cluster initialize

Step 18. Enable the XMPP service, run the next command:
xmpp enable

Step 19. Get the IP address of this node, in order to check the IP address, run the next command:
xmpp cluster status

Step 20. In order to add the next nodes to the cluster, Callbridge information must be added to every node first. Follow the Steps 21 to 27 on every node part of the XMPP cluster.
Step 21. Enable XMPP services, run the next command:
xmpp enable

Step 22. Add every Callbridge to this node. This requires to add the Callbridge with the same Callbridge name and secret from the first XMPP node, run the next command:
Xmpp Callbridge add-secret <Callbridge name>
****
Enter Callbridge secret

Step 23. Repeat step 22 for all the Callbridges, as shown in the image:

Step 24. Disable the XMPP service, run the next command:
xmpp disable

Step 25. Enable XMPP cluster, run the next command:
xmpp cluster enable

Step 26. Enable XMPP service, run the next command:
xmpp enable

Step 27. Join this node to the XMPP server configured on Step 17, run the next command:
xmpp cluster join <xmpp_server_IP>

Add trusted information to Callbridges.
Step 1. Open the Webadmin Interface of the CMS that host Callbridge.
Step 2. Navigate to Configuration > General and enter the next values:
- Unique Call Bridge name: Enter the unique callbridge name as configured over Command Line Interface (CLI), no domain portion is required
- Domain: Enter the XMPP domain
- Server address: This is optional, if this field is left blank, this allows XMPP failover, this requires the DNS records for XMPP component already configured
- Shared secret: Enter the secret for the corresponding Callbridge, as shown in the image
- Confirm shared secret: Confirm the secret
Note: For DNS configuration please refer to CMS Coniguraftion guide.

Step 3. Select Submit.
Step 4. Repeat Steps 1 to 3 on the rest of the CMS servers that host Callbridge services, as shown in the next images:


Verify
Open the CLI from any of the CMS servers, and validate the XMPP cluster status, run the next command:
xmpp cluster status
