集群配置
Module:
Categories:
配置说明
INFRA 主要用于提供 监控 基础设施,对于 PostgreSQL 数据库是 可选项 。
除非您在某些地方手工配置了对 INFRA 节点上 DNS / NTP 服务的依赖,否则 INFRA 模块的故障通常不会影响 PostgreSQL 数据库集群的正常运行。
在大多数情况下,单个 INFRA 节点足以应对绝大部分场景的需求。对于有一定要求的生产环境,建议使用 2~3 个 INFRA 节点以实现高可用。
通常出于提高资源利用率的考虑,PostgreSQL 高可用依赖的 ETCD
模块可以与 INFRA 模块共用节点。
使用 3 个以上的 INFRA 节点没有太大意义,但您可以使用更多的 ETCD 节点(例如 5 个)来提高 DCS 服务的可用性与可靠性。
配置样例
要在节点上安装 INFRA 模块,首先需要在 配置清单 中的 infra
分组加入节点 IP,并为其分配 Infra 实例号 infra_seq
。
默认情况下,配置单个 INFRA 节点便足以满足大部分场景下的需求,所有配置模板都默认带有 infra
分组的定义:
all:
children:
infra: { hosts: { 10.10.10.10: { infra_seq: 1 } }}
默认情况下,infra
分组中的 10.10.10.10
IP 占位符会在 配置 过程中被替换为 当前节点首要IP地址。
也就是会在当前节点上安装 INFRA 模块。
然后,使用 infra.yml
剧本在节点上初始化 INFRA 模块即可。
更多节点
配置两个 INFRA 节点,可以将新节点 IP 加入 infra.hosts
all:
children:
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
10.10.10.11: { infra_seq: 2 }
配置三个 INFRA 节点,并配置一些 Infra 集群/节点的参数:
all:
children:
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
10.10.10.11: { infra_seq: 2, repo_enabled: false }
10.10.10.12: { infra_seq: 3, repo_enabled: false }
vars:
grafana_clean: false
prometheus_clean: false
loki_clean: false
Infra 高可用
Infra 模块中的大部分组件都属于 “无状态/相同状态” ,对于这类组件,高可用只需要操心 “负载均衡” 问题。
Infra 组件负载均衡可以通过两种方式实现: Keepalived L2 VIP,或 HAProxy 四层负载均衡。
如果您的网络环境二层互通,则可以使用 Keepalived L2 VIP 实现高可用。
infra:
hosts:
10.10.10.10: { infra_seq: 1 }
10.10.10.11: { infra_seq: 2 }
10.10.10.12: { infra_seq: 3 }
vars:
vip_enabled: true
vip_vrid: 128
vip_address: 10.10.10.8
vip_interface: eth1
infra_portal:
home : { domain: h.pigsty }
grafana : { domain: g.pigsty ,endpoint: "10.10.10.8:3000" , websocket: true }
prometheus : { domain: p.pigsty ,endpoint: "10.10.10.8:9090" }
alertmanager : { domain: a.pigsty ,endpoint: "10.10.10.8:9093" }
blackbox : { endpoint: "10.10.10.8:9115" }
loki : { endpoint: "10.10.10.8:3100" }
除了设置 vip_address
等 VIP 相关参数外,您还需要在 infra_portal
中修改各项 Infra 服务的端点。