高可用 PostgreSQL 数据库集群部署
此处的数据库结构为:一主二从
参考教程:
准备工作
设置免密 sudo 权限
每个数据库节点都要执行以下操作
安装 pigsty 的每个节点都需要有同名的专用管理员用户,且拥有免密码 sudo 权限,用户名如:tsanfer,用户名不能为 dba
Pigsty 安装过程中会默认创建管理员用户
dba,其是不同于根用户(root)与数据库超级用户 (postgres) 的专用管理员用户
配置免密码 sudo 权限:
# 使用以下命令添加免密 sudo 规则
echo '%<USERNAME> ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/<USERNAME>
:<<EOF 比如
echo '%tsanfer ALL=(ALL) NOPASSWD: ALL' | sudo tee /etc/sudoers.d/tsanfer
EOF重新登陆当前用户 shell
su - <USERNAME>
# su - tsanfer验证免密 sudo 权限:
sudo ls -la批量设置 SSH 免密登陆
仅在主数据库节点执行以下操作
生成的公钥默认位于:~/.ssh/id_rsa.pub,私钥默认位于:~/.ssh/id_rsa,如果不存在则可生成新的公私钥对。
生成公私钥对:
ssh-keygen -t rsa复制公钥到受控主机:
ssh-copy-id -o StrictHostKeyChecking=no 192.168.0.51
ssh-copy-id -o StrictHostKeyChecking=no 192.168.0.52
ssh-copy-id -o StrictHostKeyChecking=no 192.168.0.53安装高可用 Pigsty 集群
仅在主数据库节点执行以下操作
安装 pigsty 命令行工具
# 中国大陆
curl https://repo.pigsty.cc/pig | bash
# 国际区域
# curl https://repo.pigsty.io/pig | bash配置 pigsty
# 默认安装嵌入的最新 Pigsty 版本
pig sty init
# 执行 Bootstrap,安装 Ansible
pig sty boot
# 执行 Configure,生成3节点高可用配置文件
pig sty conf -c ha/trio --ip=192.168.0.51配置过程生成的配置文件默认位于:~/pigsty/pigsty.yml,在安装前进行检查与修改定制,更改配置文件中的 IP 地址和数据库用户密码,比如以下所示
~/pigsty/pigsty.yml
~/pigsty/pigsty.yml
| |
安装 Pigsty
集群所有节点都不能有
dba用户,会产生用户冲突,进而导致安装失败
# 执行 install.yml 剧本完成部署
pig sty install安装过程耗时较长,实测需要约 40 分钟的时间。
查看效果
配置主机名到 IP 地址的映射
方式一:局域网 DNS 服务器配置映射
此处以 OpenWrt 为例,通过配置 LuCI 面板中的,network → DHCP/DNS → general → address
/h.pigsty/g.pigsty/p.pigsty/a.pigsty/sss.pigsty/<PRIMARY_IP>保存并应用即可生效
方式二:本地 HOSTS 文件配置映射
配置本地 hosts,映射主机名到主数据库节点
<PRIMARY_IP> h.pigsty g.pigsty p.pigsty a.pigsty sss.pigsty
之后便可在本地通过对应主机名访问服务:
| 组件 | 端口 | 域名 | 说明 |
|---|---|---|---|
| Nginx | 80/443 | h.pigsty | Web 服务总入口,本地 YUM 源 |
| AlertManager | 9093 | a.pigsty | 告警聚合/屏蔽页面 |
| Grafana | 3000 | g.pigsty | Grafana 监控面板 |
| Prometheus | 9090 | p.pigsty | Prometheus 管理界面 |
| Minio | 9001 | sss.pigsty | Minio 面板 |
Grafana 的默认用户名:admin,密码:pigsty
Minio 的默认用户名:minioadmin,密码:minioadmin