Skip to content

Architecture

Node types, architecture, and core concepts
Node types, architecture, and core concepts

A "node" refers to a resource that is SSH accessible and offers a bare Linux OS environment. It could be a physical machine, a virtual machine, or an OS-like container equipped with systemd, sudo and sshd.

There are three different types of nodes in Pigsty, In a one-node deployment, they are the same one.

Node Type Description
Admin node The node where Pigsty is installed and admin commands are issued
Infra node The node where the INFRA module is installed
Common node Any nodes managed by Pigsty, including admin & infra nodes

Example

In the following 4-node sandbox config snippet, we have 4 common nodes.
And the 10.10.10.10 is marked as Infra Node and Admin Node simultaneously.

all:
  children:
    infra:   { hosts: { 10.10.10.10: { infra_seq: 1 } } }  # <--- mark this as infra node
    etcd:    { hosts: { 10.10.10.10: { etcd_seq: 1 } }, vars: { etcd_cluster: etcd } }
    pg-meta: { hosts: { 10.10.10.10: { pg_seq: 1, pg_role: primary } }, vars: { pg_cluster: pg-meta } }
    pg-test:
      hosts:
        10.10.10.11: { pg_seq: 1, pg_role: primary }
        10.10.10.12: { pg_seq: 2, pg_role: replica }
        10.10.10.13: { pg_seq: 3, pg_role: replica }
      vars: { pg_cluster: pg-test }
  vars:
    admin_ip: 10.10.10.10    # <--- mark this as admin node

Common Node

Common nodes have the following components enabled by default in Pigsty:

Component Port Description Default
node_exporter 9100 Node Monitoring Metrics Exporter Enabled
haproxy 9101 HAProxy admin / metrics port Enabled
promtail 9080 Log collecting agent Enabled

These components are optional, can be enabled with parameters.

Component Port Description Default
docker 9323 Enable Container Service Disabled
keepalived N/A Manage Node Cluster L2 VIP Disabled
keepalived_exporter 9650 Monitoring Keepalived Status Disabled

ADMIN Node

Admin Node is the first node where Pigsty is installed, all control commands are issued from it.

There is one and only one admin node in a pigsty deployment, which is specified by admin_ip. This parameter will be set during the configure procedure, to the value of primary IP address.

Secure admin node access

The admin node should have nopass ssh and sudo access to all other nodes in the environment, which is dangerous when exposed to unauthorized access. Please keep it safe.

Admin node is the first node where Pigsty is installed

The admin node is the first node where Pigsty is installed, and it is used to issue commands to other nodes.
The admin node is usually overlapped with the infra node, same as the first infra node

It is possible to use your local laptop as admin node

It is possible to install pigsty on your local laptop / macbook, install ansible and issue commands from there.


INFRA Node

A pigsty deployment may have one or more infra nodes, at least 1, 2 or more for production deployment.

The infra group specifies infra nodes in the inventory. And infra nodes will have INFRA module installed (DNS, Nginx, Prometheus, Grafana, etc…).

Component Port Domain Description
nginx 80 h.pigsty Web Service Portal (YUM/APT Repo)
alertmanager 9059 a.pigsty Alert Aggregation and delivery
prometheus 9058 p.pigsty Monitoring Time Series Database
grafana 3000 g.pigsty Visualization Platform
lok 3100 - Logging Collection Server
pushgateway 9091 - Collect One-Time Job Metrics
blackbox_exporter 9115 - Blackbox Probing
dnsmasq 53 - DNS Server
chronyd 123 - NTP Time Server
ansible - - Run playbooks

PGSQL Node

The node with PGSQL module installed is called a PGSQL node. The node and PG instance are 1:1 deployed. And node identities can be borrowed from pg instances with node_id_from_pg option.

Here are additional components & service port on PGSQL nodes:

Component Port Description Status
postgres 5432 PostgreSQL Server Process Managed by Patroni Enabled
pgbouncer 6432 Pgbouncer Connection Pool Enabled
patroni 8008 Patroni HA Component, Manage postgres Enabled
primary @ haproxy 5433 Primary connection pool: Read/Write Service Enabled
replica @ haproxy 5434 Replica connection pool: Read-only Service Enabled
default @ haproxy 5436 Primary Direct Connect Service Enabled
offline @ haproxy 5438 Offline Direct Connect: Offline Read Service Enabled
pg_exporter 9630 postgres Monitoring Metrics Exporter Enabled
pgbouncer_exporter 9631 pgbouncer Monitoring Metrics Exporter Enabled
pgbackrest_exporter 9854 pgbackrest Monitoring Metrics Exporter Enabled
vip-manager - Bind VIP to the primary Disabled