Wiki-Quellcode von Cluster-Umgebung

Zuletzt geändert von MACH ProForms GmbH am 09.09.2024

Verstecke letzte Bearbeiter
MACH ProForms GmbH 1.1 1 ## Einrichtung Cluster-Umgebung
2
MACH ProForms GmbH 2.1 3 Dieses Dokument beschreibt, wie Sie beim Formularserver mehrere WildFly-Server parallel laufen lassen können. Die Anleitung zeigt dies exemplarisch an zwei parallel laufenden WildFly-Servern.
MACH ProForms GmbH 1.1 4
5 ### Einrichtung ohne Docker
6
7 #### WildFly Server
8
9 Die Benamung der neuen WildFly Server-Instanzen ist beliebig, die "2" am Ende ist daher nur ein exemplarisches Beispiel.
10
11 Anlegen eines WildFly-Users incl. Homeverzeichnis und Gruppenaufnahme wildfly:
12
MACH ProForms GmbH 2.1 13 ```bash
14 useradd -d /opt/wildfly2 -g wildfly wildfly2
15 ```
MACH ProForms GmbH 1.1 16
17 Den neuen WildFly-user in die Apache-Gruppe aufnehmen:
18
MACH ProForms GmbH 2.1 19 ```bash
20 sudo usermod -a -G www-data wildfly2
21 ```
MACH ProForms GmbH 1.1 22
23 WildFly-Ordner kopieren:
24
MACH ProForms GmbH 2.1 25 ```bash
26 sudo cp -r wildfly-25.0.1.Final/ wildfly2
27 ```
MACH ProForms GmbH 1.1 28
29 Der Besitzer des WildFly-Ordners muss wie folgt angepasst werden:
30
MACH ProForms GmbH 2.1 31 ```bash
32 chown -R wildfly2:wildfly wildfly2
33 ```
MACH ProForms GmbH 1.1 34
35 Innerhalb des neuen WildFly-Verzeichnisses können die folgenden Verzeichnisse oder Dateien gelöscht werden: logs, tmp, artifact_backups
36
37 sowie die Datei standalone/configuration/logging.properties
38
39 Im neu entstandenen WildFly-Ordner muss die Datei standalone.conf am Ende wie folgt ergänzt werden:
40
MACH ProForms GmbH 2.1 41 ```bash
MACH ProForms GmbH 1.1 42 JAVA_OPTS="$JAVA_OPTS -Djboss.socket.binding.port-offset=1000 -Djava.io.tmpdir=/tmp/wildfly2 -Djboss.server.log.dir=/opt/wildfly2/standalone/log -Deureka.port=8080
MACH ProForms GmbH 2.1 43 -Deureka.serviceUrl.default=http://localhost:8080/server/api/eureka"
44 ```
MACH ProForms GmbH 1.1 45
46 #### Einfügen einer neuen Property
47
48 In der Datei /opt/wildfly2/.formsolutions/general.properties muss noch der folgende Eintrag ergänzt werden:
49
MACH ProForms GmbH 2.1 50 ```bash
MACH ProForms GmbH 1.1 51 clusterPrimaryNode = false
MACH ProForms GmbH 2.1 52 ```
MACH ProForms GmbH 1.1 53
54 Diese Property sorgt dafür, dass einzelne Bestandteile nur vom primären WildFly ausgeführt werden.
55
56 Aufnahme des neuen WildFlys als Dienst am Beispiel systemctl:
57
MACH ProForms GmbH 2.1 58 ```bash
MACH ProForms GmbH 1.1 59 mkdir /etc/wildfly2
60 cp wildfly.conf /etc/wildfly2/
61 cp wildfly.service /etc/systemd/system/wildfly2.service
MACH ProForms GmbH 2.1 62 ```
MACH ProForms GmbH 1.1 63
64 Die Datei muss dann wie folgt angepasst werden:
65
MACH ProForms GmbH 2.1 66 ```bash
67 ESC[A[Unit]
MACH ProForms GmbH 1.1 68 Description=The WildFly Application Server
69 After=syslog.target network.target
70 Before=httpd.service
71
72 [Service]
73 Environment=LAUNCH_JBOSS_IN_BACKGROUND=1
74 EnvironmentFile=-/etc/wildfly2/wildfly.conf
75 User=wildfly2
76 LimitNOFILE=102642
77 PIDFile=/var/run/wildfly/wildfly2.pid
78 ExecStart=/opt/wildfly2/bin/launch.sh $WILDFLY_MODE $WILDFLY_CONFIG $WILDFLY_BIND
79 StandardOutput=null
80
81 [Install]
82 WantedBy=multi-user.target
83 /etc/systemd/system/wildfly2.service (END)
MACH ProForms GmbH 2.1 84 ```
MACH ProForms GmbH 1.1 85
86 Kopieren der launch.sh:
87
MACH ProForms GmbH 2.1 88 ```bash
MACH ProForms GmbH 1.1 89 cp launch.sh /opt/wildfly2/bin/
90 chmod +x /opt/wildfly2/bin/launch.sh
MACH ProForms GmbH 2.1 91 ```
MACH ProForms GmbH 1.1 92
93 In der kopierten Datei launch.sh muss dann noch das WildFly-Homeverzeichnis angepasst werden auf **/opt/wildfly2**
94
95 Aktivieren des neuen WildFly als Dienst:
96
MACH ProForms GmbH 2.1 97 ```bash
MACH ProForms GmbH 1.1 98 systemctl start wildfly2.service
99 systemctl enable wildfly2.service
MACH ProForms GmbH 2.1 100 ```
MACH ProForms GmbH 1.1 101
102 #### Apache
103
104 Sofern noch nicht vorhanden muss das Modul lbmethod_bybusyness sowie proxy_balancer installiert werden **a2enmod lbmethod_bybusyness proxy_balancer**
105
106 ##### Anpassungen in allen vhost-ofs-Dateien
107
MACH ProForms GmbH 2.1 108 ```bash
109 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/;HttpOnly;Secure" env=BALANCER_ROUTE_CHANGED
MACH ProForms GmbH 1.1 110 <Proxy "balancer://wildflycluster">
111 BalancerMember "http://localhost:8080" route=1
112 BalancerMember "http://localhost:9080" route=2
113 ProxySet stickysession=ROUTEID lbmethod=bybusyness
114 </Proxy>
MACH ProForms GmbH 2.1 115 ```
MACH ProForms GmbH 1.1 116
117 Da bei der WildFly-Konfiguration für die Ports ein Offset von 1000 angegeben wurde, ergibt sich für den zweiten Cluster ein Port von 9080.
118
119 Des Weiteren müssen die ProxyPass- und ProxyPassReverse-Einträge auf den Balancer wie folgt umgestellt werden:
120
MACH ProForms GmbH 2.1 121 ```bash
MACH ProForms GmbH 1.1 122 ProxyPass /servlet balancer://wildflycluster/servlet
123 ProxyPassReverse /servlet balancer://wildflycluster/servlet
MACH ProForms GmbH 2.1 124 ```
MACH ProForms GmbH 1.1 125
126 Eintrag in der Datei kndb_settings.inc.php:
127
MACH ProForms GmbH 2.1 128 ```bash
MACH ProForms GmbH 1.1 129 $config['internalWildflyUrl'] = 'http://localhost:8080';
MACH ProForms GmbH 2.1 130 ```
MACH ProForms GmbH 1.1 131
132 und zum Abschluss noch den Apache neu starten.
133
134 ### Mit Docker-Umgebung
135
136 #### Apache
137
138 Es müssen zwei neue Apache-Module installiert werden. Dies sind lbmethod_bybusyness und proxy_balancer.
139
140 Dazu öffnen Sie bitte die Datei '/opt/docker/fs/web/image/' und ändern den Eintrag in
141
MACH ProForms GmbH 2.1 142 ```bash
MACH ProForms GmbH 1.1 143 RUN a2enmod alias headers proxy_http rewrite ssl
MACH ProForms GmbH 2.1 144 ```
MACH ProForms GmbH 1.1 145
146 in
147
MACH ProForms GmbH 2.1 148 ```bash
MACH ProForms GmbH 1.1 149 RUN a2enmod alias headers lbmethod_bybusyness proxy_balancer proxy_http rewrite ssl
MACH ProForms GmbH 2.1 150 ```
MACH ProForms GmbH 1.1 151
152 ##### Anpassungen in allen vhost-ofs-Dateien
153
MACH ProForms GmbH 2.1 154 ```bash
155 Header add Set-Cookie "ROUTEID=.%{BALANCER_WORKER_ROUTE}e; path=/;HttpOnly;Secure" env=BALANCER_ROUTE_CHANGED
MACH ProForms GmbH 1.1 156 <Proxy "balancer://wildflycluster">
157 BalancerMember "http://wildfly:8080" route=1
158 BalancerMember "http://wildfly:8080" route=2
159 ProxySet stickysession=ROUTEID lbmethod=bybusyness
160 </Proxy>
MACH ProForms GmbH 2.1 161 ```
MACH ProForms GmbH 1.1 162
163 Des Weiteren müssen die ProxyPass- und ProxyPassReverse-Einträge auf den Balancer wie folgt umgestellt werden:
164
MACH ProForms GmbH 2.1 165 ```bash
MACH ProForms GmbH 1.1 166 ProxyPass /servlet balancer://wildflycluster/servlet
167 ProxyPassReverse /servlet balancer://wildflycluster/servlet
MACH ProForms GmbH 2.1 168 ```
MACH ProForms GmbH 1.1 169
170 ##### Eintrag in der Datei kndb_settings.inc.php
171
MACH ProForms GmbH 2.1 172 ```bash
MACH ProForms GmbH 1.1 173 $config['internalWildflyUrl'] = 'http://wildfly:8080';
MACH ProForms GmbH 2.1 174 ```
MACH ProForms GmbH 1.1 175
176 ##### WildFly
177
178 ##### Duplizieren von Verzeichnissen
179
180 Damit wir für den zweiten WildFly Server einzelne Bestandteile abschalten können, bekommt in der Docker-Umgebung jeder ein eigenes Properties-Verzeichnis. Dazu kopieren wir das bestehende Verzeichnis wie folgt:
181
MACH ProForms GmbH 2.1 182 ```bash
MACH ProForms GmbH 1.1 183 cp -r /opt/docker/fs/wildfly/properties /opt/docker/fs/wildfly/properties2
MACH ProForms GmbH 2.1 184 ```
MACH ProForms GmbH 1.1 185
186 Leider ist es nicht möglich, dass sich die beiden WildFly Server die Deployment-Verzeichnisse teilen. Daher kopieren Sie bitte das Deployment-Verzeichnis wie folgt:
187
MACH ProForms GmbH 2.1 188 ```bash
MACH ProForms GmbH 1.1 189 cp -r /opt/docker/fs/wildfly/deployments /opt/docker/fs/wildfly/deployments2
MACH ProForms GmbH 2.1 190 ```
MACH ProForms GmbH 1.1 191
192 ##### Anpassungen an den Properties von wildfly2
193
194 Mit Ausnahme des primären WildFly Servers muss in den general.properties ein weiterer Eintrag hinzugefügt werden:
195
196 In unserem Beispiel erfolgt dies in der /opt/docker/fs/wildfly/properties2/general.properties
197
MACH ProForms GmbH 2.1 198 ```bash
MACH ProForms GmbH 1.1 199 clusterPrimaryNode=false
MACH ProForms GmbH 2.1 200 ```
MACH ProForms GmbH 1.1 201
202 ##### Docker-compose.yml
203
204 Sollte bislang nur ein WildFly-Container vorhanden sein, ist es sinnvoll den WildFly-Container in wildfly1 umzubenennen.
205
206 Anschließend kopieren wir den WildFly-Block und fügen diesen erneut ein und benennen den kopierten WildFly-Knoten wildfly2.
207
208 Neben der Anpassung der Volume-Angaben für die Properties und Deployments sollte auch das gemountete Verzeichnis für den neuen WildFly Container angepasst werden.
209
210 Das Beispiel unten zeigt den entsprechenden Abschnitt
211
MACH ProForms GmbH 2.1 212 ```bash
213 volumes:
MACH ProForms GmbH 1.1 214 - ./logs/wildfly2:/opt/jboss/wildfly/standalone/log
215 - ./secure_html:/srv/secure_html
216 - ./wildfly/config:/opt/jboss/wildfly/standalone/configuration
217 - ./wildfly/deployments2:/opt/jboss/wildfly/standalone/deployments
218 - ./wildfly/properties2:/opt/jboss/.formsolutions
MACH ProForms GmbH 2.1 219 ```
MACH ProForms GmbH 1.1 220
221 Nach Abschluss der Konfiguration muss der neue Container gestartet werden und der Apache neu gestartet werden. Gegebenenfalls vorhandene Skripte müssen dahingehend ergänzt werden, dass der neue WildFly gestartet und gestoppt wird.
222
223 ### Wichtige Hinweise für das Einspielen von Updates in der Cluster-Lösung
224
MACH ProForms GmbH 2.1 225 * Es müssen vor dem Ausführen des Updates alle WildFly-Container gestoppt werden.
226 * Nach Ausführen des Installers muss der Inhalt des deployment-Verzeichnisses in allen Containern ersetzt werden.
227 * Mit Ausnahme der clusterPrimaryNode-Property müssen alle neu einzuführenden Properties in allen WildFly-Containern eingeführt werden.
228 * Die entsprechenden Skripte für Starten und Stoppen müssen so angepasst werden, dass diese alle WildFly-Container miteinbeziehen.