适用场景: MySQL、PostgreSQL等关系型数据库的读写分离和高可用
安装软件包
# Ubuntu/Debian
sudo apt-get install haproxy keepalived
# CentOS/RHEL
sudo yum install haproxy keepalived
配置HAProxy (haproxy.cfg)
global
log /dev/log local0
maxconn 4000
user haproxy
group haproxy
daemon
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend mysql_front
bind *:3306
default_backend mysql_back
backend mysql_back
balance roundrobin
server mysql1 192.168.1.101:3306 check
server mysql2 192.168.1.102:3306 check backup
配置Keepalived (keepalived.conf)
vrrp_script chk_haproxy {
script "killall -0 haproxy"
interval 2
weight 2
}
vrrp_instance VI_1 {
interface eth0
state MASTER
virtual_router_id 51
priority 101
virtual_ipaddress {
192.168.1.100
}
track_script {
chk_haproxy
}
}
启动服务
sudo systemctl start haproxy
sudo systemctl start keepalived
sudo systemctl enable haproxy
sudo systemctl enable keepalived
适用场景: MySQL高级读写分离和查询缓存
安装ProxySQL
# Ubuntu/Debian
sudo apt-get install proxysql
# CentOS/RHEL
sudo yum install proxysql
配置ProxySQL
-- 登录管理界面
mysql -u admin -padmin -h 127.0.0.1 -P 6032
-- 添加后端服务器
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (10,'192.168.1.101',3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (10,'192.168.1.102',3306);
INSERT INTO mysql_servers(hostgroup_id,hostname,port) VALUES (20,'192.168.1.101',3306);
-- 配置监控用户
INSERT INTO mysql_users(username,password,default_hostgroup) VALUES ('monitor','monitorpassword',10);
-- 保存配置
LOAD MYSQL SERVERS TO RUNTIME;
SAVE MYSQL SERVERS TO DISK;
配置高可用
适用场景: PostgreSQL连接池和高可用
安装PgBouncer
# Ubuntu/Debian
sudo apt-get install pgbouncer
# CentOS/RHEL
sudo yum install pgbouncer
配置PgBouncer (pgbouncer.ini)
[databases]
mydb = host=192.168.1.101 port=5432 dbname=mydb
[pgbouncer]
listen_addr = *
listen_port = 6432
auth_type = md5
auth_file = /etc/pgbouncer/userlist.txt
pool_mode = transaction
配置高可用
健康检查机制
会话保持
监控和告警
性能调优
安全配置
多节点部署
配置同步
定期测试
日志集中
版本管理
通过以上方案,您可以在Linux环境中构建一个高可用的数据库代理层,提高数据库服务的可用性和性能。