Schritt 2 – Konfiguration des etcd
In diesem Schritt konfigurieren und starten Sie den etcd-Dienst auf Datenbankserver 1, Datenbankserver 2 und dem dedizierten etcd-Server.
Konfigurieren und starten Sie den etcd-Dienst auf Datenbankserver 1, Datenbankserver 2 und dem dedizierten etcd-Server:
- Kopieren Sie die Vorlagendatei <WinCC OA Installation>/data/NGA/PostgreSQL/HAC/etcd.template.conf nach /etc/etcd/etcd.conf.
- Füllen Sie die Platzhalter in /etc/etcd/etcd.conf aus.
- Legen Sie den
ETCD_NAMEbasierend auf dem lokalen Server fest:"etcd-1" für Database Server 1 "etcd-2" für Database Server 2 "etcd-3" für den dedizierten etcd Server - Setzen Sie das Feld
ETCD_INITIAL_CLUSTERauf:etcd-1=http://<IP of Database Server 1>:2380, etcd-2=http://<IP of Database Server 2>:2380, etcd-3=http://<IP of Database Server 3>:2380 - Füllen Sie die Platzhalter in den Feldern
ETCD_LISTEN_CLIENT_URLS,ETCD_ADVERTISE_CLIENT_URLS,ETCD_LISTEN_PEER_URLSundETCD_INITIAL_ADVERTISE_PEER_URLSentsprechend der lokalen IP-Adresse auf jedem etcd-Server aus.Stellen Sie sicher, dass /etc/etcd/etcd.conf von allen Benutzern gelesen werden kann:sudo chmod a+r /etc/etcd/etcd.confBetrachten Sie die folgenden IP-Adressen als Beispiel:192.168.178.88 für Database Server 1, 192.168.178.89 für Database Server 2, 192.168.178.90 für den dedizierten etcd ServerIn diesem Fall würde die Datei /etc/etcd/etcd.conf auf Database Server 2 wie folgt aussehen:
ETCD_NAME="etcd-2" ETCD_INITIAL_CLUSTER="etcd-1=http://192.168.178.88:2380,etcd-2=http://192.168.178.89:2380,etcd-3=http://192.168.178.90:2380" ETCD_LISTEN_CLIENT_URLS="http://192.168.178.89:2379,http://127.0.0.1:2379" ETCD_ADVERTISE_CLIENT_URLS="http://192.168.178.89:2379" ETCD_LISTEN_PEER_URLS="http://192.168.178.89:2380,http://127.0.0.1:7001" ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.178.89:2380" ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster" ETCD_INITIAL_CLUSTER_STATE="new" ETCD_DATA_DIR="/var/lib/etcd" ETCD_ELECTION_TIMEOUT="5000" ETCD_HEARTBEAT_INTERVAL="1000" ETCD_ENABLE_V2="true"
- Legen Sie den
- Erstellen Sie auf jedem Server einen Dienst, um etcd auszuführen. Kopieren Sie dazu
die Service-Datei von <WinCC OA
installation>/data/NGA/PostgreSQL/HAC/etcd.service
nach /etc/systemd/system/. Laden Sie anschließend den Dienst
mit folgendem
Befehl:
systemctl daemon-reload systemctl enable etcd.service - Starten Sie den etcd-Dienst auf allen drei Servern nacheinander mit:
systemctl start etcd.serviceÜberprüfen Sie den Status von etcd:
systemctl status etcd.service - Überprüfen Sie die Verfügbarkeit des etcd-Clusters, indem Sie mit dem
put-Befehl ein Test-Schlüssel-Wert-Paar speichern und anschließend abrufen:etcdctl put testKey testValOK - Auf allen etcd-Rechnern verwenden Sie den Befehl
get:Deretcdctl get testKeytestKey testValget-Befehl sollte auf allen Maschinen testVal zurückgeben, wie oben gezeigt. Dies bestätigt, dass alle drei etcd-Knoten ordnungsgemäß kommunizieren. - Zusätzlich kann der Status für den gesamten etcd-Cluster bzw. alle etcd-Knoten
abgefragt werden:
etcdctl endpoint status --cluster -w=table+----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | ENDPOINT | ID | VERSION | DB SIZE | IS LEADER | IS LEARNER | RAFT TERM | RAFT INDEX | RAFT APPLIED INDEX | ERRORS | +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ | http://192.168.178.88:2379 | 5664a8f05990a10 | 3.5.21 | 98 kB | false | false | 2 | 286 | 286 | | | http://192.168.178.89:2379 | d2fe156a4f8f92ae | 3.5.21 | 98 kB | false | false | 2 | 286 | 286 | | | http://192.168.178.90:2379 | dd30186661e66c2c | 3.5.21 | 98 kB | true | false | 2 | 286 | 286 | | +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+ - Der Health Check jedes einzelnen Knotens kann auch separat abgefragt werden:
etcdctl endpoint health127.0.0.1:2379 is healthy: successfully committed proposal: took = 4.7686ms
