slapper.ansible_victoriametrics_cluster_role
Ansible 角色:以集群模式安装 VictoriaMetrics
Ansible 角色用于安装或升级 VictoriaMetrics 集群,灵感来源于独立版本:https://github.com/dreamteam-gg/ansible-victoriametrics-role。感谢 @dreamteam-gg。
该角色已在 Centos 7
和 Centos 8
上测试,但在其他发行版上也应能正常工作,稍作调整即可 :-)
要求
无。
Ansible 清单
要使用此角色,请创建包含以下 3 个组的清单文件:
- vmstorage(用于存储节点)
- vmselect(用于选择节点)
- vminsert(用于插入节点)
更多信息请见: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
角色变量
角色的默认变量。您可以在角色或剧本级别覆盖它们。
---
## 所有 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"
## vmstorage 节点的变量
victoriametrics_vmstorage_data_dir: "/usr/local/bin/victoria-storage"
victoriametrics_vmstorage_retention_period: "24"
victoriametrics_vmstorage_memory_allowed_percent: "60" # 60 是默认值
victoriametrics_vmstorage_service_args: "" # 在此添加额外的变量。使用 vmstorage-prod --help 可以找到更多选项
## vmselect 节点的变量
victoriametrics_vmselect_cache_dir: "/usr/local/bin/victoria-cache"
victoriametrics_vmselect_memory_allowed_percent: "60"
victoriametrics_vmselect_service_args: "" # 在此添加额外的变量。使用 vmselect-prod --help 可以找到更多选项
## vminsert 节点的变量
victoriametrics_vminsert_service_args: "" # 在此添加额外的变量。使用 vminsert-prod --help 可以找到更多选项
victoriametrics_vminsert_memory_allowed_percent: "60"
# 服务的监听地址变量
victoriametrics_vmstorage_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vmselect_listen_address: "{{ ansible_default_ipv4.address }}"
victoriametrics_vminsert_listen_address: "{{ ansible_default_ipv4.address }}"
初始安装的示例剧本
---
- hosts: vmstorage,vminsert,vmselect
become: yes
roles:
- ansible-vicotriametrics-cluster-role
更新集群的示例剧本
在升级集群之前,请始终检查发布信息:https://github.com/VictoriaMetrics/VictoriaMetrics/releases。
为了确保更新集群时不出现问题,至少应有一个每种类型的节点处于运行状态。更多信息请见:https://github.com/VictoriaMetrics/VictoriaMetrics/tree/cluster#cluster-availability。
要更新 VictoriaMetrics,只需更新变量
victoriametrics_version
。需要使用 Ansible 的
serial
函数,以便一次更新一个节点。更多信息请见:https://docs.ansible.com/ansible/latest/user_guide/playbooks_delegation.html#rolling-update-batch-size。在实际更新之前,我们使用一个简单的任务从节点收集信息,见下文。
---
- hosts: vminsert,vmselect,vmstorage
become: true
gather_facts: true
tasks:
- name: 收集 Victoria 节点的信息
setup:
- hosts: vminsert,vmselect,vmstorage
gather_facts: false
become: true
serial: 1
vars:
- victoriametrics_version: "v1.40.0"
额外信息
为了使用 VictoriaMetrics,您需要一个 HTTP 负载均衡器 :-)
在我的情况下,我使用了 Haproxy。以下是 vminsert 和 vmselect 节点的简单配置。如果您添加更多 vmselect 或 vminsert 节点,请务必相应更新 Haproxy 配置。
#---------------------------------------------------------------------
# 全局设置
#---------------------------------------------------------------------
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
#---------------------------------------------------------------------
# 所有 'listen' 和 'backend' 部分将使用的默认设置
#---------------------------------------------------------------------
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
#---------------------------------------------------------------------
# 主要前端 vminsert 和 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
#---------------------------------------------------------------------
# 在 vminsert 和 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
待办事项
在角色中添加 Haproxy 的安装和配置功能。
许可证
BSD
作者信息
@Mtsa miltsatsakis@gmail.com
ansible-galaxy install slapper.ansible_victoriametrics_cluster_role