Solution Prerequisites
Following are the solution setup prerequisites.
A single VM required for NON-HA deployment.
For HA deployment, we will be using two VMs, each machine in the cluster should have the following hardware specifications. The two VMs 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 | ||
---|---|---|
|
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
(HA Only) 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
...
- 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.
Code Block | ||
---|---|---|
| ||
$ 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. (HA Only)
...
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
...
(HA Only) 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
(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.
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"}
} |
...
(HA Only) 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