在Linux系统中部署高可用(High Availability, HA)架构需要综合考虑负载均衡、故障转移、数据同步等多个环节。以下是分步骤的详细方案:
方案A:Keepalived + Nginx/HAProxy
# 在两台LB服务器上安装Keepalived和Nginx
apt-get install keepalived nginx
# 配置Keepalived(主节点)
vim /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
state MASTER # 备用机改为BACKUP
interface eth0
virtual_router_id 51
priority 100 # 备用机设为更低值(如90)
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 # VIP
}
}
验证VIP漂移:
ip addr show eth0 # 查看VIP归属
方案A:容器化部署(Kubernetes)
# 使用kubeadm部署K8s集群(至少3个节点)
kubeadm init --control-plane-endpoint "LOAD_BALANCER_DNS:6443"
kubectl apply -f https://docs.projectcalico.org/manifests/calico.yaml
方案B:传统服务器+Pacemaker
# 在所有节点安装Pacemaker/Corosync
apt-get install pacemaker corosync pcs
pcs cluster auth node1 node2 -u hacluster -p password
pcs cluster setup --name my_cluster node1 node2
pcs cluster start --all
MySQL Group Replication(MGR)示例:
-- 在每个节点执行
SET SQL_LOG_BIN=0;
CREATE USER repl@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON *.* TO repl@'%';
FLUSH PRIVILEGES;
SET SQL_LOG_BIN=1;
-- 初始化组复制
CHANGE MASTER TO MASTER_USER='repl', MASTER_PASSWORD='password' FOR CHANNEL 'group_replication_recovery';
START GROUP_REPLICATION;
# Prometheus告警规则示例
groups:
- name: HA-Alerts
rules:
- alert: InstanceDown
expr: up{job="nginx"} == 0
for: 1m
labels:
severity: critical
ab
或wrk
模拟高并发流量
bash
ab -n 10000 -c 100 http://192.168.1.100/
SHOW SLAVE STATUS\G
stonith
设备或仲裁磁盘通过以上步骤,可构建一个99.99%可用性的Linux高可用架构。实际部署时需根据业务需求调整组件选型(如替换HAProxy为Traefik,或使用云厂商的托管服务如AWS ALB+RDS)。