当前位置: 首页 > news >正文

综合实现案例 LVS keepalived mysql 等

基于企业级高可用架构的 Linux 案例,整合 Nginx、HTTPS、LVS、Keepalived、MySQL 等服务,实现 Web 服务的负载均衡、高可用性及数据持久化。

案例场景:高可用 Web服务架构

目标

构建高可用 Web 集群,支持负载均衡和故障自动切换。
实现 HTTPS 加密访问,保障数据传输安全。
使用 MySQL 主从复制实现数据库高可用和读写分离。
 

前提配置环境

 

1. 负载均衡与 Web 服务合并(2 台主机)
角色复用:原架构中独立的 LVS 节点和 Nginx 节点合并为同一台服务器,减少资源占用。
LVS 配置:仍采用 DR 模式,VIP 绑定在两台主机上,通过 Keepalived 实现主备切换。
Nginx 配置:直接在本地运行,处理 HTTP/HTTPS 请求,同时作为 LVS 的后端真实服务器(RS)。

2. 数据库高可用集群(2 台主机)
MySQL 主从复制:保留主从架构,实现读写分离和数据备份。
数据库 VIP:通过 Keepalived 为 MySQL 集群分配虚拟 IP,当主库故障时自动切换到从库。

部署过程

部署 LVS+Keepalived+Nginx+PHP(10.0.0.12)

配置 LVS(DR 模式)
两台主机均执行(以 10.0.0.12 为例):# 加载 IPVS 模块
modprobe ip_vs
modprobe ip_vs_rr# 内核参数配置(关闭 ARP 广播,避免 VIP 冲突)
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce

配置 Keepalived 主节点(10.0.0.12)配置文件 /etc/keepalived/keepalived.conf:

global_defs {router_id LVS_WEB_MASTER
}
vrrp_instance VI_1 {state MASTERinterface ens160virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass web_cluster}virtual_ipaddress {10.0.0.100/24  # Web 服务 VIP}# 监控 Nginx 服务(自定义脚本,防止 Nginx 故障时 VIP 未切换)notify_master "/etc/keepalived/check_nginx.sh start"notify_backup "/etc/keepalived/check_nginx.sh stop"
}

备节点(10.0.0.15)配置类似,修改 state 为 BACKUP,priority 为 90。

配置 Nginx+HTTPS 两台主机均执行:

sudo certbot --nginx -d example.com # 生成 HTTPS 证书

Nginx 配置文件(/etc/nginx/sites-available/default)保持不变,直接处理本地 PHP 应用请求。

2. 部署 MySQL 主从 + Keepalived(10.0.0.13) 安装 MySQL

sudo apt install -y mysql-server
主库配置
# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 1
log_bin = /var/log/mysql/mysql-bin.log
binlog_format = ROW
default-storage-engine = InnoDB创建复制用户
CREATE USER 'repl'@'%' IDENTIFIED BY 'mysql_repl_password';
GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%';
FLUSH PRIVILEGES;从库配置
# /etc/mysql/mysql.conf.d/mysqld.cnf
[mysqld]
server-id = 2
relay_log = /var/log/mysql/mysql-relay.log
read_only = 1启用从库复制
CHANGE MASTER TO 
MASTER_HOST='192.168.1.20',
MASTER_USER='repl',
MASTER_PASSWORD='mysql_repl_password',
MASTER_LOG_FILE='mysql-bin.000001',
MASTER_LOG_POS=0;START SLAVE;配置数据库 Keepalived(主从节点均执行)
主节点配置文件 /etc/keepalived/keepalived.conf:
global_defs {router_id MYSQL_MASTER
}
vrrp_instance VI_2 {state MASTERinterface ens160virtual_router_id 52  # 与从库一致priority 100advert_int 1authentication {auth_type PASSauth_pass db_cluster}virtual_ipaddress {10.0.0.200/24  # 数据库 VIP}# 监控 MySQL 服务(自定义脚本,主库故障时切换)notify_master "/etc/keepalived/check_mysql.sh start"notify_backup "/etc/keepalived/check_mysql.sh stop"
}从库配置类似,修改 state 为 BACKUP,priority 为 90。3. 应用配置调整(Nginx 连接数据库)
在 Nginx 服务器的 PHP 应用中,数据库连接地址改为 数据库 VIP(10.0.0.100),实现主从切换透明化:
<?php
$pdo = new PDO('mysql:host=10.0.0.200;dbname=test', 'user', 'password');
?>

验证与测试

  1. Web 服务高可用性

    • 访问 http://10.0.0.100(Web VIP),刷新页面观察请求是否轮询到两台 Nginx 主机。
    • 停止主节点 Keepalived,验证 VIP 漂移至备节点,服务不中断。
  2. 数据库高可用性

    • 在主库(10.0.0.13)插入数据,检查从库(10.0.0.17)是否同步。
    • 停止主库 Keepalived,验证数据库 VIP 漂移至从库,应用仍可通过 VIP 连接数据库。
  3. HTTPS 功能
    通过 https://example.com 访问,确保加密连接正常。

相关文章:

  • 深入解析Spring Boot与Redis集成:高效缓存与性能优化实践
  • 《软件工程》第 3 章 -需求工程概论
  • vae 视频截图 复习 gans和vae的原理区别
  • 【通用智能体】Dify API 文件上传功能: 两种传参方式的API传参方式
  • 【Pandas】pandas DataFrame add_prefix
  • window 显示驱动开发-呈现开销改进
  • 系统分析师备考总结
  • Ubuntu从0到1搭建监控平台:本地部署到公网访问实战教程Cpolar穿透与Docker部署全过程
  • 加密货币犯罪的涉案金额如何计算?
  • 使用 `.inl` 文件和 `#pragma once` 解决模板函数头文件膨胀问题指南
  • 网络编程学习笔记——TCP网络编程
  • window 显示驱动开发-视频内存的直接交替(二)
  • [TriCore] 01.QEMU 虚拟化 TriCore 架构中的寄存器 指令
  • HTML应用指南:利用GET请求获取全国捞王锅物料理门店位置信息
  • 快速了解 GO之 Defer 延迟操作
  • 拥塞控制算法cubic 和bbr
  • HTML流星雨
  • golang channel 的特点、原理及使用场景
  • 进行性核上性麻痹护理之道:助力患者舒适生活
  • (11)Service Mesh架构下Java应用实现零信任安全模型
  • 宠物交易网站开发/线下课程seo
  • 大连在哪里/seo排名系统
  • 好用的手机网站主页/怎么推广自己的网站?
  • 湖州交通网站集约化建设项目/网络代运营推广
  • 西安东郊网站建设公司/百度登录
  • 深圳企业排名/排名seo怎么样