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:

  1. Kopieren Sie die Vorlagendatei <WinCC OA Installation>/data/NGA/PostgreSQL/HAC/etcd.template.conf nach /etc/etcd/etcd.conf.
  2. Füllen Sie die Platzhalter in /etc/etcd/etcd.conf aus.
    • Legen Sie den ETCD_NAME basierend 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_CLUSTER auf:
      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_URLS und ETCD_INITIAL_ADVERTISE_PEER_URLS entsprechend 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.conf
      Betrachten 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 Server

      In 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"
  3. 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
  4. 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
  5. Ü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 testVal
    OK
  6. Auf allen etcd-Rechnern verwenden Sie den Befehl get:
    etcdctl get testKey
    testKey
    testVal
    Der get-Befehl sollte auf allen Maschinen testVal zurückgeben, wie oben gezeigt. Dies bestätigt, dass alle drei etcd-Knoten ordnungsgemäß kommunizieren.
  7. 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 |        |
    +----------------------------+------------------+---------+---------+-----------+------------+-----------+------------+--------------------+--------+
  8. Der Health Check jedes einzelnen Knotens kann auch separat abgefragt werden:
     etcdctl endpoint health
     127.0.0.1:2379 is healthy: successfully committed proposal: took = 4.7686ms