eDie Rolle CHAT wird für das Durchführen von Chat-Sessions, ausgehend von externe Webseiten, mit den Agenten verwendet.
Der Chat-Server ist eine Java Anwendung, was parallel auf den Webservern - bei entsprechende RAM Erweiterung um ca. 4 GB pro Server - mit installiert werden kann, oder auf einem separaten Server installiert wird.
Java 8 Installation
In diesem Schritt wird Java 8 auf dem Server installiert.
cd /home/jtel/ wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.tar.gz tar -xvzf jdk-8u131-linux-x64.tar.gz rm -f jdk-8u131-linux-x64.tar.gz chown -R root:root jdk1.8.0_131/ chmod 755 -R jdk1.8.0_131/
ClientMessenger Installieren und Konfigurieren
ClientMessenger Installation
Das Verzeichnis ClientMessenger wird nach /home/jtel kopiert.
cp -R /home/jtel/shared/JTELCarrierPortal/Utils/Install/ClientMessenger/ /home/jtel/ClientMessenger chown -R jtel:jtel /home/jtel/ClientMessenger
Hazelcast Cluster Konfiguration
Die Konfiguration des Hazelcast-Clusters muss geprüft werden. Bei Neuinstallationen von Release 3.11 ab 01.04.2018 sind die Einträge in hazelcast.xml vorhanden, davor hingegen nicht.
- Zum einen, wird der Chat-Server als Member im Cluster aufgenommen.
Zum anderen werden die CHAT Buffer und Counter der Konfiguration - falls nicht vorhanden - hinzugefügt.
Die notwendigen Konfigurationsabschnitte in hazelcast.xml sind hier aufgeführt:
... <tcp-ip enabled="true"> ... <member>CHATSERVER</member> </tcp-ip> ... <ringbuffer name="CHAT"> <in-memory-format>BINARY</in-memory-format> <backup-count>1</backup-count> <async-backup-count>0</async-backup-count> <time-to-live-seconds>60</time-to-live-seconds> <capacity>500</capacity> </ringbuffer> <map name="CHATCOUNTERS"> <backup-count>0</backup-count> <async-backup-count>1</async-backup-count> <time-to-live-seconds>600</time-to-live-seconds> <eviction-policy>LRU</eviction-policy> <max-size policy="PER_NODE">5000</max-size> </map>
Sämtliche Rechner im Hazelcast-Cluster betrachten:
- Rolle DATA, DB-Master
- hazelcast.xml updaten
- updatepl.sh ausführen
- Rolle TEL
- hazelcast.xml updaten
- PlatformUDPListener neu starten
- Rolle WEB
- hazelcast.xml updaten
updatejb.sh ausführen
- Rolle CHAT (das System, was gerade installiert wird!)
- hazelcast.xml am besten kopieren
ClientMessenger als Daemon Prozess installieren
Falls die Repositories auf einer Windows Maschine liegen (dies kann nur alte Installationen betreffen), muss der Start-Skript /etc/init.d/jtel-clientmessenger vorher repariert werden, damit aus CR+LF nur LF wird.
sed -i -e 's/\r//g' /home/jtel/ClientMessenger/init.d/jtel-clientmessenger
Die Konfiguration, bzw. die Startdatei jtel-clientmessenger muss ggf. angepasst werden, damit die Datenbank-Verbindung aufgebaut werden kann. Hierbei muss <password> mit den Passwort für den root User der Datenbank ersetzt werden:
... -Dde.jtel.platform.clientmessenger.connection=jdbc:mysql://acd-dbm/JTELWeb?user=root\&password=<password>\&characterEncoding=utf8 \ ...
Anschließend, wird der Prozess als Linux Daemon installiert:
cd /home/jtel/ cp /home/jtel/ClientMessenger/init.d/jtel-clientmessenger /etc/init.d/ chmod 755 /etc/init.d/jtel-clientmessenger chkconfig jtel-clientmessenger on service jtel-clientmessenger start
Update Skript anlegen
Für das Updaten des Chat-Servers wird ein Update-Skript angelegt:
cat <<EOFF>/usr/local/bin/updatesc.sh #!/bin/bash service jtel-clientmessenger stop cp /home/jtel/shared/JTELCarrierPortal/Utils/Install/ClientMessenger/bin/* /home/jtel/ClientMessenger/bin chown -R jtel:jtel /home/jtel/ClientMessenger service jtel-clientmessenger start EOFF chmod +x /usr/local/bin/updatesc.sh
Firewall Konfiguration
Als nächstes müssen in der Firewall die Port-Freigaben für den Chat Dienst eingetragen und persistent gespeichert werden. Hierbei kann unterschieden werden, ob http (sprich unsecure websocket) oder https (secure websocket) genutzt wird.
Da der Load-Balancer den https üblicherweise entschlüsselt, muss bei https nur der Port 3003 auf den Load-Balancer geöffnet werden.
Firewall Konfiguration http
Folgende Befehle, auf folgende Maschinen ausführen:
- Auf CHAT Server (hier der Chat-Port sowie die Hazelcast Cluster Ports)
firewall-cmd --zone=public --add-port=5701-5801/tcp --permanent firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
- Auf alle LB - bei http Verbindung nach Aussen
firewall-cmd --zone=public --add-port=3000/tcp --permanent firewall-cmd --reload
Firewall Konfiguration https
- Auf alle LB - bei https Verbindung nach Aussen
firewall-cmd --zone=public --add-port=3003/tcp --permanent firewall-cmd --reload
Firewall Centos 6
service iptables status iptables -I INPUT 4 -p tcp -m tcp --dport 5701:5801 -j ACCEPT iptables -I INPUT 4 -p tcp -m tcp --dport 3000:3003 -j ACCEPT service iptables save service iptables restart
Load Balancer Konfiguration
haproxy.cfg Anpassungen
Für http
Folgende Anpassungen werden am haproxy vorgenommen, bei einer http Verbindung für den Chat nach Aussen:
frontend acdportal_chat_ws mode http bind :3000 timeout client 1d default_backend backend_chat_ws backend backend_chat_ws mode http balance leastconn # roundrobin server chatserver1 <ip_addresse_oder_name>:3000 weight 1 check inter 1m server chatserver2 <ip_addresse_oder_name>:3000 weight 1 check inter 1m
Für https
frontend acdportal_chat_wss mode http bind :3003 ssl crt /etc/haproxy/haproxy.pem timeout client 1d default_backend backend_chat_ws backend backend_chat_ws mode http balance leastconn # roundrobin server chatserver1 <ip_addresse_oder_name>:3000 weight 1 check inter 1m server chatserver2 <ip_addresse_oder_name>:3000 weight 1 check inter 1m
Haproxy neu laden
Anschließend, den haproxy neu laden mit folgenden Befehl:
service haproxy reload
Chat Konfiguration
Parameter (als sysadmin)
Für https / wss
ACD.Chat.Script.Library.URL | https://<load-balancer>:3003/gui/ |
ACD.Chat.Server.Base.URL | wss://<load-balancer>:3003 |
Für http / ws
ACD.Chat.Script.Library.URL | https://<load-balancer>:3000/gui/ |
ACD.Chat.Server.Base.URL | wss://<load-balancer>:3000 |
Status
Ein entsprechender Agentenstatus für "Chat" - oder einen vorhandenen Status - muss konfiguriert werden, sodass der Chat an den Agenten verteilt wird:
Max Chats pro Agent
Die maximale Anzahl an parallele Chats pro Agent muss konfiguriert werden. Dieser Wert ist standardmäßig bei allen Agenten auf 0 eingestellt.