您好,登录后才能下订单哦!
密码登录
登录注册
点击 登录注册 即表示同意《亿速云用户服务条款》
# PostgreSQL 中如何使用 Keepalived 的方式进行 IP 切换
## 引言
在高可用数据库架构中,PostgreSQL 通常需要配合工具实现故障自动转移(Failover)。Keepalived 作为一款轻量级的高可用解决方案,通过虚拟 IP(VIP)漂移机制,能够快速实现主备切换。本文将详细介绍如何利用 Keepalived 实现 PostgreSQL 主从节点的 IP 自动切换。
---
## 一、Keepalived 工作原理
Keepalived 基于 VRRP(Virtual Router Redundancy Protocol)协议,通过多节点竞选机制决定 VIP 的归属。其核心特点包括:
1. **主备选举**:通过优先级(priority)选举 Master 节点,默认拥有 VIP。
2. **健康检查**:通过自定义脚本监控服务状态,异常时触发切换。
3. **VIP 漂移**:Master 故障时,Backup 节点自动接管 VIP。
---
## 二、环境准备
### 1. 节点规划
| 角色 | IP 地址 | 主机名 |
|------------|-------------|----------|
| PostgreSQL 主节点 | 192.168.1.10 | pg-master |
| PostgreSQL 备节点 | 192.168.1.11 | pg-backup |
| 虚拟 IP(VIP) | 192.168.1.100 | - |
### 2. 软件要求
- PostgreSQL 12+(需配置流复制)
- Keepalived 2.0+
- 操作系统:CentOS 7/8 或 Ubuntu 20.04
---
## 三、PostgreSQL 主从配置
### 1. 主节点配置
```bash
# postgresql.conf
wal_level = replica
synchronous_commit = remote_apply
# pg_hba.conf
host replication rep_user 192.168.1.11/32 md5
# 使用 pg_basebackup 初始化备库
pg_basebackup -h 192.168.1.10 -U rep_user -D /var/lib/pgsql/12/data -P -R
# CentOS
yum install -y keepalived
# Ubuntu
apt-get install -y keepalived
vrrp_script chk_postgres {
script "/usr/bin/pg_isready -q -d postgres"
interval 2
fall 2
rise 1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24
}
track_script {
chk_postgres
}
}
vrrp_instance VI_1 {
state BACKUP
priority 90
# 其他参数与主节点一致
}
pg_isready
命令检测 PostgreSQL 服务状态。fall 2
)触发切换。systemctl start keepalived
systemctl enable keepalived
ip addr show eth0 | grep 192.168.1.100
# 在主节点停止 PostgreSQL
systemctl stop postgresql
# 观察 Backup 节点是否接管 VIP
tail -f /var/log/messages
synchronous_commit
配置合理。对于更复杂的场景,可改用 Patroni 管理 PostgreSQL 集群,Keepalived 仅负责 VIP 漂移。
通过调整优先级实现多备份节点层级切换。
通过 Keepalived 实现 PostgreSQL 的 VIP 漂移,能够以秒级速度完成故障转移,显著提升系统可用性。但需注意其仅解决网络层高可用,实际生产环境建议结合流复制监控、数据一致性校验等完整方案。
参考文档
- Keepalived 官方文档:https://keepalived.org
- PostgreSQL 高可用指南:https://www.postgresql.org/docs/current/high-availability.html “`
注:本文实际约 1200 字,可根据需要补充具体参数说明或日志示例进一步扩展。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。