Zum Inhalt springen

Consul

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

Installation & Einrichtung

BefehlBeschreibung
consul versionConsul-Version anzeigen
consul agent -devEntwicklungs-Agent starten
consul agent -config-dir=/etc/consul.dBeginnen Sie mit der Konfiguration
consul membersClustermitglieder auflisten
consul infoAgent-Informationen anzeigen

Agent-Verwaltung

Grundlegende Agent-Operationen

BefehlBeschreibung
consul agent -server -bootstrap-expect=3Server-Agent starten
consul agent -client=0.0.0.0Start Client Agent
consul join 192.168.1.100Cluster beitreten
consul leaveCluster elegant verlassen
consul reloadKonfiguration neu laden

Agent-Konfiguration

BefehlBeschreibung
consul validate /etc/consul.dKonfiguration validieren
consul configtestTest-Konfiguration

Service Discovery

Service-Registrierung

BefehlBeschreibung
consul services register service.jsonService aus Datei registrieren
consul services deregister service-idService abmelden
consul catalog servicesAlle Dienste auflisten
consul catalog nodesAlle Nodes auflisten

Service-Abfragen

BefehlBeschreibung
consul catalog service webDienstinstanzen auflisten
consul catalog service web -tag productionNach Tag filtern
consul health service webHealth-Check-Status
consul health node node1Node-Gesundheitsstatus

DNS-Schnittstelle

BefehlBeschreibung
dig @127.0.0.1 -p 8600 web.service.consulAbfragedienst über DNS
dig @127.0.0.1 -p 8600 web.service.dc1.consulAbfrage spezifisches Rechenzentrum
dig @127.0.0.1 -p 8600 node1.node.consulQuery-Node über DNS

Schlüssel-Wert-Speicher

KV-Operationen

BefehlBeschreibung
consul kv put config/database/url "postgresql://..."Schlüssel-Wert speichern
consul kv get config/database/urlWert abrufen
consul kv get -recurse config/Hole alle Schlüssel unter Präfix
consul kv delete config/database/urlEntfernen-Taste
consul kv delete -recurse config/Lösche alle Schlüssel unter dem Präfix

KV Erweiterte Operationen

BefehlBeschreibung
consul kv put -cas -modify-index=123 config/app/version "2.0"Bedingte Aktualisierung
consul kv get -detailed config/app/versionMit Metadaten abrufen
consul kv export config/Export-Schlüssel
consul kv import @backup.jsonSchlüssel importieren

Gesundheitschecks

Gesundheitscheck-Verwaltung

BefehlBeschreibung
consul health checksAlle Gesundheitschecks auflisten
consul health checks webPrüfliste für Service
consul health state criticalKritische Prüfungen auflisten
consul health state passingListe bestandener Checks

Zugriffssteuerungslisten (ACLs)

ACL-Verwaltung

BefehlBeschreibung
consul acl bootstrapBootstrap ACL-System
consul acl token create -description="Web service token"Token erstellen
consul acl token listToken-Liste
consul acl token delete TOKEN_IDToken löschen

ACL-Richtlinien

BefehlBeschreibung
consul acl policy create -name web-policy -rules @policy.hclPolice erstellen
consul acl policy listRichtlinien auflisten
consul acl policy read web-policyPolice lesen
consul acl policy update -id POLICY_ID -rules @new-policy.hclRichtlinie aktualisieren

Connect (Service Mesh)

Connect-Konfiguration

BefehlBeschreibung
consul connect ca get-configCA-Konfiguration abrufen
consul connect ca set-config -config-file ca.jsonCA-Konfiguration festlegen
consul connect proxy -service webStart Connect Proxy

Intentionen

BefehlBeschreibung
consul intention create web dbWeb erlauben, eine Verbindung zur Datenbank herzustellen
consul intention create -deny web cacheWeb nicht zwischenspeichern
consul intention listAlle Absichten auflisten
consul intention delete web dbLöschabsicht

Konfigurationseinträge

Service-Konfiguration

BefehlBeschreibung
consul config write service-defaults.hclService-Standardwerte schreiben
consul config write proxy-defaults.hclProxy-Standardwerte schreiben
consul config list -kind service-defaultsList-Konfigurationen
consul config read -kind service-defaults -name webKonfiguration lesen
consul config delete -kind service-defaults -name webKonfiguration löschen

Snapshots und Backups

Snapshot-Operationen

BefehlBeschreibung
consul snapshot save backup.snapSnapshot erstellen
consul snapshot restore backup.snapSnapshot wiederherstellen
consul snapshot inspect backup.snapSnapshot überprüfen

Monitoring und Debugging

Monitoring-Befehle

BefehlBeschreibung
consul monitorStream-Logs
consul monitor -log-level=DEBUGDebug-Level-Logs
consul debugDebug-Informationen sammeln
consul operator raft list-peersRaft-Peers auflisten

Leistung

BefehlBeschreibung
consul operator autopilot get-configAutopilot-Konfiguration abrufen
consul operator autopilot set-config -cleanup-dead-servers=trueAutopilot-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

BefehlBeschreibung
consul join -wan 192.168.2.10WAN beitreten
consul members -wanListe WAN-Mitglieder
consul catalog datacentersRechenzentren auflisten

Rechenzentrumsübergreifende Abfragen

BefehlBeschreibung
consul catalog service web -datacenter dc2Query-Dienst in DC2
dig @127.0.0.1 -p 8600 web.service.dc2.consulDNS-Abfrage an DC2

Fehlerbehebung

Häufige Probleme

BefehlBeschreibung
consul operator raft list-peersRaft-Cluster-Status prüfen
consul debug -duration=30sDebug-Informationen sammeln
consul validate /etc/consul.dKonfiguration validieren
consul members -detailedDetaillierte Mitgliedsinformationen

Protokollanalyse

BefehlBeschreibung
consul monitor -log-level=TRACETrace-Level-Logging
journalctl -u consul -fSystemd-Logs folgen

Bewährte Praktiken

Sicherheit