麒麟信安安全容器魔方高可用部署指南:双节点MySQL复制与Keepalived配置
【免费下载链接】ks-scmcKylinSec security Container magic Cube (Back-end), provides streamlined, efficient and secure containers and management.项目地址: https://gitcode.com/openeuler/ks-scmc
前往项目官网免费下载:https://ar.openeuler.org/ar/
麒麟信安安全容器魔方(KylinSec security Container magic Cube,简称ks-scmc)是一款提供精简、高效且安全的容器及管理功能的后端解决方案。本文将详细介绍如何通过双节点MySQL主从复制与Keepalived配置,实现ks-scmc的高可用部署,确保服务持续稳定运行。
🌟 高可用架构概览
ks-scmc的高可用部署架构主要依赖两个核心组件:
- 双节点MySQL主从复制:实现数据库数据的实时同步与故障自动切换
- Keepalived:提供虚拟IP(VIP)管理与节点健康检查,确保服务访问的连续性
架构优势
- 📌 消除单点故障,提升系统稳定性
- 📌 自动故障转移,减少人工干预
- 📌 数据实时同步,保障数据一致性
- 📌 服务无缝切换,用户无感知
📋 环境准备
服务器要求
- 至少2台物理或虚拟机节点(推荐配置:4核8G内存)
- 操作系统:openEuler 22.03 LTS或更高版本
- 网络:节点间网络互通,建议配置双网卡
软件依赖
- MySQL 8.0或更高版本
- Keepalived 2.0.10或更高版本
- Docker 20.10.x或更高版本
前期准备
克隆项目代码库:
git clone https://gitcode.com/openeuler/ks-scmc安装基础依赖:
cd ks-scmc/scripts chmod +x setup_db.sh ./setup_db.sh
🛠️ 双节点MySQL主从复制配置
1. 数据库初始化
ks-scmc提供了数据库初始化脚本,位于项目的scripts/etc/database.sql文件中。执行以下命令初始化数据库结构:
mysql -u root -p < scripts/etc/database.sql2. 主节点配置(Node A)
修改MySQL配置文件/etc/my.cnf,添加以下配置:
[mysqld] server-id=1 log_bin=mysql-bin binlog_format=row expire_logs_days=7 max_binlog_size=100M binlog_do_db=ks_scmc重启MySQL服务:
systemctl restart mysqld创建复制用户并授权:
CREATE USER 'repl'@'%' IDENTIFIED BY 'your_password'; GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%'; FLUSH PRIVILEGES;查看主节点状态:
SHOW MASTER STATUS;记录File和Position的值,用于从节点配置。
3. 从节点配置(Node B)
修改MySQL配置文件/etc/my.cnf,添加以下配置:
[mysqld] server-id=2 log_bin=mysql-bin binlog_format=row relay_log=mysql-relay-bin log_slave_updates=1 read_only=1重启MySQL服务:
systemctl restart mysqld配置主从复制:
CHANGE MASTER TO MASTER_HOST='NodeA_IP', MASTER_USER='repl', MASTER_PASSWORD='your_password', MASTER_LOG_FILE='mysql-bin.000001', MASTER_LOG_POS=154;启动从节点复制:
START SLAVE;检查从节点状态:
SHOW SLAVE STATUS\G确保Slave_IO_Running和Slave_SQL_Running均为Yes。
4. 自动故障转移配置
ks-scmc提供了MySQL双主复制脚本,位于scripts/ha/mysql_double_master.sh。执行以下命令配置自动故障转移:
cd ks-scmc/scripts/ha chmod +x mysql_double_master.sh ./mysql_double_master.sh --master1=NodeA_IP --master2=NodeB_IP --user=repl --password=your_password🔄 Keepalived配置
1. 安装Keepalived
yum install -y keepalived2. 主节点配置(Node A)
创建配置文件/etc/keepalived/keepalived.conf:
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_mysql { script "/scripts/ha/check_mysql.sh" interval 2 weight 2 } 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_mysql } }3. 从节点配置(Node B)
创建配置文件/etc/keepalived/keepalived.conf:
! Configuration File for keepalived global_defs { router_id LVS_DEVEL } vrrp_script chk_mysql { script "/scripts/ha/check_mysql.sh" interval 2 weight 2 } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 90 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.1.100/24 } track_script { chk_mysql } }4. 健康检查脚本
创建MySQL健康检查脚本/scripts/ha/check_mysql.sh:
#!/bin/bash mysql -u root -p'your_password' -e "show databases;" > /dev/null 2>&1 if [ $? -ne 0 ]; then systemctl stop keepalived fi添加执行权限:
chmod +x /scripts/ha/check_mysql.sh5. 启动Keepalived
systemctl start keepalived systemctl enable keepalived🚀 ks-scmc服务配置
1. 修改配置文件
编辑scripts/etc/server.toml文件,更新数据库连接信息:
[database] type = "mysql" host = "192.168.1.100" port = 3306 user = "root" password = "your_password" dbname = "ks_scmc"2. 启动服务
cd ks-scmc make build systemctl start ks-scmc-controller systemctl enable ks-scmc-controller🧪 高可用测试
1. 故障转移测试
手动停止主节点MySQL服务,观察从节点是否自动接管:
# 在主节点执行 systemctl stop mysqld检查虚拟IP是否漂移到从节点:
ip addr show eth02. 数据同步测试
在新的主节点创建测试数据,检查原主节点恢复后数据是否同步:
INSERT INTO test_table (name) VALUES ('ha_test');📝 总结
通过本文介绍的双节点MySQL主从复制与Keepalived配置,您已成功实现ks-scmc的高可用部署。这种架构能够有效保障服务的持续稳定运行,减少因单点故障导致的服务中断。
如需进一步优化,可考虑:
- 添加更多节点,实现多主多从架构
- 配置监控告警,及时发现并处理异常
- 定期备份数据,防止数据丢失
完整的部署脚本和配置文件可在项目的scripts/ha/目录下找到,包括:
- keepalived.sh
- mysql_double_master.sh
【免费下载链接】ks-scmcKylinSec security Container magic Cube (Back-end), provides streamlined, efficient and secure containers and management.项目地址: https://gitcode.com/openeuler/ks-scmc
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考