配置文件
配置Pigsty
Pigsty通过配置清单(Inventory)来定义基础设施与数据库集群,每一套Pigsty都有一份对应的配置:无论是几百集群的生产环境,还是1核1GB的本地沙箱,在Pigsty中除了配置内容外没有任何区别。Pigsty的配置采用”Infra as Data”的哲学:用户通过声明式的配置描述自己的需求,而Pigsty负责将真实组件调整至所期待的状态。
在形式上,配置清单的具体实现可以是默认的本地配置文件,也可以是来自中的动态配置数据,本文介绍时均以默认YAML配置文件pigsty.yml 为例。在 中,Pigsty会检测当前节点环境,并自动生成推荐的配置文件。
配置清单的内容主要是配置项,Pigsty提供了220个配置参数,可以在多个进行配置,大多数参数可以直接使用默认值。配置项按照类目可以分为四大类:, NODES/主机节点, , REDIS/Redis数据库,并可进一步细分为32个小类。
进入 Pigsty 项目目录执行 ,Pigsty会检测根据当前机器环境生成推荐配置文件,这一过程称作 配置 / Configure。
configure
会检查下列事项,小问题会自动尝试修复,否则提示报错退出。
直接运行 ./configure
将启动交互式命令行向导,提示用户回答以下三个问题:
IP地址
当检测到当前机器上有多块网卡与多个IP地址时,配置向导会提示您输入主要使用的IP地址, 即您用于从内部网络访问该节点时使用的IP地址。注意请不要使用公网IP地址。
当节点的/tmp/pkg.tgz
路径下未找到离线软件包时,配置向导会询问是否从Github下载。 选择Y
即会开始下载,选择N
则会跳过。如果您的节点有良好的互联网访问与合适的代理配置,或者需要自行制作离线软件包,可以选择N
。
配置模板
使用什么样的配置文件模板。 配置向导会根据当前机器环境自动选择配置模板,因此不会询问用户这个问题,用户通常也无需关心。 但用户总是可以通过命令行参数-m <mode>
手工指定想要使用的配置模板,例如:
- demo 项目默认配置文件,4节点沙箱使用的配置文件,启用全部功能。
- 在生产环境中部署时推荐的配置文件模板,配置更加稳定保守。
在configure过程中,配置向导会根据当前机器环境自动选择配置模板,但用户可以通过-m <mode>
手工指定使用配置模板。配置模板最重要的部分是将模板中占位IP地址10.10.10.10
替换为当前机器的真实IP地址(内网主IP),并根据当前机器的配置选择合适的数据库规格模板。您可以直接使用默认生成的配置文件,或基于自动生成的配置文件进行进一步的定制与修改。
配置过程的标准输出
Pigsty项目根目录下有一个具体的配置文件样例:pigsty.yml
配置文件顶层是一个为all
的单个对象,包含两个子项目:vars
与children
。
vars
的内容为KV键值对,定义了全局配置参数,K为配置项名称,V为配置项内容。
children
的内容也是KV结构,K为集群名称,V为具体的集群定义,一个样例集群的定义如下所示:
- 集群定义同样包括两个子项目:
vars
定义了集群层面的配置。hosts
定义了集群的实例成员。 - 集群配置中的参数会覆盖全局配置中的对应参数,而集群的配置参数又会被实例级别的同名配置参数所覆盖。集群配置参数中,唯
pg_cluster
为必选项,这是集群的名称,须与上层集群名保持一致。 hosts
中采用KV的方式定义集群实例成员,K为IP地址(须ssh可达),V为具体的实例配置参数- 实例配置参数中有两个必须参数:
pg_seq
,与 ,分别为实例的唯一序号和实例的角色。
配置文件需要与 配合使用。Ansible是一个流行的DevOps工具,但普通用户无需了解Ansible的具体细节。如果您精通Ansible,则可以根据Ansible的清单组织规则自行调整配置文件的组织与结构:例如,使用分立式的配置文件,为每个集群设置单独的群组定义与变量定义文件。
您并不需要精通Ansible,用几分钟时间浏览Ansible快速上手,便足以开始使用Ansible执行剧本。
配置项的形式为键值对:键是配置项的名称,值是配置项的内容。值的形式各异,可能是简单的单个字符串,也可能是复杂的对象数组。
Pigsty的参数可以在不同的层次进行配置,并依据规则继承与覆盖,高优先级的配置项会覆盖低优先级的同名配置项。因此用户可以有的放矢,可以在不同层次,不同粒度上针对具体集群与具体实例进行精细配置。
在Pigsty的中,配置项 可以出现在三种位置,全局,集群,实例。集群vars
中定义的配置项会以同名键覆盖的方式覆盖全局配置项,实例中定义的配置项又会覆盖集群配置项与全局配置项。
并非所有配置项都适合在所有层次使用。例如,基础设施的参数通常只会在全局配置中定义,数据库实例的标号,角色,负载均衡权重等参数只能在实例层次配置,而一些操作选项则只能使用命令行参数提供(例如要创建的数据库名称),关于配置项的详情与适用范围,请参考配置项清单。
兜底与覆盖
除了配置文件中的三种配置粒度,Pigsty配置项目中还有两种额外的优先级层次:默认值兜底与命令行参数强制覆盖:
- 参数:当用户通过命令行传入参数时,参数指定的配置项具有最高优先级,将覆盖一切层次的配置。一些配置项只能通过命令行参数的方式指定与使用。
Pigsty包含了220个固定,分为四个部分:INFRA, , PGSQL, ,共计32类。
通常只有节点/数据库身份参数是必选参数,其他配置参数可直接使用默认值,按需修改。