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