配置 PostgreSQL
与 Keepalived
以实现高可用性通常包括以下步骤:
安装 PostgreSQL:在两台服务器上安装相同版本的 PostgreSQL。
sudo yum install postgresql-server postgresql-contrib
初始化数据库:在两台服务器上初始化 PGDATA 目录。
sudo postgresql-setup initdb
配置主从复制:设置一台服务器为主节点,另一台为从节点。
在主服务器上:
postgresql.conf
文件以允许复制。wal_level = replica
max_wal_senders = 3
wal_keep_segments = 64
archive_mode = on
archive_command = 'cp %p /path_to_archive/%f'
pg_hba.conf
文件中允许从服务器的连接。host replication all 192.168.9.183/32 md5
在从服务器上:
sudo systemctl stop postgresql
pg_basebackup
进行基础备份。pg_basebackup -h 192.168.9.195 -D /var/lib/pgsql/data -U replicator -v -P --wal-method=stream
recovery.conf
文件以连接到主服务器。standby_mode = 'on'
primary_conninfo = 'host=192.168.9.195 port=5432 user=replicator password=yourpassword'
trigger_file = '/tmp/postgresql.trigger.5432'
启动 PostgreSQL 服务:在两台服务器上启动服务。
sudo systemctl start postgresql
安装 Keepalived:如前所述,在两台服务器上安装 keepalived
。
sudo yum install keepalived -y
配置 Keepalived:编辑 /etc/keepalived/keepalived.conf
文件,在两台服务器上配置主从。
在主服务器上:
vrrp_instance VI_1 {
state MASTER
interface ens160
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.9.200
}
track_script {
chk_postgresql
}
}
vrrp_script chk_postgresql {
script "/usr/lib/keepalived/check_postgres.sh"
interval 2
weight 2
}
在从服务器上:
vrrp_instance VI_1 {
state BACKUP
interface ens160
virtual_router_id 51
priority 50
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.9.200
}
track_script {
chk_postgresql
}
}
vrrp_script chk_postgresql {
script "/usr/lib/keepalived/check_postgres.sh"
interval 2
weight 2
}
创建 PostgreSQL 检查脚本:在两台服务器上创建脚本 /usr/lib/keepalived/check_postgres.sh
,用于检查 PostgreSQL 服务状态。
#!/bin/bash
PSQL="/usr/bin/psql"
PGUSER="postgres"
PGDATABASE="yourdatabase"
$PSQL -U $PGUSER -d $PGDATABASE -c "select 1;" >/dev/null 2>&1
if [ $? != 0 ]; then
exit 1
fi
exit 0
确保脚本可执行:
sudo chmod +x /usr/lib/keepalived/check_postgres.sh
启动 Keepalived:在两台服务器上启动 Keepalived 服务。
sudo systemctl start keepalived
sudo systemctl enable keepalived
验证
配置 PostgreSQL
和 Keepalived
时,一定要考虑数据一致性和故障转移的机制。这通常涉及仔细的规划和测试,以确保在生产环境中可靠地运行。