PIGSTY

配置

配置基础设施节点、nginx、仓库、dns、ntp、监控系统

INFRA 模块主要提供监控基础设施,对于 PostgreSQL 服务是 可选的

除非您在其他地方手动配置了对 INFRA 节点的 DNS/NTP 服务依赖,否则 INFRA 模块的故障通常不会影响 PostgreSQL 数据库集群的正常运行。

在大多数情况下,单个 INFRA 节点足以满足典型场景。对于有更高要求的生产环境,我们建议使用 2-3 个 INFRA 节点以实现高可用性。

为了提高资源利用率,PostgreSQL 高可用性通常依赖于 ETCD 模块,该模块可以与 INFRA 模块共享节点。

使用超过 3 个 INFRA 节点提供的好处有限,但您可以使用更多 ETCD 节点(例如 5 个)来增强 DCS 服务的可用性和可靠性。


示例

要在节点上安装 INFRA 模块,首先将节点 IP 添加到 清单 中的 infra 组,并为它们分配一个 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 playbook 在节点上初始化 INFRA 模块。

更多节点

要配置两个 INFRA 节点,请将新 IP 添加到 infra.hosts

all:
  children:
    infra:
      hosts:
        10.10.10.10: { infra_seq: 1 }
        10.10.10.11: { infra_seq: 2 }

要配置三个 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 组件负载均衡可以通过两种方法实现: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 服务的端点。