1 - 模块:MySQL
概览
MySQL 模块本身目前仅在 Pigsty 专业版中提供 Beta 试用预览,注意,请不要将这里的 MySQL 用于生产环境。
安装
您可以直接使用以下命令,在 Pigsty 管理的节点上,从官方软件源安装 MySQL(EL 使用 MySQL 8.4 社区仓库,Debian/Ubuntu 使用 MySQL 8.0 APT 仓库):
# el9
./node.yml -t node_install -e '{"node_repo_modules":"node,mysql","node_packages":["mysql-community-server,mysql-community-client"]}'
# debian / ubuntu
./node.yml -t node_install -e '{"node_repo_modules":"node,mysql","node_packages":["mysql-server"]}'
您也可以将 MySQL 软件包加入本地软件源后,使用 MySQL 剧本 mysql.yml 进行生产环境部署。
配置
以下配置片段定义了一个单节点的 MySQL 实例,以及其中的 Database 与 User。
my-test:
hosts: { 10.10.10.10: { mysql_seq: 1, mysql_role: primary } }
vars:
mysql_cluster: my-test
mysql_databases:
- { name: meta }
mysql_users:
- { name: dbuser_meta ,host: '%' ,password: 'dbuesr_meta' ,priv: { "*.*": "SELECT, UPDATE, DELETE, INSERT" } }
- { name: dbuser_dba ,host: '%' ,password: 'DBUser.DBA' ,priv: { "*.*": "ALL PRIVILEGES" } }
- { name: dbuser_monitor ,host: '%' ,password: 'DBUser.Monitor' ,priv: { "*.*": "SELECT, PROCESS, REPLICATION CLIENT" } ,connlimit: 3 }
管理
以下是基本的 MySQL 集群基本管理操作:
使用 mysql.yml 创建 MySQL 集群:
./mysql.yml -l my-test
剧本
Pigsty 提供了一个与 MYSQL 模块相关的剧本,用于部署 MySQL 集群
mysql.yml: 根据配置清单部署 MySQL
mysql.yml
用于部署 MySQL 模式集群的 mysql.yml 剧本包含以下子任务:
mysql-id : generate mysql instance identity
mysql_clean : remove existing mysql instance (DANGEROUS)
mysql_dbsu : create os user mysql
mysql_install : install mysql rpm/deb packages
mysql_dir : create mysql data & conf dir
mysql_config : generate mysql config file
mysql_boot : bootstrap mysql cluster
mysql_launch : launch mysql service
mysql_pass : write mysql password
mysql_db : create mysql biz database
mysql_user : create mysql biz user
mysql_exporter : launch mysql exporter
mysql_register : register mysql service to VictoriaMetrics
监控
Pigsty 提供了两个与 MYSQL 模块有关的监控面板:
MYSQL Overview 展示了 MySQL 集群的整体监控指标。
MYSQL Instance 展示了单个 MySQL 实例的监控指标详情
参数
MySQL 的可用配置项:
#-----------------------------------------------------------------
# MYSQL_IDENTITY
#-----------------------------------------------------------------
# mysql_cluster: #CLUSTER # mysql cluster name, required identity parameter
# mysql_role: replica #INSTANCE # mysql role, required, could be primary,replica
# mysql_seq: 0 #INSTANCE # mysql instance seq number, required identity parameter
#-----------------------------------------------------------------
# MYSQL_BUSINESS
#-----------------------------------------------------------------
# mysql business object definition, overwrite in group vars
mysql_users: [] # mysql business users
mysql_databases: [] # mysql business databases
mysql_services: [] # mysql business services
# global credentials, overwrite in global vars
mysql_root_username: root
mysql_root_password: DBUser.Root
mysql_replication_username: replicator
mysql_replication_password: DBUser.Replicator
mysql_admin_username: dbuser_dba
mysql_admin_password: DBUser.DBA
mysql_monitor_username: dbuser_monitor
mysql_monitor_password: DBUser.Monitor
#-----------------------------------------------------------------
# MYSQL_INSTALL
#-----------------------------------------------------------------
# - install - #
mysql_dbsu: mysql # os dbsu name, mysql by default, better not change it
mysql_dbsu_uid: 27 # os dbsu uid and gid, 306 for default mysql users and groups
mysql_dbsu_home: /var/lib/mysql # mysql home directory, `/var/lib/mysql` by default
mysql_dbsu_ssh_exchange: true # exchange mysql dbsu ssh key among same mysql cluster
mysql_packages: # mysql packages to be installed, `mysql-community*` by default
- mysql-community*
- mysqld_exporter
# - bootstrap - #
mysql_data: /data/mysql # mysql data directory, `/data/mysql` by default
mysql_listen: '0.0.0.0' # mysql listen addresses, comma separated IP list
mysql_port: 3306 # mysql listen port, 3306 by default
mysql_sock: /var/lib/mysql/mysql.sock # mysql socket dir, `/var/lib/mysql/mysql.sock` by default
mysql_pid: /var/run/mysqld/mysqld.pid # mysql pid file, `/var/run/mysqld/mysqld.pid` by default
mysql_conf: /etc/my.cnf # mysql config file, `/etc/my.cnf` by default
mysql_log_dir: /var/log # mysql log dir, `/var/log/mysql` by default
mysql_exporter_port: 9104 # mysqld_exporter listen port, 9104 by default
mysql_parameters: {} # extra parameters for mysqld
mysql_default_parameters: # default parameters for mysqld
2 - 模块:Kubernetes
Kubernetes 是生产级无状态容器调度编排私有云平台。
Pigsty 提供了原生的 ETCD 集群支持,可以供 Kubernetes 使用,因此也在专业版中提供了 KUBE 模块,用于部署生产级 Kubernetes 集群。
Kubernetes 模块目前仅在 Pigsty Pro 专业版本中提供 Beta 预览,在开源版本中不可用。
但您可以直接在 Pigsty 中指定节点仓库,安装 Kubernetes 软件包,并使用 Pigsty 调整环境配置,置备节点供 K8S 部署使用,解决交付的最后一公里问题。
SealOS
SealOS 是一个 Kubernetes 发行版,可以用于将整个 Kubernetes 集群打包制作为一个镜像在其他地方使用
Pigsty 在 Infra 仓库中提供了 SealOS 5.0 的 RPM 与 DEB 安装包,可以直接下载安装,并使用 SealOS 管理集群。
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["sealos"]}'
Kubernetes
如果您更喜欢使用经典的 Kubeadm 来部署 Kubernetes,请参考下面的 KUBE 模块参考。
./node.yml -t node_install -e '{"node_repo_modules":"kube","node_packages":["kubeadm,kubelet,kubectl"]}'
Kubernetes 支持多种容器运行时,要使用 Containerd 容器运行时,请确保节点上已经安装了 Containerd 软件包。
./node.yml -t node_install -e '{"node_repo_modules":"node,infra","node_packages":["containerd.io"]}'
若要使用 Docker 作为容器运行时,您需要安装 Docker,并自行提供 cri-dockerd 桥接组件。当前默认包映射只内置 containerd.io 运行时:
./node.yml -t node_install -e '{"node_repo_modules":"node,infra","node_packages":["docker-ce,docker-compose-plugin"]}'
剧本
kube.yml 剧本
监控
Kubernetes 集群监控通常由集群内的可观测组件(如 kube-prometheus-stack)负责。
Pigsty 侧建议重点监控 Kubernetes 依赖的基础能力:
- ETCD 监控告警:控制面元数据一致性与可用性
- NODE 监控告警:宿主机资源、内核与网络状态
- INFRA 监控告警:监控后端、告警链路与观测平台健康度
参数
Kubernetes 模块支持以下配置参数
#kube_cluster: #IDENTITY# # define kubernetes cluster name
kube_role: node # default kubernetes role (master|node)
kube_version: 1.31.0 # kubernetes version
kube_registry: registry.aliyuncs.com/google_containers # kubernetes version aliyun k8s miiror repository
kube_pod_cidr: "10.11.0.0/16" # kubernetes pod network cidr
kube_service_cidr: "10.12.0.0/16" # kubernetes service network cidr
kube_dashboard_admin_user: dashboard-admin-sa # kubernetes dashboard admin user name
3 - TigerBeetle
TigerBeetle 是一个金融会计事务专用数据库,提供了极致性能与可靠性。
概览
TigerBeetle 模块目前仅在 Pigsty 专业版中提供 Beta 试用预览。
安装
Pigsty Infra 仓库中提供了 TigerBeetle 的 RPM / DEB 软件包,使用以下命令即可完成安装:
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["tigerbeetle"]}'
即可安装,然后请参考官方文档进行配置:https://github.com/tigerbeetle/tigerbeetle
请注意,TigerBeetle 仅支持 Linux 内核 5.5 或更高版本,因此默认在 EL7 (3.10) / EL8 (4.18) 系统上无法使用。
请使用 EL 9/10、Ubuntu 22/24/26、Debian 12/13,或其他内核版本满足要求的系统来安装 TigerBeetle。
4 - DuckDB
DuckDB 是一个高性能,嵌入式的分析数据库。
DuckDB 是嵌入式数据库,不需要部署与服务化,只需要在节点上安装 DuckDB 软件包即可使用。
安装
Pigsty Infra 仓库 提供最新版本的 DuckDB RPM/DEB 包,直接安装即可。
./node.yml -t node_install -e '{"node_repo_modules":"infra","node_packages":["duckdb"]}'
使用 pig 安装:
pig repo add infra -u # 添加 Infra 仓库
pig install duckdb # 安装 DuckDB 包
相关资源
Pigsty 为 PostgreSQL 提供了一些 DuckDB 相关的扩展插件:
pg_duckdb,由 DuckDB 官方 MotherDuck 和 Hydra 出品的扩展插件pg_mooncake,在pg_duckdb扩展的基础上更进一步提供列式存储引擎与同步功能。pg_analytics,旨在基于 DuckDB 提供高性能 OLAP 分析能力,已归档duckdb_fdw,DuckDB 外部数据源包装器,允许从 PG 中读写 DuckDB 数据文件,目前尚未更新
5 - Consul
Consul 是一个分布式 DCS + KV + DNS + 服务注册/发现的组件。
在旧版本 (1.x) 的 Pigsty 里,默认使用 Consul 作为高可用的 DCS,现在该支持已经移除,但会在后续重新作为独立模块提供。
配置
要部署 Consul,您需要将所有节点的 IP 地址和主机名添加到 consul 分组中。
您至少需要指定一个节点的 consul_role 为 server,其他节点的 consul_role 默认为 node。
consul:
hosts:
10.10.10.10: { nodename: meta , consul_role: server }
10.10.10.11: { nodename: node-1 }
10.10.10.12: { nodename: node-2 }
10.10.10.13: { nodename: node-3 }
我们建议在严肃生产部署中使用奇数个 Consul Server,三个为宜。
参数
#-----------------------------------------------------------------
# CONSUL
#-----------------------------------------------------------------
consul_role: node # consul role, node or server, node by default
consul_dc: pigsty # consul data center name, `pigsty` by default
consul_data: /data/consul # consul data dir, `/data/consul`
consul_clean: true # consul purge flag, if true, clean consul during init
consul_ui: false # enable consul ui, the default value for consul server is true