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