slapper.ansible_victoriametrics_cluster_role
Ansible-Rolle: VictoriaMetrics im Cluster-Modus installieren
Ansible-Rolle zur Installation oder Aktualisierung des VictoriaMetrics-Clusters, inspiriert von der Standalone-Version: https://github.com/dreamteam-gg/ansible-victoriametrics-role. Vielen Dank an @dreamteam-gg.
Getestet auf CentOS 7
und CentOS 8
, sollte aber auch auf anderen Distributionen mit geringen Anpassungen funktionieren :-)
Anforderungen
Keine.
Ansible-Inventory
Um diese Rolle zu verwenden, erstelle deine Inventardatei mit diesen 3 Gruppen:
- vmstorage (für Speicher-Knoten)
- vmselect (für Auswahl-Knoten)
- vminsert (für Einfüge-Knoten)
Weitere Informationen hier: https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster#architecture-overview
[vmstorage]
vmstorage01.example.com
vmstorage02.example.com
vmstorage03.example.com
vmstorage04.example.com
[vminsert]
vminsert01.example.com
vminsert02.example.com
[vmselect]
vmselect01.example.com
vmselect02.example.com
Rollenvariablen
Die Standardvariablen der Rolle. Du kannst sie auf Rollen- oder Playbook-Ebene überschreiben.
---
## Standard Einstellungen für alle VictoriaMetrics-Knoten
victoriametrics_repo_url: "https://github.com/VictoriaMetrics/VictoriaMetrics"
victoriametrics_download_url: "{{ victoriametrics_repo_url }}/releases/download/{{ victoriametrics_version }}/victoria-metrics-{{ victoriametrics_version }}-cluster.tar.gz"
victoriametrics_version: "v1.34.6"
victoriametrics_system_user: "victoria"
victoriametrics_system_group: "victoria"
## Variablen für vmstorage-Knoten
victoriametrics_vmstorage_data_dir: "/usr/local/bin/victoria-storage"
victoriametrics_vmstorage_retention_period: "24"
victoriametrics_vmstorage_memory_allowed_percent: "60" # 60 ist der Standardwert
victoriametrics_vmstorage_service_args: "" # Füge hier zusätzliche Variablen hinzu. Weitere Optionen mit vmstorage-prod --help
## Variablen für vmselect-Knoten
victoriametrics_vmselect_cache_dir: "/usr/local/bin/victoria-cache"
victoriametrics_vmselect_memory_allowed_percent: "60"
victoriametrics_vmselect_service_args: "" # Füge hier zusätzliche Variablen hinzu. Weitere Optionen mit vmselect-prod --help
## Variablen für vminsert-Knoten
victoriametrics_vminsert_service_args: "" # Füge hier zusätzliche Variablen hinzu. Weitere Optionen mit vminsert-prod --help
victoriametrics_vminsert_memory_allowed_percent: "60"
# Variablen für die Listen-Adresse des Dienstes
victoriametrics_vmstorage_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vmselect_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vminsert_listen_address: "{{ ansible_default_ipv4.address }}"
Beispiel-Playbook für die Erstinstallation
---
- hosts: vmstorage,vminsert,vmselect
become: yes
roles:
- ansible-victoriametrics-cluster-role
Beispiel-Playbook für das Update deines Clusters
Überprüfe immer die Releases, bevor du dein Cluster aktualisierst: https://github.com/VictoriaMetrics/VictoriaMetrics/releases
Um dein Cluster ohne Probleme zu aktualisieren, sollte mindestens ein Knoten jeder Art aktiv sein. Lies mehr: https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster#cluster-availability
Um VictoriaMetrics zu aktualisieren, aktualisiere einfach die Variable
victoriametrics_version
.Du musst die Ansible-Funktion
serial
verwenden, um einen Knoten nach dem anderen zu aktualisieren. Weitere Informationen: https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#rolling-update-batch-sizeAußerdem verwenden wir eine einfache Aufgabe, bevor wir das eigentliche Update ausführen, um Informationen von den Knoten zu sammeln, siehe unten.
---
- hosts: vminsert,vmselect,vmstorage
become: true
gather_facts: true
tasks:
- name: Fakten für Victoria-Knoten sammeln
setup:
- hosts: vminsert,vmselect,vmstorage
gather_facts: false
become: true
serial: 1
vars:
- victoriametrics_version: "v1.40.0"
Extras
Um VictoriaMetrics zu verwenden, benötigst du einen HTTP-Lastenausgleich :-).
In meinem Fall habe ich Haproxy verwendet. Hier ist eine einfache Konfiguration für deine vminsert- und vmselect-Knoten. Falls du weitere vmselect- oder vminsert-Knoten hinzufügst, vergiss nicht, deine Haproxy-Konfiguration entsprechend zu aktualisieren.
#---------------------------------------------------------------------
# Globale Einstellungen
#---------------------------------------------------------------------
global
log 127.0.0.1 local2
log-send-hostname
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 40000
user haproxy
group haproxy
daemon
stats socket /run/haproxy.sock mode 666 level admin
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
#---------------------------------------------------------------------
# Allgemeine Standards, die alle 'listen' und 'backend'-Abschnitte verwenden
#---------------------------------------------------------------------
defaults
mode http
log global
option httplog
option dontlognull
option http-server-close
option forwardfor except 127.0.0.0/8
option redispatch
retries 3
timeout http-request 10s
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout http-keep-alive 10s
timeout check 10s
maxconn 30000
#---------------------------------------------------------------------
# Haupt-Frontend vminsert und vmselect
#---------------------------------------------------------------------
frontend vminsert
bind 0.0.0.0:8480
mode http
log global
default_backend vminsert_nodes
frontend vmselect
bind 0.0.0.0:8481
mode http
log global
default_backend vmselect_nodes
frontend stats
bind 0.0.0.0:10010
mode http
stats enable
stats uri /stats
stats realm HAProxy\ Statistics
stats auth admin:admin
stats admin if TRUE
#---------------------------------------------------------------------
# Round Robin Balance zwischen vminsert und vmselect
#---------------------------------------------------------------------
backend vminsert_nodes
mode http
balance roundrobin
option httpchk GET /health
http-check expect string OK
default-server inter 5s fall 3 rise 2
server vminsert01 10.10.10.100:8480 check
server vminsert02 10.10.10.101:8480 check
backend vmselect_nodes
mode http
balance roundrobin
option httpchk GET /health
http-check expect string OK
default-server inter 5s fall 3 rise 2
server vmselect01 10.10.10.102:8481 check
server vmselect02 10.10.10.103:8481 check
To-do
Füge die Funktionalität zur Installation und Konfiguration von Haproxy in die Rolle hinzu.
Lizenz
BSD
Autorinformationen
@Mtsa miltsatsakis@gmail.com
ansible-galaxy install slapper.ansible_victoriametrics_cluster_role