预置剧本

Pigsty使用剧本在节点上安装功能模块

Pigsty在底层通过 Ansible Playbook 实现核心管控功能,Pigsty提供的预置剧本分为四大类:

  • infra : 使用 infra 系列剧本在元节点上单机安装Pigsty,并加装可选功能。
  • nodes : 使用 nodes 系列剧本将更多节点纳入Pigsty监控管理,并供后续使用。
  • pgsql : 使用 pgsql 系列剧本在已有节点上部署与管理PostgreSQL数据库集群。
  • redis : 使用 redis 系列剧本在已有节点上部署与管理各种模式的Redis集群。

剧本概览

剧本功能链接
infra在元节点上完整安装Pigstysrc
infra-demo一次性完整初始化四节点演示沙箱环境的特殊剧本src
infra-jupyter在元节点上加装可选数据分析服务组件Jupyter Labsrc
infra-pgweb在元节点上加装可选的Web客户端工具PGWebsrc
nodes节点置备,将节点纳入Pigsty管理,可用于后续数据库部署src
nodes-remove节点移除,卸载节点DCS与监控,不再纳入Pigsty管理src
pgsql部署PostgreSQL集群,或集群扩容src
pgsql-remove下线PostgreSQL集群,或集群缩容src
pgsql-createuser创建PostgreSQL业务用户src
pgsql-createdb创建PostgreSQL业务数据库src
pgsql-monly仅监控模式,接入现存PostgreSQL实例或RDSsrc
pgsql-migration生成PostgreSQL半自动数据库迁移方案(Beta)src
pgsql-audit生成PostgreSQL审计合规报告(Beta)src
pgsql-matrix复用PG角色部署一套MatrixDB数据仓库集群(Beta)src
redis部署集群/主从/Sentinel模式的Redis数据库src
redis-removeRedis集群/节点下线src

典型使用流程如下:

  1. 使用 infra 系列剧本在元节点/本机安装 Pigsty ,部署基础设施。

    所有剧本都在元节点上发起执行,infra 系列剧本只作用于元节点本身。

  2. 使用 nodes 系列剧本将其他节点纳入或移除Pigsty管理

    节点被托管后,可从元节点Grafana访问节点监控与日志,节点加入Consul集群。

  3. 使用 pgsql 系列剧本在纳入管理的节点上部署PostgreSQL集群

    在托管节点上执行部署后,可以从元节点访问PostgreSQL监控与日志。

  4. 使用 redis 系列剧本在纳入管理的节点上部署Redis集群

    在托管节点上执行部署后,可以从元节点访问Redis监控与日志。

  1. meta node
  2. [infra.yml] ./infra.yml [-l meta] +pigsty +docker +consul +etcd
  3. [nodes.yml] ./nodes.yml -l pg-test +docker +consul +monitor
  4. [pgsql.yml] ./pgsql.yml -l pg-test +pgsql
  5. [redis.yml] ./redis.yml -l pg-test +redis

绝大多数剧本都是幂等设计,这意味着一些部署剧本在没有开启保护选项的情况下,可能会抹除现有数据库并创建新数据库。 当您处理现有数据库集群,或在生产环境进行操作时,请充分阅读并理解文档,再三校对命令,谨慎操作。对于误操作导致的数据库损失,作者不负任何责任。


Ansible快速上手

Pigsty剧本使用Ansible编写,用户并不需要完全理解Ansible的原理,只需要很少的知识即足以充分利用 Ansible 剧本。

  • Ansible安装:如何安装Ansible?(Pigsty用户通常无需操心)
  • 主机子集:如何针对特定主机执行剧本?
  • 任务子集:如何执行剧本中的某些特定任务?
  • 额外参数:如何传入额外的命令行参数以控制剧本行为?

Ansible安装

Ansible剧本需要使用ansible-playbook可执行命令,可使用包管理器安装Ansible,Ansible的安装由Pigsty自动处理,用户通常无需操心。

执行Ansible剧本时,直接将剧本作为可执行程序执行即可。执行剧本时有三个核心的参数需要关注:-l|-t|-e,分别用于限制执行的主机,与执行的任务,以及传入额外的参数。

主机子集

可以通过 -l|--limit <selector> 参数选择执行的目标,不指定此参数时,大多数剧本默认会以配置文件中定义的所有主机作为执行对象,这是非常危险的。 强烈建议在执行剧本时,指定执行的对象。

常用的对象有两种,集群与主机,例如:

  1. ./pgsql.yml # 在配置清单的所有主机上执行pgsql剧本(危险!)
  2. ./pgsql.yml -l pg-test # 针对 pg-test 集群中的主机执行pgsql剧本
  3. ./pgsql.yml -l 10.10.10.10 # 针对 10.10.10.10 的主机执行pgsql剧本
  4. ./pgsql.yml -l pg-* # 针对符合 pg-* 模式 (glob) 的集群执行剧本

任务子集

可以通过-t|--tags <tags>来选择执行的任务子集,不指定此参数时,会执行完整的剧本,指定此参数时,则将执行所选的任务子集,这是非常实用的。

  1. ./pgsql.yml -t pg_hba # 重新生成并应用集群HBA规则

用户可以通过,分隔,一次执行多个任务,例如当集群角色成员发生变化时,可以使用以下命令调整集群负载均衡配置。

  1. ./pgsql.yml -t haproxy_config,haproxy_reload # 重新生成集群负载均衡器配置并应用

额外参数

可以通过-e|--extra-vars KEY=VALUE 传入额外的命令行参数,覆盖已有参数,或控制一些特殊的行为。

例如,以下剧本的部分行为可以通过命令行参数进行控制。

  1. ./nodes.yml -e ansible_user=admin -k -K # 在配置节点时,使用另一个管理员用户 admin,并输入ssh与sudo密码
  2. ./pgsql.yml -e pg_clean=clean # 在安装PG时,强制抹除已有运行中数据库实例(危险)
  3. ./infra-remove.yml -e rm_metadata=true # 在卸载Pigsty时,一并移除数据
  4. ./infra-remove.yml -e rm_metadpkgs=true # 在卸载Pigsty时,一并卸载软件
  5. ./nodes-remove.yml -e rm_dcs_server=true # 在移除节点时,即使上面有DCS Server也强制移除
  6. ./pgsql-remove.yml -e rm_pgdata=true # 在移除PG时,一并移除数据
  7. ./pgsql-remove.yml -e rm_pgpkgs=true # 在移除PG时,一并卸载软件

最后修改 2022-05-27: init commit (1e3e284)