.Installation with Docker-compose v13.3
Installation Steps
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:
# systemctl enable firewalld
# systemctl start firewalldTo allow the ports on CentOS firewall, you can execute the following commands. (Run on both machines in case of HA).
# firewall-cmd --add-port=443/tcp --permanent
# firewall-cmd --add-port=8088/tcp --permanent
# firewall-cmd --add-port=5060/tcp --permanent
# firewall-cmd --add-port=16386-32768/udp --permanent
# firewall-cmd --add-port=9092/tcp --permanent
# firewall-cmd --reload
Installation Steps
Please make sure that Solution Prerequisites are met for the desired deployment type.
Download the deployment script 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.
$ chmod 755 deployment.sh $ ./deployment.shChange to newly created directory with name recording-solution. This directory contains all the required files.
Run SQL script in SQL Server to create database and tables. (recording-solution/db_schema.sql). Use the following command mysql -u root -p < db_schema_mysql.sql
Update environment variables in the following files inside
/root/recording-solution/docker/environment_variablesfolder.general-environment.env
Name
Description
DB_URL
VRS database connection URL
jdbc:jtds:sqlserver://192.168.1.92:1433/vrs;user=sa;password=Expertflow464DB_DRIVER
JDBC driver
net.sourceforge.jtds.jdbcx.JtdsDataSourceCC_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)
tcp://192.168.1.242:61616AMQ_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. (HA Only)
UCCE_DB_URL
UCCE awdb database connection URL, used for UCCE deployment only.
jdbc:jtds:sqlserver://192.168.1.87:1433/ucce_awdb;user=sa;password=Expertflow464Used for UCCX deployment only...
UCCX_URL
UCCX URL, used for fetching agent details,
https://192.168.1.101UCCX_USERNAME
UCCX user, should have privileges to fetch agents
UCCX_PASSWORD
UCCX user password
KEYCLOAK_USER
master username for Keycloak,
KEYCLOAK_PASSWORD
password for Keycloak user
DB_VENDOR
Keycloak database engine, keep it default
DB_USER
Keycloak database username
DB_PASSWORD
Keycloak database password
DB_ADDR
Keycloak database machine IP
DB_DATABASE
Database name created in step 7
Update below environment variables once Keycloak is setup in step 11
KEYCLOAK_REALM_NAME
Realm name created in step 11
KEYCLOAK_CLIENT_ID
Keycloak client id from step 11
KEYCLOAK_CLIENT_SECRET
Keycloak client secret from step 11
KEYCLOAK_URL
keep default
(HA Only) Having environment configurations done, copy the recording-solution directory on VM2 in
/rootdirectory using the following command.# scp -r /root/recording-solution root@<vm-ip>:/root/Execute the following commands inside /root/recording-solution directory.
# chmod 755 install.sh # ./install.shOnce keycloak is setup up, update the three environment variables (KEYCLOAK_REALM_NAME, KEYCLOAK_CLIENT_ID, KEYCLOAK_CLIENT_SECRET) and run ./install.sh again
Run the following command to ensure that all the components are up and running.
# docker psGo to https://VRS-IP/#/login to access the application
Follow this guide to deploy VRS Finesse gadget
(HA Only) 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.
# chmod 755 install.sh # ./install.sh(HA Only) 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
(HA Only) Recording folder synchronization, follow below steps;
Install lyncd utility on one machine, run below commands.
root@host # yum -y install epel-release root@host # yum -y install lsyncdGenerate SSH Keys on same. Run below command to generate a key. Use default by pressing enter every time it prompts
root@host # ssh-keygen -t rsaTransfer the SSH key to the other other machine by running below commands, enter other machine root password when prompted
ssh-copy-id root@other-machine-ipvi ~/.ssh/configenter below text in config file, replace the Hostname with other machine IP
Host dest_host Hostname 172.16.144.32 User root IdentityFile ~/.ssh/id_rsasettings { logfile = "/var/log/lsyncd/lsyncd.log", statusFile = "/var/log/lsyncd/lsyncd-status.log", statusInterval = 1 } sync { default.rsync, source="/root/recording-solution/recordings", target="192.168.1.125:/root/recording-solution/recordings", delete = false, rsync={ compress = true, acls = true, verbose = true, owner = true, group = true, perms = true, rsh = "/usr/bin/ssh -p 22 -o StrictHostKeyChecking=no"} }Follow above steps for the other machine
(HA Only) 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# ./keepalived.shConfigure keep.env file inside
keep-aliveddirectoryName
Description
Name
Description
KEEPALIVED_UNICAST_PEERSIPs 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:
192.168.1.80KEEPALIVED_VIRTUAL_IPSVirtual IP of the cluster. It should be available in the LAN. For example: 192.168.1.245
KEEPALIVED_PRIORITYPriority of the node. Instance with lower number will have a higher priority. It can take any value from 1-255.
KEEPALIVED_INTERFACEName of the network interface with which your machine is connected to the network. On CentOS,
ifconfigorip addr shwill show all the network interfaces and assigned addresses.CLEARANCE_TIMEOUTCorresponds 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
KEEPALIVED_ROUTER_IDDo not change this value.
SCRIPT_VARThis 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.htmlhttps://localhost:443/Give the execute permission and execute the script:
# chmod +x keep-command.sh# ./keep-command.sh
Troubleshooting
Configure Log Rotation
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..
|