linux双master怎么
linux双master怎么详细介绍
在 Linux 环境下实现 “双主” 架构(双主服务器)通常指两台服务器同时作为主节点提供服务,相互备份或协同工作,常见于数据库、文件系统或高可用性(HA)场景。以下以 MySQL 双主复制 和 Keepalived 双主高可用 两种典型场景为例,说明配置思路和步骤:
一、MySQL 双主复制(双向主从复制)
适用场景
两台 MySQL 服务器互为主从,同时支持读写,数据双向同步,适用于需要高可用性和双向数据同步的场景(需注意避免写入冲突)。
配置步骤
- 准备两台服务器(节点 A 和节点 B)
- 服务器 A:IP 192.168.1.100,端口 3306
- 服务器 B:IP 192.168.1.101,端口 3306
- 修改 MySQL 配置文件(
my.cnf)- 节点 A 配置:ini
- 节点 B 配置:ini
- 重启 MySQL 服务:
systemctl restart mysql
- 节点 A 配置:ini
- 在两台节点上创建复制账户
- 登录 MySQL,执行:sql
IDENTIFIEDSLAVE
FLUSH
- 登录 MySQL,执行:sql
- 配置双向复制关系
- 在节点 A 上配置指向节点 B 的主从关系:sql
CHANGE MASTERMASTER_HOST
MASTER_USER
MASTER_PASSWORD
MASTER_LOG_FILE
MASTER_LOG_POS
SLAVE
- 在节点 B 上配置指向节点 A 的主从关系:sql
CHANGE MASTERMASTER_HOST
MASTER_USER
MASTER_PASSWORD
MASTER_LOG_FILE
MASTER_LOG_POS
SLAVE
- 在节点 A 上配置指向节点 B 的主从关系:sql
- 验证复制状态
- 登录节点 A 和 B,执行:sql
SLAVE \G确保
Slave_IO_Running和Slave_SQL_Running均为Yes。
- 登录节点 A 和 B,执行:sql
注意事项
- 主键冲突:通过
auto_increment_offset和auto_increment_increment避免自增 ID 冲突。 - 写入冲突:双向写入可能导致数据冲突,需在应用层避免同一数据同时修改,或使用冲突检测机制(如时间戳、版本号)。
- 延迟问题:异步复制可能导致数据延迟,需监控复制状态。
二、Keepalived 双主高可用(Active-Active)
适用场景
两台服务器同时运行服务(如 Nginx、Web 服务),各自承载部分流量,故障时互相接管,实现负载均衡和高可用。
配置步骤
- 安装 Keepalived
bashyum keepalivedkeepalived
- 配置 Keepalived(节点 A 和节点 B)
- 节点 A 配置(
/etc/keepalived/keepalived.conf):iniglobal_defs {router_id MASTER_1 # 节点标识(节点B设为MASTER_2)
}
vrrp_instance VI_1 {
state MASTER # 节点B设为BACKUP,但双主模式需配合不同虚拟IP
interface eth0 # 网卡名称
virtual_router_id 51 # 虚拟路由ID(同一VRRP组需一致)
priority 100 # 节点B设为90(优先级高的为主)
advert_int 1 # 心跳间隔(秒)
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.200 # 虚拟IP 1(节点A主用,节点B备用)
}
}
vrrp_instance VI_2 {
state BACKUP # 节点B设为MASTER,对应另一虚拟IP
interface eth0
virtual_router_id 52 # 另一虚拟路由ID
priority 90 # 节点B设为100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.1.201 # 虚拟IP 2(节点B主用,节点A备用)
}
}
- 节点 B 配置:交换
priority和state(如节点 A 的 VI_1 是 MASTER 优先级 100,节点 B 的 VI_1 则是 BACKUP 优先级 90;VI_2 反之)。
- 节点 A 配置(
- 启动 Keepalived
bashsystemctl start keepalivedsystemctl keepalived
- 验证虚拟 IP
- 节点 A 应绑定
192.168.1.200,节点 B 应绑定192.168.1.201。 - 故障测试:停止节点 A 的 Keepalived,虚拟 IP 200 应漂移到节点 B;恢复后自动切回。
- 节点 A 应绑定
三、双主架构优缺点
| 优点 | 缺点 |
|---|---|
| 高可用性,无单点故障 | 配置复杂,需处理数据同步 / 冲突 |
| 支持双向读写(如 MySQL) | 可能存在复制延迟或资源竞争 |
| 负载分担(Active-Active) | 需额外监控和冲突解决机制 |
四、总结
- 数据库双主:核心是双向复制,需解决自增 ID 和写入冲突,适合对写入可用性要求高的场景。
- 高可用双主:通过 Keepalived 等工具实现虚拟 IP 漂移,适合负载均衡和服务冗余。
- 关键注意点:数据一致性、网络稳定性、故障切换测试。
根据具体场景(数据库、Web 服务、文件系统等),选择合适的双主方案,并严格测试故障转移和数据同步逻辑。