...
...
...
...
Solutions Pre-requisite
Hardware Sizing
For a simplex (single server) deployment, minimum and recommended hardware requirements are as follows:
Minimum | Recommended | |
---|---|---|
vCPU | 4 Cores | 8 Cores |
vRAM | 8 GB | 16 GB |
vDisk | 40 GB | 160 GB |
For a redundant deployment, two servers of the same specifications (as mentioned above) are needed.
Software Requirement
Following are the prerequisites for setting up a Generic Connector under different deployment profiles.
Hardware Sizing | |
---|---|
For up to 250 concurrent agents | 8 vCPU, 16 GB RAM, 150 GB HDD |
Software Requirements | |
| |
Certificates for HTTPS | |
| |
System Access Requirements | |
|
System Access Requirements
Following ports should remain open on the Firewall. The local security policy and any antivirus should also allow open communication on the following ports:
...
EF Connector, client applications, and Cisco Finesse should have their Time Zone and time configured properly according to the geographic region and synchronized. To configure the time zone, please see the instructions from the hardware or software manufacturer of NTP server. Client applications and EF Connector should be synchronized to the second. This synchronization should be maintained continuously and validated on a regular basis. For security reasons, Network Time Protocol (NTP) V 4.1+ is recommended.
Deployment Modes
Non-Redundant / Simplex Mode Deployment
In simplex deployment, the application is installed on a single server with no failover support of EF Connector. However, the same EF Connector can still communicate with primary and secondary Finesse servers.
Simplex mode is useful for lab tests and commercial deployments at a smaller scale. Figure below explains the simplex mode of Generic Connector.
High Availability (HA) / Duplex Deployment
Active-Passive (Primary / Secondary) Setup
To configure the Connector in Active-Passive mode, set the value of attribute “GRC_CONSUMER_PRIORITY” in Connector configuration. For the Primary Connector, set the value of this attribute to “127” (without quotes). For the Secondary Connector, set the value of this attribute to “100” (without quotes).
The active-Passive mode has the following configurations.
Configurations for Site-1
Primary-AMQ: broker-1, Secondary-AMQ: broker-2
...
Property | Value |
ACTIVEMQ_TIMEOUT | 10000 |
GRC_CONSUMER_PRIORITY | 127 |
RANDOMIZE | false |
PRIORITY_BACKUP | true |
ACTIVEMQ1 | primary-url-of-amq:port |
ACTIVEMQ2 | secondary-url-of-amq:port |
Configurations for Site-2
Primary-AMQ: broker-1, Secondary-AMQ: broker-2, For a detailed description of the GC please consult Connector Configuration Parameters (Environment Variables)
Property | Value |
ACTIVEMQ_TIMEOUT | 10000 |
GRC_CONSUMER_PRIORITY | 100 |
RANDOMIZE | false |
PRIORITY_BACKUP | true |
ACTIVEMQ1 | primary-url-of-amq:port |
ACTIVEMQ2 | secondary-url-of-amq:port |
Failover Scenarios
The following table shows different failover scenarios and their impact on the Connector Clients.
...
Failover is handled in a way if any component goes down, passive components take over in a seamless way.
Active-Active Setup
For an Active-Active deployment, the Failover URL is set to use the local AMQ as primary and remote AMQ as secondary.
...
We have achieved it using ActiveMQ configurable properties specifically Consumer priority, Priority Backup, and building a Connector Sync mechanism in Generic Connector.
Failover Scenarios
No. | Scenario | Behavior |
1 | AMQ-1 is down while GC-1 is active | AMQ-2 will take over and all client requests will be processed by the same GC-1 instance because of its higher consumer priority. |
2 | Both AMQ-1 and GC-1 are down | AMQ-2 and GC-2 will start receiving requests. GC-2 will acquire all agent’s XMPP subscriptions and will start processing requests. |
3 | GC-1 restores | Connector-2 will continue to process requests until connectivity between the Client application and Connector-2 is lost or Connector-2 is down. |
4 | The link between Connector-1 and Connector-2 is down | Both connector instances serve requests independently. |
5 | AMQ-1 restores while GC-1 is still down and AMQ-2 is also down | The client will send a request to AMQ-1. AMQ-1 will send the request to GC-2 because GC-1 is down. Request Flow: Client-App-1 → AMQ-1 → GC-2 Response Flow: CGC-2 → AMQ-1 → Client-App-1 |
6 | GC-1 is down while both AMQs are active | The request flow will be the same as no. 5 |
7 | GC-2 is down while both AMQs are active | AMQ-2 requests will be redirected to AMQ-1 and GC-1 will handle all requests. Request Flow: Client-App-2 → AMQ-2 → AMQ-1 → GC-1 Response Flow: GC-1 → AMQ-1 → AMQ-2 → Client-App-2 |
Deployment Steps
- Download the docker-compose an env file from Google-Drive
- Download the required deployment folder
- Create a folder on a Linux machine in any path of your inside root.
- Place the files inside the created folder as follows:
- Open env.txt file with text editor
- Make the desired changes and update the file
- run the command chmod 755 ./deploy.sh
now run the ./deploy.sh file and you can see after completion your docker image is running
- For Active MQ deployment
- For Rest deployment
- After that run the following commands to edit the ActiveMQ configuration
a. Go into the folder where the docker-compose file is placed
Code Block title Command cd /root/gc-docker-compose
b. Get the ActiveMQ image id by following command
Code Block title Command docker container ps -a
c. Enter the following set of commands to reach to the ActiveMQ configuration file (activemq.xml), and set the urls as in the following image
Code Block title Command docker exec -it e559c745598dfd5346f6ab11 shbash cd conf vim activemq.xml
- Add the server IP where the GC and ActiveMQ are running
- eg. server IP 192.168.2.162
Note title Note Note: If you wanted to know about vim command, Here is the detail.
Connector Configuration Parameters (Environment Variables)
Parameter | Default Value | Description |
NUMBER_OF_LICENSES | 1000 | |
CUSTOMER_NAME | Haseeb | |
KEY | ASDFGHJKLZXCVBNM234RFGHUIOKJMNBFEWSDFGHNJMNBV | License key. Must be obtained from EF Team |
Finesse_1 | Primary Finesse URL for Site A | |
Finesse_2 | Primary Finesse URL for Site B | |
ACCESS_TOKEN_URL | https://192.168.1.104:1126/getaccesstoken | |
FINESSE_REQUEST_TIMEOUT | 3000 | Finesse requested a timeout (in mili-seconds) |
FINESSE_HEARTBEAT_SLEEP | 5 | Delay in ping to finesse servers (seconds) |
ByPass_SSL | ture | Bypass SSL Certificate if finesse url is https and self signed certificate is used, in case of false Import SSL certificate to JVM if needed |
ACTIVEMQ1 | localhost:61616 | ActiveMQ Primary URL |
ACTIVEMQ1 | localhost:61616 | ActiveMQ Secondary URL |
ACTIVEMQ_TIMEOUT | 30000 | ActiveMQ connection timeout (in milliseconds) |
GRC_CONSUMER_PRIORITY | 127 | Connector1 Queue consumer priority (Used for primary, secondary deployment of GC)(0-127) |
PRIORITY_BACKUP | true | To connect with its primary GC |
RANDOMIZE | false | for failover url |
PREFETCH_SIZE | 20000 | Prefect Size of the messages |
AGENT_STATES_PUBLISHER_DURATION | 5000 | Time after which, states of all agents would be published on topic (In Milliseconds) |
GC_HEARTBEAT_TIMEOUT | 10000 | GC heartbeat timeout |
AGENT_INACTIVITY_DURATION | 30 | Agent inactivity time (in seconds) |
GC_HEARTBEAT_SLEEP | 10000 | gc heartbeat thread sleep time |
AGENT_INACTIVITY_TIME_SWITCH | false | Agent inactivity switch |
DEFAULT_NOT_READY_REASON | 19 | default reason code for not ready (Must be defined in finesse) |
DEFAULT_LOGOUT_REASON | 70 | Default reason code for force logout |
AGENT_XMPP_SUBS_TIME | 10000 | Agent XMPP Subscription Time |
USE_ENCRYPTED_PASSWORDS | false | Use encrypted password |
CHANGE_STATE_ON_WRAPUP | true | Automatically change the state when wrap-up occurs |
LOGLEVEL | TRACE | Log Level |
GC_HEARTBEAT_TIMEOUT | 10000 | GC heartbeat timeout |
USE_ENCRYPTED_PASSWORDS | true | Use password encryption (3Des). (Must be same as in client.) |
CHANGE_STATE_ON_WRAPUP | true | Caller’s state change automatically on wrap-up |
MESSAGE_FORMAT | JSON | Message Format for communication. Expected formats DEFAULT, JSON, XML |
AGENT_LOGS_PATH | /app/logs/agents/ | Agent Logs Storage path |
AGENT_LOGS_LEVEL | TRACE | Agent Logs Level |
AGENT_LOGS_MAX_FILES | 10 | Max No of Files per agent for logs |
AGENT_LOGS_FILE_SIZE | 10MB | Max file size for agent logs |
XMPP_PING_INTERVAL | 3 | Interval in seconds between XMPP server pings |
ADMIN_ID | Administrator | The username of the administrator account the would be used for phonebook and contact APIs |
ADMIN_PASSWORD | Expertflow464 | The password of the administrator account would be used for phonebook and contact APIs |
Supervisor_initiated_NotReadyReasonCode | 19 | Reason code for supervisor state change to Not_Ready |
Supervisor_initiated_LogOutReasonCode | 20 | Reason code for supervisor state change to Log_Out |
UCCX_SERVER_IP | 192.168.1.29 | For queue stats in case of UCCX |
UCCX_SERVER_USERNAME | Administrator | |
UCCX_SERVER_PASSWORD | Expertflow464 | |
UCCX_DB_USERNAME | uccxhruser | |
UCCX_DB_PASSWORD | 12345 | |
UCCX_DB_RETRY_ATTEMPTS | 2 | |
UCCX_DB_TIMEOUT_CONNECTION | 1800 | |
COMMUNICATION_FORMAT | REST | JMS | |
SPRING_PORT | 8112 | |
REDIS_URL | redis-master.ef-cti.svc | |
REDIS_PORT | 6379 | |
REDIS_PASSWORD | Expertflow123 | |
SQL_SERVER | 192.168.1.89 | For Skill groups and supervisor list |
DATABASE | uc12_awdb | |
DATABASE_TABLE | Skill_Group | |
DATABASE_USER_NAME | sa | |
DATABASE_USER_PASSWORD | Expertflow464 | |
KEY_STORE_TYPE | PKCS12 | |
KEY_STORE | D:\\EF_Project\\GC4.4\\Generic Connector\\certs\\store\\clientkeystore.p12 | |
TRUST_STORE | D:\\EF_Project\\GC4.4\\Generic Connector\\certs\\store\\client.truststore | |
KEY_STORE_PASSWORD | changeit | |
TRUST_STORE_PASSWORD | changeit | |
PRIVATE_KEY_STRING | key_value | |
ISSUER | ef-chat | |
EXPIRY | 300 | |
PEP_BASE_PATH | http://192.168.50.31:8113 | |
AOP_CALLBACK | /ef-voice/fnb-cme/submit-gc-event/v1 | |
AXL_URL | https://192.168.1.26:8443/axl/ | |
AXL_UserUSER | administrator | |
AXL_PasswordPASSWORD | Expertflow464 | |
LD_LIBRARY_PATH | /app |
MX Monitoring
GC now supports JMX monitoring. You can monitor the performance of GC via any of the monitoring tools such as JConsole and VisualVM. GC supports JMX Monitoring on port 9090.
...