slapper.ansible_victoriametrics_cluster_role
Rôle Ansible : Installer VictoriaMetrics en mode cluster
Rôle Ansible pour installer ou mettre à jour le cluster VictoriaMetrics, inspiré de la version autonome : https://github.com/dreamteam-gg/ansible-victoriametrics-role. Merci à @dreamteam-gg.
Testé sur Centos 7
et Centos 8
, mais cela devrait fonctionner sur d'autres distributions avec quelques ajustements mineurs :-)
Exigences
Aucune.
Inventaire Ansible
Pour utiliser ce rôle, créez votre fichier d'inventaire avec ces 3 groupes :
- vmstorage (pour les nœuds de stockage)
- vmselect (pour les nœuds de sélection)
- vminsert (pour les nœuds d'insertion)
Plus d'infos ici : 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
Variables du rôle
Les variables par défaut du rôle. Vous pouvez les remplacer au niveau du rôle ou du playbook.
---
## réglages par défaut pour tous les nœuds de VictoriaMetrics
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"
## variables pour les nœuds vmstorage
victoriametrics_vmstorage_data_dir: "/usr/local/bin/victoria-storage"
victoriametrics_vmstorage_retention_period: "24"
victoriametrics_vmstorage_memory_allowed_percent: "60" # 60 est la valeur par défaut
victoriametrics_vmstorage_service_args: "" # Ajoutez des variables supplémentaires ici. Plus d'options trouvées avec vmstorage-prod --help
## variables pour les nœuds vmselect
victoriametrics_vmselect_cache_dir: "/usr/local/bin/victoria-cache"
victoriametrics_vmselect_memory_allowed_percent: "60"
victoriametrics_vmselect_service_args: "" # Ajoutez des variables supplémentaires ici. Plus d'options trouvées avec vmselect-prod --help
## variables pour les nœuds vminsert
victoriametrics_vminsert_service_args: "" # Ajoutez des variables supplémentaires ici. Plus d'options trouvées avec vminsert-prod --help
victoriametrics_vminsert_memory_allowed_percent: "60"
# variables pour l'adresse d'écoute du service
victoriametrics_vmstorage_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vmselect_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vminsert_listen_address: "{{ ansible_default_ipv4.address }}"
Exemple de Playbook pour l'installation initiale
---
- hosts: vmstorage,vminsert,vmselect
become: yes
roles:
- ansible-victoriametrics-cluster-role
Exemple de Playbook pour mettre à jour votre cluster
Avant de mettre à jour votre cluster, vérifiez toujours les nouvelles versions : https://github.com/VictoriaMetrics/VictoriaMetrics/releases
Pour mettre à jour votre cluster sans aucun problème, il faut qu'au moins un nœud de chaque type soit opérationnel. Lisez plus : https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster#cluster-availability
Pour mettre à jour VictoriaMetrics, il vous suffit de mettre à jour la variable
victoriametrics_version
.Utilisez la fonction
serial
d'Ansible pour mettre à jour un nœud à la fois. Plus d'infos : https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#rolling-update-batch-sizeDe plus, nous utilisons une tâche simple avant de lancer la mise à jour réelle pour collecter des informations sur les nœuds, voir ci-dessous.
---
- hosts: vminsert,vmselect,vmstorage
become: true
gather_facts: true
tasks:
- name: Rassembler des informations sur les nœuds victoria
setup:
- hosts: vminsert,vmselect,vmstorage
gather_facts: false
become: true
serial: 1
vars:
- victoriametrics_version: "v1.40.0"
Extras
Pour utiliser VictoriaMetrics, vous avez besoin d'un équilibreur de charge HTTP :-)
Dans mon cas, j'ai utilisé Haproxy. Voici une configuration simple pour vos nœuds vminsert et vmselect. Si vous ajoutez plus de nœuds vmselect ou vminsert, n'oubliez pas de mettre à jour votre configuration Haproxy en conséquence.
#---------------------------------------------------------------------
# Paramètres globaux
#---------------------------------------------------------------------
global
# pour que ces messages se retrouvent dans /var/log/haproxy.log, vous devez
# :
#
# 1) configurer syslog pour accepter les événements de journalisation réseau. Ceci se fait
# en ajoutant l'option '-r' aux SYSLOGD_OPTIONS dans
# /etc/sysconfig/syslog
#
# 2) configurer les événements local2 pour aller au fichier /var/log/haproxy.log
# Une ligne comme celle-ci peut être ajoutée à
# /etc/sysconfig/syslog
#
# local2.* /var/log/haproxy.log
#
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
# activer le socket d'état unix
stats socket /run/haproxy.sock mode 666 level admin
# utiliser les politiques de cryptage à l'échelle du système
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
#---------------------------------------------------------------------
# défauts communs que toutes les sections 'listen' et 'backend' utiliseront
# si elles ne sont pas désignées dans leur bloc
#---------------------------------------------------------------------
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
balance
#---------------------------------------------------------------------
# frontend principal vminsert et 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
#---------------------------------------------------------------------
# équilibrage round robin entre vminsert et 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
À faire
Ajouter la fonctionnalité d'installation et de configuration de Haproxy dans le rôle.
Licence
BSD
Informations sur l'auteur
@Mtsa miltsatsakis@gmail.com
ansible-galaxy install slapper.ansible_victoriametrics_cluster_role