预置剧本
Pigsty使用剧本在节点上安装功能模块
Pigsty在底层通过 Ansible Playbook 实现核心管控功能,Pigsty提供的预置剧本分为四大类:
- infra : 使用
infra
系列剧本在元节点上单机安装Pigsty,并加装可选功能。 - nodes : 使用
nodes
系列剧本将更多节点纳入Pigsty监控管理,并供后续使用。 - pgsql : 使用
pgsql
系列剧本在已有节点上部署与管理PostgreSQL数据库集群。 - redis : 使用
redis
系列剧本在已有节点上部署与管理各种模式的Redis集群。
剧本概览
剧本 | 功能 | 链接 |
---|---|---|
infra | 在元节点上完整安装Pigsty | src |
infra-demo | 一次性完整初始化四节点演示沙箱环境的特殊剧本 | src |
infra-jupyter | 在元节点上加装可选数据分析服务组件Jupyter Lab | src |
infra-pgweb | 在元节点上加装可选的Web客户端工具PGWeb | src |
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实例或RDS | src |
pgsql-migration | 生成PostgreSQL半自动数据库迁移方案(Beta) | src |
pgsql-audit | 生成PostgreSQL审计合规报告(Beta) | src |
pgsql-matrix | 复用PG角色部署一套MatrixDB数据仓库集群(Beta) | src |
redis | 部署集群/主从/Sentinel模式的Redis数据库 | src |
redis-remove | Redis集群/节点下线 | src |
典型使用流程如下:
使用 infra 系列剧本在元节点/本机安装 Pigsty ,部署基础设施。
所有剧本都在元节点上发起执行,
infra
系列剧本只作用于元节点本身。使用 nodes 系列剧本将其他节点纳入或移除Pigsty管理
节点被托管后,可从元节点Grafana访问节点监控与日志,节点加入Consul集群。
使用 pgsql 系列剧本在纳入管理的节点上部署PostgreSQL集群
在托管节点上执行部署后,可以从元节点访问PostgreSQL监控与日志。
使用 redis 系列剧本在纳入管理的节点上部署Redis集群
在托管节点上执行部署后,可以从元节点访问Redis监控与日志。
meta node
[infra.yml] ./infra.yml [-l meta] +pigsty +docker +consul +etcd
[nodes.yml] ./nodes.yml -l pg-test +docker +consul +monitor
[pgsql.yml] ./pgsql.yml -l pg-test +pgsql
[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>
参数选择执行的目标,不指定此参数时,大多数剧本默认会以配置文件中定义的所有主机作为执行对象,这是非常危险的。 强烈建议在执行剧本时,指定执行的对象。
常用的对象有两种,集群与主机,例如:
./pgsql.yml # 在配置清单的所有主机上执行pgsql剧本(危险!)
./pgsql.yml -l pg-test # 针对 pg-test 集群中的主机执行pgsql剧本
./pgsql.yml -l 10.10.10.10 # 针对 10.10.10.10 的主机执行pgsql剧本
./pgsql.yml -l pg-* # 针对符合 pg-* 模式 (glob) 的集群执行剧本
任务子集
可以通过-t|--tags <tags>
来选择执行的任务子集,不指定此参数时,会执行完整的剧本,指定此参数时,则将执行所选的任务子集,这是非常实用的。
./pgsql.yml -t pg_hba # 重新生成并应用集群HBA规则
用户可以通过,
分隔,一次执行多个任务,例如当集群角色成员发生变化时,可以使用以下命令调整集群负载均衡配置。
./pgsql.yml -t haproxy_config,haproxy_reload # 重新生成集群负载均衡器配置并应用
额外参数
可以通过-e|--extra-vars KEY=VALUE
传入额外的命令行参数,覆盖已有参数,或控制一些特殊的行为。
例如,以下剧本的部分行为可以通过命令行参数进行控制。
./nodes.yml -e ansible_user=admin -k -K # 在配置节点时,使用另一个管理员用户 admin,并输入ssh与sudo密码
./pgsql.yml -e pg_clean=clean # 在安装PG时,强制抹除已有运行中数据库实例(危险)
./infra-remove.yml -e rm_metadata=true # 在卸载Pigsty时,一并移除数据
./infra-remove.yml -e rm_metadpkgs=true # 在卸载Pigsty时,一并卸载软件
./nodes-remove.yml -e rm_dcs_server=true # 在移除节点时,即使上面有DCS Server也强制移除
./pgsql-remove.yml -e rm_pgdata=true # 在移除PG时,一并移除数据
./pgsql-remove.yml -e rm_pgpkgs=true # 在移除PG时,一并卸载软件
最后修改 2022-05-27: init commit (1e3e284)