Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Solution Prerequisites

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.

...

Minimum requirement

...

CPU

...

4 cores on each VM

...

RAM

...

4 GB on each VM

...

Disk

...

300 GB on VM

...

NICs

...

1 NIC per VM

Software requirements

...

Minimum requirement

...

OS (2)

...

CentOS 7

...

MS SQL Server (2)

...

2016 

...

Docker CE

...

18+

...

Docker compose

...

1.21

On this page

Table of Contents
maxLevel3

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:  

Code Block
# systemctl enable firewalld
# systemctl start firewalld

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. 

Code Block
# firewall-cmd --add-port=2376/tcp --permanent
# firewall-cmd --add-port=2377/tcp --permanent
# firewall-cmd --add-port=7946/tcp --permanent
# firewall-cmd --add-port=7946/udp --permanent
# firewall-cmd --add-port=4789/udp --permanent
# firewall-cmd --add-port=80/tcp --permanent
# firewall-cmd --add-port=443/tcp --permanent

# firewall-cmd --reload

On VM1 and VM2, execute below additional commands,

# 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

...

{  
    "log-driver": "json-file"
    "log-opts": {
        "max-size": "50m",
        "max-file": "3"
    
}

Installation Steps

...

  1. delete the recording-solution directory if it exists.
  2. clone the required files for deployment

To execute the script, give it the execute permissions and execute it. 

Code Block
languagebash
$ chmod 755 deployment.sh
$ ./deployment.sh

...

Change to newly created directory with name recording-solution. This directory contains all the required files.

...

Update environment variables  in the following files inside /root/recording-solution/docker/environment_variables folder.

...

Name

...

Description

...

DB_URL

...

VRS database connection URL

jdbc:jtds:sqlserver://192.168.1.92:1433/vrs;user=sa;password=Expertflow464

...

DB_DRIVER

JDBC driver

net.sourceforge.jtds.jdbcx.JtdsDataSource

...

To enable/disable recorded file encryption

true = enabled

false = disabled

...

tcp://192.168.1.242:61616

...

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.

jdbc:jtds:sqlserver://192.168.1.87:1433/ucce_awdb;user=sa;password=Expertflow464

...

https://192.168.1.101

...

Having environment configurations done, copy the recording-solution directory on VM2 in/root directory using the following command.

Code Block
# scp -r /root/recording-solution root@<vm-ip>:/root/

Execute the following commands inside /root/recording-solution directory. 

Code Block
# chmod 755 install.sh
# ./install.sh

...

Run the following command to ensure that all the components are up and running. 

Code Block
# docker ps

This will show services status as shown below image Image Removed

 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.  

Code Block
# chmod 755 install.sh
# ./install.sh

...

Install lyncd utility on one machine, run below commands. 

Code Block
root@host # yum -y install epel-release
root@host # yum -y install lsyncd

Generate SSH Keys on same. Run below command to generate a key. Use default by pressing enter every time it prompts 

Code Block
root@host # ssh-keygen -t rsa

Transfer the SSH key to the other other machine by running below commands, enter other machine root password when prompted 

Code Block
ssh-copy-id root@other-machine-ip
Code Block
vi ~/.ssh/config

enter below text in config file, replace the Hostname with other machine IP

Code Block
Host dest_host
 Hostname 172.16.144.32
 User root
 IdentityFile ~/.ssh/id_rsa
Code Block
settings {
        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"}
}

...

Repeat the following steps on both machines.

...

Give execute permission and execute the script. This will create a keep-alived directory.

...

# chmod +x keepalived.sh
# ./keepalived.sh

Configure keep.env file inside keep-alived directory

...

Name

...

Description

...

Name

...

Description

...

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: 

192.168.1.80

...

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
# ./keep-command.sh

Troubleshooting