Zum Inhalt

Consul

Umfassende HashiCorp Consul Befehle und Workflows für Service Discovery, Konfigurationsmanagement und Service Mesh.

Installation & Einrichtung

Befehl Beschreibung
consul version Consul-Version anzeigen
consul agent -dev Entwicklungs-Agent starten
consul agent -config-dir=/etc/consul.d Beginnen Sie mit der Konfiguration
consul members Clustermitglieder auflisten
consul info Agent-Informationen anzeigen
## Agent-Verwaltung

Grundlegende Agent-Operationen

Befehl Beschreibung
consul agent -server -bootstrap-expect=3 Server-Agent starten
consul agent -client=0.0.0.0 Start Client Agent
consul join 192.168.1.100 Cluster beitreten
consul leave Cluster elegant verlassen
consul reload Konfiguration neu laden
### Agent-Konfiguration
Befehl Beschreibung
--------- -------------
consul validate /etc/consul.d Konfiguration validieren
consul configtest Test-Konfiguration
## Service Discovery

Service-Registrierung

Befehl Beschreibung
consul services register service.json Service aus Datei registrieren
consul services deregister service-id Service abmelden
consul catalog services Alle Dienste auflisten
consul catalog nodes Alle Nodes auflisten
### Service-Abfragen
Befehl Beschreibung
--------- -------------
consul catalog service web Dienstinstanzen auflisten
consul catalog service web -tag production Nach Tag filtern
consul health service web Health-Check-Status
consul health node node1 Node-Gesundheitsstatus
### DNS-Schnittstelle
Befehl Beschreibung
--------- -------------
dig @127.0.0.1 -p 8600 web.service.consul Abfragedienst über DNS
dig @127.0.0.1 -p 8600 web.service.dc1.consul Abfrage spezifisches Rechenzentrum
dig @127.0.0.1 -p 8600 node1.node.consul Query-Node über DNS
## Schlüssel-Wert-Speicher

KV-Operationen

Befehl Beschreibung
consul kv put config/database/url "postgresql://..." Schlüssel-Wert speichern
consul kv get config/database/url Wert abrufen
consul kv get -recurse config/ Hole alle Schlüssel unter Präfix
consul kv delete config/database/url Entfernen-Taste
consul kv delete -recurse config/ Lösche alle Schlüssel unter dem Präfix
### KV Erweiterte Operationen
Befehl Beschreibung
--------- -------------
consul kv put -cas -modify-index=123 config/app/version "2.0" Bedingte Aktualisierung
consul kv get -detailed config/app/version Mit Metadaten abrufen
consul kv export config/ Export-Schlüssel
consul kv import @backup.json Schlüssel importieren
## Gesundheitschecks

Gesundheitscheck-Verwaltung

Befehl Beschreibung
consul health checks Alle Gesundheitschecks auflisten
consul health checks web Prüfliste für Service
consul health state critical Kritische Prüfungen auflisten
consul health state passing Liste bestandener Checks
## Zugriffssteuerungslisten (ACLs)

ACL-Verwaltung

Befehl Beschreibung
consul acl bootstrap Bootstrap ACL-System
consul acl token create -description="Web service token" Token erstellen
consul acl token list Token-Liste
consul acl token delete TOKEN_ID Token löschen
### ACL-Richtlinien
Befehl Beschreibung
--------- -------------
consul acl policy create -name web-policy -rules @policy.hcl Police erstellen
consul acl policy list Richtlinien auflisten
consul acl policy read web-policy Police lesen
consul acl policy update -id POLICY_ID -rules @new-policy.hcl Richtlinie aktualisieren
## Connect (Service Mesh)

Connect-Konfiguration

Befehl Beschreibung
consul connect ca get-config CA-Konfiguration abrufen
consul connect ca set-config -config-file ca.json CA-Konfiguration festlegen
consul connect proxy -service web Start Connect Proxy
### Intentionen
Befehl Beschreibung
--------- -------------
consul intention create web db Web erlauben, eine Verbindung zur Datenbank herzustellen
consul intention create -deny web cache Web nicht zwischenspeichern
consul intention list Alle Absichten auflisten
consul intention delete web db Löschabsicht
## Konfigurationseinträge

Service-Konfiguration

Befehl Beschreibung
consul config write service-defaults.hcl Service-Standardwerte schreiben
consul config write proxy-defaults.hcl Proxy-Standardwerte schreiben
consul config list -kind service-defaults List-Konfigurationen
consul config read -kind service-defaults -name web Konfiguration lesen
consul config delete -kind service-defaults -name web Konfiguration löschen
## Snapshots und Backups

Snapshot-Operationen

Befehl Beschreibung
consul snapshot save backup.snap Snapshot erstellen
consul snapshot restore backup.snap Snapshot wiederherstellen
consul snapshot inspect backup.snap Snapshot überprüfen
## Monitoring und Debugging

Monitoring-Befehle

Befehl Beschreibung
consul monitor Stream-Logs
consul monitor -log-level=DEBUG Debug-Level-Logs
consul debug Debug-Informationen sammeln
consul operator raft list-peers Raft-Peers auflisten
### Leistung
Befehl Beschreibung
--------- -------------
consul operator autopilot get-config Autopilot-Konfiguration abrufen
consul operator autopilot set-config -cleanup-dead-servers=true Autopilot-Konfiguration festlegen
## Konfigurationsbeispiele

Server-Konfiguration

datacenter = "dc1"
data_dir = "/opt/consul"
log_level = "INFO"
node_name = "consul-server-1"
server = true
bootstrap_expect = 3
retry_join = ["10.0.1.10", "10.0.1.11"]

bind_addr = "10.0.1.10"
client_addr = "0.0.0.0"

ui_config \\\\{
  enabled = true
\\\\}

connect \\\\{
  enabled = true
\\\\}

acl = \\\\{
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
\\\\}

Client-Konfiguration```hcl

datacenter = "dc1" data_dir = "/opt/consul" log_level = "INFO" node_name = "consul-client-1" retry_join = ["10.0.1.10", "10.0.1.11", "10.0.1.12"]

bind_addr = "10.0.1.20" client_addr = "127.0.0.1"

services \\{ name = "web" port = 80 tags = ["production", "v1.0"]

check \\{ http = "http://localhost:80/health" interval = "10s" \\} \\}

### Dienstdefinition
```json
\\\\{
  "service": \\\\{
    "name": "web",
    "port": 80,
    "tags": ["production"],
    "check": \\\\{
      "http": "http://localhost:80/health",
      "interval": "10s"
    \\\\},
    "connect": \\\\{
      "sidecar_service": \\\\{\\\\}
    \\\\}
  \\\\}
\\\\}

ACL-Richtlinie

node_prefix "" \\\\{
  policy = "read"
\\\\}

service_prefix "" \\\\{
  policy = "read"
\\\\}

service "web" \\\\{
  policy = "write"
\\\\}

key_prefix "config/web/" \\\\{
  policy = "write"
\\\\}

session_prefix "" \\\\{
  policy = "read"
\\\\}

Service Mesh Konfiguration

Proxy-Standardeinstellungen

Kind = "proxy-defaults"
Name = "global"

Config \\\\{
  protocol = "http"
\\\\}

MeshGateway \\\\{
  Mode = "local"
\\\\}

Dienst-Standardeinstellungen

Kind = "service-defaults"
Name = "web"

Protocol = "http"

MeshGateway \\\\{
  Mode = "local"
\\\\}

Expose \\\\{
  Checks = true
  Paths = [
    \\\\{
      Path = "/health"
      LocalPathPort = 8080
      ListenerPort = 21500
    \\\\}
  ]
\\\\}

Multi-Rechenzentrum Einrichtung

WAN-Verbund

Befehl Beschreibung
consul join -wan 192.168.2.10 WAN beitreten
consul members -wan Liste WAN-Mitglieder
consul catalog datacenters Rechenzentren auflisten
### Rechenzentrumsübergreifende Abfragen
Befehl Beschreibung
--------- -------------
consul catalog service web -datacenter dc2 Query-Dienst in DC2
dig @127.0.0.1 -p 8600 web.service.dc2.consul DNS-Abfrage an DC2
## Fehlerbehebung

Häufige Probleme

Befehl Beschreibung
consul operator raft list-peers Raft-Cluster-Status prüfen
consul debug -duration=30s Debug-Informationen sammeln
consul validate /etc/consul.d Konfiguration validieren
consul members -detailed Detaillierte Mitgliedsinformationen
### Protokollanalyse
Befehl Beschreibung
--------- -------------
consul monitor -log-level=TRACE Trace-Level-Logging
journalctl -u consul -f Systemd-Logs folgen
## Bewährte Praktiken

Sicherheit