Following are the solution setup prerequisites.
For HA deployment, we will be using two VMs, each machine in the cluster should have the following hardware specifications. The twoVMs will be referred by VM1 and VM2 in this guide.
4 cores on each VM
4 GB on each VM
300 GB on VM
1 NIC per VM
MS SQL Server (2)
On this page
Internet should be available on the machine where the application is being installed and connections on port 9242 should be allowed in the network firewall to carry out the installation steps. All the commands start with a # indicating that root user privileges are required to execute these commands. Trailing # is not a part of the command.
Allow ports in the firewall
To start the firewall on CentOS (if it isn't started already), execute the following commands:
To allow the ports on CentOS firewall, you can execute the following commands. You'll have to execute these commands on all the cluster machines.
Add the following lines in
/etc/docker/daemon.json file (create the file if not there already) and restart the docker daemon using
systemctl restart docker. Perform this step on all the machines in the cluster..
- Download the deployment script deployment.sh and place it in the user home or any desired directory. This script will:
- delete the recording-solution directory if it exists.
- clone the required files for deployment
To execute the script, give it the execute permissions and execute it.
Change to newly created directory with name recording-solution. This directory contains all the required files.
- Run SQL script in MySQL to create database and tables. (recording-solution/db_schema.sql).
Update environment variables in the following files inside
VRS database connection URL
CC_TYPE Cisco Contact center type (UCCX or UCCE) TZ Timezone (Asia/Karachi) ENCRYPTION_ENABLED
To enable/disable recorded file encryption
true = enabled
false = disabled
AMQ_PRIMARY Primary ActiveMQ URL, (VRS machine IP)
AMQ_SECONDARY Secondary ActiveMQ URL, Keep it same as primary if ActiveMQ not available in HA AMQ_TIMEOUT 3000, keep it same AMQ_RANDOMIZE false, keep it same AMQ_PRIORITY_BACKUP true, keep it same LOCAL_MACHINE_IP VRS machine IP CUCM IP Cisco Call Manager IP CUCM_APPLICATION_USER_NAME CUCM Application user's username created in step 6. CUCM_APPLICATION_USER_PASSWORD CUCM Application user's password created in step 6. TIME_CUSHION The number of seconds to add to the start and end time of call when calling API from CIM. There are few seconds difference between CIM interaction's start and end time and recording solution start and end time since CIM fetch interactions from Finesse while recording solution gets time from CUCM MAX_RING_TIME Maximum Call ring time on agent desktop, default is 30 seconds CALL_TIMEOUT Socket timeout for recording rtp packets, set it to 10 THREAD_TIME Interval in seconds between two jobs that clears completed calls, set it 10 FILE_EXTENSION Extension that archival file will look for file to archive. Set it to "wav" DIRECTORY_PATH_TO_MONITOR This and following 9 variables are used for the archival process. This variable will hold the path of the recording ARCHIVED_MEDIA_FILES_EXTENSION The archival process will archive recordings with this extension, set it to "wav" NO_OF_DAYS The number of days to keep recordings in the primary server. Recordings older than this value days will be archived SFTP_HOST SFTP hostname or IP SFTP_PORT SFTP port SFTP_USERNAME SFTP username SFTP_PASSWORD SFTP password ARCHIVAL_JOB_INTERVAL Archival process will run every this values seconds and archive any pending archival recordings RETRY_LIMIT Number of retries on pending archival recording folders ARCHIVE_PATH The shared path on the archival server where archival process archive recordings ARCHIVE_PATH_USER Archive path's machine user ARCHIVE_PATH_PASS Archive path's machine password ARCHIVAL_PROCESS_NODE
This variable value should be "active" on once machine and "passive" on second machine in HA.
"active" machine archival process will sent files to SFTP server and then delete. "passive" machine
process will only delete local file.
UCCE awdb database connection URL, used for UCCE deployment only.
Used for UCCX deployment only... UCCX_URL UCCX URL, used for fetching agent details,
UCCX_USERNAME UCCX user, should have privileges to fetch agents UCCX_PASSWORD UCCX user password ui-environment.env DB_IP VRS database machine IP DB_USER VRS database user DB_PASSWORD Database password DB_NAME Database name
Having environment configurations done, copy the recording-solution directory on VM2 in
/rootdirectory using the following command.
Execute the following commands inside /root/recording-solution directory.
Run the following command to ensure that all the components are up and running.
This will show services status as shown below image
Now go to VM2, update LOCAL_MACHINE_IP variable to VM2 IP in root/recording/solution/docker/environment variables/recorder-environment.env file and run below command inside /root/recording-solution to start recorder and activemq services. The two activemq services on VM1 and VM2 will now act as master/slave to provide HA. The two recorder services on VM1 and VM2 will be configured in Cisco Call Manager (CUCM) to provide HA.
- The directory "/root/recording-solution/recordings/wav" should also be mounted on network shared file system on both VMs or they should be synchronized with each other . In this way, all services on two VMs will have a shared directory for recording files reading or writing. Follow next step if network shared and synchronized folder is not provided
- Recording folder synchronization, follow below steps;
Install lyncd utility on one machine, run below commands.
Generate SSH Keys on same. Run below command to generate a key. Use default by pressing enter every time it prompts
Transfer the SSH key to the other other machine by running below commands, enter other machine root password when prompted
enter below text in config file, replace the Hostname with other machine IP
- Follow above steps for the other machine
Repeat the following steps on both machines.
- Download keepalived.sh script and place it in any directory.
Give execute permission and execute the script. This will create a keep-alived directory.
# chmod +x keepalived.sh
Configure keep.env file inside
IPs of the machines in the cluster. On each machine, this variable should have a list of IPs of all the other machines in the cluster. The format of the list is as below:
Virtual IP of the cluster. It should be available in the LAN. For example: 192.168.1.245
Priority of the node. Instance with lower number will have a higher priority. It can take any value from 1-255.
Name of the network interface with which your machine is connected to the network. On CentOS,
ip addr shwill show all the network interfaces and assigned addresses.
Corresponds to the initial startup time of the application in seconds which is being monitored by keepalived. A nominal value of 60-120 is good enough
Do not change this value.
This script is continuously polled after 2 seconds. Keepalived relinquishes control if this shell script returns a non-zero response. It could be either umm or ECM backend API.
pidof dockerd && wget -O index.html https://localhost:443/
Give the execute permission and execute the script:
# chmod +x keep-command.sh