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

Linux系统之企业级调度器与高可用集群练习 - kevin

  • 1.完成mysql 一主一从,一主多从,级联复制课程案例练习

  • 一主一从

  • 集群环境架构

  • 主机IP 角色 MySQL版本

  • 10.0.0.12 master 8.4.7

  • 10.0.0.15 slave 8.4.7

  • 因为是Rocky环境,所以必须保证两台Rocky主机的selinux环境关闭

  • 准备MySQL环境

  • yum install mysql8.4-server -y

  • mkdir -pv /data/mysql/logbin

  • chown -R mysql:mysql /data/mysql/

  • 主节点mysql配置

  • vim /etc/my.cnf.d/mysql-server.cnf

  • [mysqld]

  • server-id=177

  • log_bin=/data/mysql/logbin/mysql-bin

  • mysql_native_password=on

  • 重启服务后,查看二进制日志文件

  • ll /data/mysql/logbin/

  • mysql -e "show binary logs;"

  • 同步账号授权

  • create user repluser@'10.0.0.%' identified by '123456';

  • grant replication slave on . to repluser@'10.0.0.%';

  • flush privileges;

  • 从节点配置

  • vim /etc/my.cnf.d/mysql-server.cnf

  • [mysqld]

  • server-id=183

  • read-only

  • log-bin=/data/mysql/logbin/mysql-bin

  • mysql_native_password=on

  • 重启服务后,查看效果

  • 从角色配置数据同步角色

  • master主机确认数据效果

  • show binary logs;

  • show binary logs status;

  • 配置与主角色连接

  • 在从节点上配置主从同步

  • CHANGE REPLICATION SOURCE TO SOURCE_HOST='10.0.0.12',

  • SOURCE_USER='repluser', SOURCE_PASSWORD='123456',

  • SOURCE_PORT=3306,SOURCE_LOG_FILE='mysql-bin.000002',

  • SOURCE_LOG_POS=879,SOURCE_SSL=1;

  • 查看从节点状态

  • show slave status\G

  • 如果看到:Slave_IO_Running 和 Slave_SQL_Running 是两个No,说明,主从已经配置好了,只不过没有启动而已。

  • 启动同步

  • start replica;

  • 数据同步测试(在主数据库创建数据库与数据表,在从节点查看确认)

  • 一主多从

  • 操作要点:原有主从配置不动,新增一个 slave 节点,server-id需要改

  • 主节点导出备份数据,复制到新增节点

  • mysqldump -A --source-data=1 --single-transaction >all.sql

  • scp all.sql root@10.0.0.18:

  • 在从节点修改备份文件

  • vim all.sql

  • CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE='mysql-bin.000002',

  • SOURCE_LOG_POS=454; #将此内容修改为如下所示

  • CHANGE REPLICATION SOURCE TO

  • SOURCE_HOST='10.0.0.12',

  • SOURCE_USER='repluser',

  • SOURCE_PASSWORD='123456',

  • SOURCE_PORT=3306,

  • SOURCE_SSL=1,

  • SOURCE_LOG_FILE='mysql-bin.000002', SOURCE_LOG_POS=454;

  • 从节点启动服务,导入备份

  • set sql_log_bin=0;

  • source /root/all.sql;

  • 主角色启动同步操作

  • start replica;

  • show replica status\G

  • 数据同步测试

  • 级联复制

  • 在此架构中,中间节点要开启 log_slave_updates 选项,保证中间节点复制过来的数据也能写入二进制日志,为其它节点提供数据源。

  • 中间节点要保证: 1 开启二进制日志, 2 从主节点上同步过来的数据,要能写到二进制日志中

  • mysql8.0以后默认开启了此项,其它版本或 mariadb 需要手动开启,

  • 开启中继的能力

  • 中间节点配置:vim /etc/my.cnf.d/mysql-server.cnf

  • log_slave_updates # 增加此选项

  • 重启服务器环境

  • systemctl restart mysqld.service

  • 中间节点和从节点间基准数据同步

  • 确认中间节点上有同步过来的账号信息, 如果没有的话,需要自己单独创建即可。

  • 导出中间节点数据,拷贝至从节点

  • mysqldump -A -F --single-transaction --source-data=1 > middle-all.sql

  • 重置从节点的环境

  • systemctl stop mysqld

  • rm -rf /var/lib/mysql/*

  • rm -rf /data/mysql/logbin/*

  • systemctl start mysqld.service

  • 修改中间节点同步配置文件

  • vim middle-all.sql

  • CHANGE REPLICATION SOURCE TO SOURCE_LOG_FILE='mysql-bin.000005',

  • SOURCE_LOG_POS=158;

  • 修改上面语句为

  • CHANGE REPLICATION SOURCE TO

  • SOURCE_HOST='10.0.0.15',

  • SOURCE_USER='repluser',

  • SOURCE_PASSWORD='123456',

  • SOURCE_PORT=3306,

  • SOURCE_SSL=1,

  • SOURCE_LOG_FILE='mysql-bin.000005',

  • SOURCE_LOG_POS=158;

  • 启动服务

  • systemctl start mysqld.service

  • 临时关闭二进制日志,并确认

  • set sql_log_bin=0;

  • select @@sql_log_bin;

  • 导入备份数据

  • source /root/middle-all.sql

  • 开启二进制日志

  • set sql_log_bin=1;

  • 查看主从状态

  • show replica status\G

  • 启动同步

  • start replica;

  • 数据同步测试:在主节点上新增一条数据,删除一条数据,在中间节点与从节点查看数据

  • 2.总结lvs概念,lvs工作原理,lvs集群模式特性

  • LVS 简明总结

  • 一、概念

  • LVS(Linux Virtual Server),Linux 虚拟服务器,是基于 Linux 内核的四层负载均衡技术,工作在 TCP/IP 传输层,转发网络请求,实现多台后端服务器集群对外统一服务,提升并发、可用性与容错能力。

  • 二、工作原理

    1. 客户端请求到达调度器(Director)(LVS 核心节点)。
    1. 调度器根据调度算法,将请求转发给后端真实服务器(Real Server)。
    1. 后端服务器处理请求并响应,按对应模式返回数据给客户端。
    1. 全程只转发报文,不处理应用数据,性能极高。
  • 三、三大集群模式及特性

  • 1. NAT 模式(网络地址转换)

    • 原理:请求、响应双向流量都经过调度器,调度器修改 IP/端口完成转发。
    • 特性:
    • 后端 RS 可跨网段,配置简单
    • 调度器为瓶颈,并发上限低
    • 支持任意操作系统
  • 2. DR 模式(直接路由,最常用)

    • 原理:请求走调度器,响应由后端服务器直接回客户端,只改写 MAC 地址。
    • 特性:
    • 性能最强、并发最高
    • 所有节点必须在同一局域网
    • 后端需配置抑制 ARP 响应
  • 3. TUN 模式(IP 隧道)

    • 原理:请求包外层封装新 IP 报文转发,响应直回客户端。
    • 特性:
    • 后端服务器可跨公网/跨网段
    • 性能次于 DR,高于 NAT
    • 所有节点需开启 IP 隧道功能
  • 3.总结lvs的调度算法和原理

  • LVS 调度器根据算法选择后端真实服务器,分静态算法、动态算法两大类。

  • 一、静态算法(不看后端负载,仅按规则分配)

    1. RR 轮询
  • 原理:请求按顺序依次分发到每台 RS,轮流分配。

  • 重点:平均分配,不考虑服务器性能、负载。

    1. WRR 加权轮询
  • 原理:给服务器设置权重,权重越高,分到的请求越多。

  • 重点:适配性能不均的服务器,常用。

    1. SH 源地址哈希
  • 原理:根据客户端源 IP哈希计算,固定 IP 永远分配到同一台 RS。

  • 重点:实现会话保持,用户始终访问同一台后端。

    1. DH 目标地址哈希
  • 原理:根据目标 IP 哈希分发。

  • 重点:多用于多虚拟 IP场景。

  • 二、动态算法(实时检测后端负载,择优分配)

    1. LC 最小连接
  • 原理:把新请求分给当前连接数最少的 RS。

  • 重点:优先挑压力最小的机器。

    1. WLC 加权最小连接(默认算法,生产最常用)
  • 原理:结合权重 + 连接数,综合计算负载分配。

  • 重点:兼顾性能与负载,综合最优。

    1. LCR 基于局部性最小连接
  • 原理:优先将同一 IP 请求分配到曾访问过的 RS,负载高再切换。

  • 重点:兼顾会话保持 + 负载均衡。

    1. NQ 最少队列
  • 原理:空闲服务器优先分配,无空闲再按连接数分配。

  • 重点:减少请求排队。

  • 速记重点

  • 静态:规则固定,不看负载;动态:实时看连接 / 压力。

  • 机器性能一致 → RR

  • 机器性能不一 → WRR

  • 需要会话保持 → SH

  • 生产默认通用 → WLC

  • 4.总结lvs配置文件用注释写明相关的含义说明

  • ipvsadm 是 LVS 管理工具,无独立配置文件,命令即配置,逐条注释:

  • 1. 清空原有LVS规则

  • ipvsadm -C

  • 2. 添加虚拟服务(VIP+端口、调度算法)

  • -A:新增虚拟服务

  • -t:TCP协议

  • 192.168.1.100:80:虚拟IP+对外端口

  • -s wlc:指定调度算法为 加权最小连接(WLC,LVS默认)

  • ipvsadm -A -t 192.168.1.100:80 -s wlc

  • 3. 添加后端真实服务器 RS

  • -a:添加真实节点

  • -r 192.168.1.101:80:后端服务器IP+端口

  • -g:DR模式(直接路由,生产最常用)

  • -m:NAT 模式

  • -i:TUN 隧道模式

  • -w 1:设置权重为1,权重越大分配请求越多

  • ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -g -w 1

  • ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -g -w 1

  • 关键配置项

  • state:MASTER 主节点、BACKUP 备节点,实现故障自动切换

  • virtual_ipaddress:对外统一访问的 VIP

  • lb_algo:LVS 调度算法(rr/wrr/wlc/sh 等)

  • lb_kind:LVS 工作模式(DR/NAT/TUN)

  • weight:后端服务器权重,控制请求分配比例

  • TCP_CHECK:后端节点健康检测,故障节点自动剔除

  • 查看当前LVS规则

  • ipvsadm -Ln

  • 5.完成lvs部署安装 nat案例和dr案例的实战练习

  • lvs部署安装

  • 定制网卡配置,ens33是NAT模式,ens37是仅主机模式,仅主机模式不用配置网关

  • 编辑网卡配置/etc/netplan/50-cloud-init.yaml(ubuntu)

  • /etc/sysconfig/network-scripts/ifcfg-ens33(rocky)

  • rocky网卡配置生效:

  • nmcli connectiondown ens33

  • systemctl restart NetworkManager

  • ubuntu网卡配置生效:netplan apply

  • 检测效果:ip a s ens33;ip a s ens37

  • 定制默认的网关:ip route add default via 192.168.8.13

  • 安装ipvsadm服务

  • apt install ipvsadm

  • 定制lvs集群服务

  • ipvsadm -A -t 10.0.0.13:80 -s rr

  • 增加RS主机列表

  • ipvsadm -a -t 10.0.0.13:80 -r 192.168.8.14 -m

  • ipvsadm -a -t 10.0.0.13:80 -r 192.168.8.15 -m

  • nat模式,所以再添加RS主机的时候,需要使用-m选项

  • 查看集群主机效果

  • ipvsadm -Ln

  • 客户端测试

  • LVS的NAT模式主要有两部来组成:

  • lvs主机接收到客户端数据包进行向后端转发的时候,基于DNAT方法更改ip报文首部中的目标ip地址

  • lvs主机接收到RS主机数据包进行向用户转发的时候,基于SNAT方法更改ip报文首部中的源ip地址

  • 6.完成keepalived安装和配置文件总结

  • keepalived安装

  • RHEL/Rocky/CentOS

  • yum install -y keepalived

  • Ubuntu/Debian

  • apt install -y keepalived

  • 启动服务:

  • systemctl start keepalived

  • systemctl enable keepalived

  • systemctl status keepalived

  • 配置文件总结

  • 配置文件路径

  • /etc/keepalived/keepalived.conf

  • 主节点(master)

  • global_defs {

  • router_id LVS_MASTER # 主机标识,集群唯一

  • }

  • VRRP 主备漂移

  • vrrp_instance VI_1 {

  • state MASTER # 主节点

  • interface eth0 # 绑定网卡

  • virtual_router_id 51 # 组ID,主备必须一致

  • priority 100 # 优先级,主>备

  • advert_int 1 # 心跳间隔(秒)

  • authentication { # 认证

  • auth_type PASS

  • auth_pass 123456

  • }

  • virtual_ipaddress { # 浮动VIP

  • 192.168.1.100/24

  • }

  • }

  • LVS 负载均衡

  • virtual_server 192.168.1.100 80 {

  • delay_loop 6 # 健康检查间隔

  • lb_algo wlc # 调度算法

  • lb_kind DR # LVS模式 DR/NAT/TUN

  • persistence_timeout 180 # 会话保持

  • protocol TCP

  • real_server 192.168.1.101 80 {

  • weight 1 # 权重

  • TCP_CHECK { # 端口健康检查

  • connect_timeout 3

  • }

  • }

  • real_server 192.168.1.102 80 {

  • weight 1

  • TCP_CHECK {

  • connect_timeout 3

  • }

  • }

  • }

  • 从节点(BACKUP)

  • 仅改两处,其余和主节点一致:

  • state BACKUP

  • priority 90 # 优先级低于主节点

  • 改完配置重载:systemctl reload keepalived

  • 关键要点

  • VRRP:实现 VIP 漂移、主备高可用

  • virtual_router_id:同集群所有节点必须相同

  • priority:数值越大,优先级越高

  • lb_algo:LVS 调度算法

  • lb_kind:LVS 工作模式

  • TCP_CHECK:后端节点故障自动剔除

  • 7.完成keepalived和nginx高可用案例实战

  • 目前,ubuntu、rocky、openeuler系统用的都是 2.2.8 版本的keepalived软件。

  • Ubuntu系统安装相关软件,这里面两台ubuntu安装keepalived环境

  • apt install -y keepalived nginx

  • 编辑配置文件/etc/keepalived/keepalived.conf

  • global_defs {

  • router_id nginx_master

  • }

  • 检测Nginx状态脚本

  • vrrp_script check_nginx {

  • script "/etc/keepalived/check_nginx.sh"

  • interval 2 # 检测间隔2秒

  • weight -20 # Nginx异常,优先级降20

  • }

  • vrrp_instance VI_NGINX {

  • state MASTER # 主节点

  • interface ens33 # 改成你的实际网卡名(用ip a查看)

  • virtual_router_id 51

  • priority 100 # 优先级高于备节点

  • advert_int 1

  • authentication {

  • auth_type PASS

  • auth_pass 112233

  • }

  • virtual_ipaddress {

  • 192.168.8.100/24 # 浮动VIP

  • }

  • track_script {

  • check_nginx # 引用Nginx检测脚本

  • }

  • }

  • 在16主机配置从节点

  • global_defs {

  • router_id nginx_backup

  • }

  • vrrp_script check_nginx {

  • script "/etc/keepalived/check_nginx.sh"

  • interval 2

  • weight -20

  • }

  • vrrp_instance VI_NGINX {

  • state BACKUP # 备节点

  • interface ens33 # 同主节点网卡

  • virtual_router_id 51

  • priority 80 # 优先级更低

  • advert_int 1

  • authentication {

  • auth_type PASS

  • auth_pass 112233

  • }

  • virtual_ipaddress {

  • 192.168.8.100/24

  • }

  • track_script {

  • check_nginx

  • }

  • }

  • 创建 Nginx 健康检测脚本

  • sudo vim /etc/keepalived/check_nginx.sh

  • !/bin/bash

  • 检测Nginx进程

  • if ! pgrep nginx > /dev/null

  • then

  • Nginx挂掉,停止keepalived触发切换

  • systemctl stop keepalived

  • fi

  • 授权脚本:sudo chmod +x /etc/keepalived/check_nginx.sh

  • nginx删除默认配置

  • rm -rf /etc/nginx/sites-enabled/default

  • 定制专属配置

  • cat > /etc/nginx/conf.d/vhost.conf <<-eof

  • upstream webserves {

  • server 10.0.0.14:80 weight=1;

  • server 10.0.0.17:80 weight=1;

  • }

  • server {

  • listen 80;

  • location / {

  • proxy_pass http://webserves/;

  • }

  • }

  • eof

  • echo 10.0.0.14 nginx-RS1 > /usr/share/nginx/html/index.html

  • nginx -t

  • systemctl restart nginx

  • 客户端测试:curl 192.168.8.100

  • 8.完成keepalived和haproxy实现高可用的案例实战

  • haproxy主要用于为基于 TCP 和 HTTP 的应用程序提供高可用性、负载均衡和代理服务。它可以接收来自客户端的请求,并根据预设的规则将请求分发到后端的多个服务器上,从而实现服务器集群的负载均衡,提高系统的整体性能和可靠性。

  • 环境准备

  • 代理主机两台节点都关闭keepalived和nginx环境:systemctl stop nginx keepalived

  • 检查效果:hostname -I

  • HAProxy可以通过不存在的ip地址,作为反向代理的入口。只不过需要让内核参数支持该功能

  • echo 'net.ipv4.ip_nonlocal_bind = 1' >>/etc/sysctl.conf

  • sysctl -p

  • 安装软件:apt install haproxy -y

  • 定制配置

  • cat >> /etc/haproxy/haproxy.cfg <<- eof

  • listen web_http

  • bind 10.0.0.100:80

  • server web1 10.0.0.14:80 check

  • server web2 10.0.0.17:80 check

  • listen stats

  • mode http

  • bind 10.0.0.13:9999

  • stats enable

  • log global

  • stats uri /haproxy-status

  • stats auth haadmin:123456

  • eof

  • 启动服务:systemctl start haproxy

  • 网页访问 10.0.0.13:9999/haproxy-status

  • 另一台配置基本相同

  • 配置keepalived

  • 编写检测haproxy的功能脚本

  • vim /etc/keepalived/check_haproxy.sh

  • !/bin/bash

  • 检查 haproxy 进程是否存在

  • /usr/bin/killall -0 haproxy > /dev/null 2>&1

  • if [ $? -ne 0 ]; then

  • systemctl start haproxy

  • /usr/bin/killall -0 haproxy

  • if [ $? -ne 0 ]; then

  • systemctl stop keepalived

  • fi

  • fi

  • 赋予脚本权限:chmod a+x /etc/keepalived/check_haproxy.sh

  • 定制keepalived的配置文件:vim /etc/keepalived/conf.d/cluster1.conf

  • vrrp_script chk_keepalived {

  • script "/etc/keepalived/check_haproxy.sh" # 定制效果,不推荐使用 /bin/bash方式

  • interval 1

  • weight -30

  • fall 3

  • rise 2

  • timeout 2

  • }

  • vrrp_instance VI_1 {

  • state MASTER

  • interface ens37

  • virtual_router_id 50

  • priority 100

  • unicast_src_ip 192.168.8.13

  • unicast_peer {

  • 192.168.8.16

  • }

  • authentication {

  • auth_type PASS

  • auth_pass 1111

  • }

  • virtual_ipaddress {

  • 10.0.0.100 dev ens33 label ens33:1

  • }

  • notify_master "/etc/keepalived/send_message_by_email.sh master"

  • notify_backup "/etc/keepalived/send_message_by_email.sh backup"

  • notify_fault "/etc/keepalived/send_message_by_email.sh fault"

  • track_script {

  • chk_keepalived

  • }

  • }

  • 重启服务:systemctl restart leepalived

  • 检查效果:hostname -I

  • slave节点配置基本相同

  • 测试访问后端应用:curl 10.0.0.100

  • 尝试关闭haproxy服务,再次测试

  • 尝试禁用haproxy服务启动,使用mask方式禁止haproxy服务启动

  • 关闭服务,再次访问:systemctl stop haproxy

http://www.rkmt.cn/news/1525345.html

相关文章:

  • PowerPC MPC7450异常处理机制:从机器检查到系统复位的实战解析
  • 爱回收质检透明吗?看完自动化检测流程再判断 - 新闻快传
  • 如何快速实现Android Studio中文界面:开发效率提升终极指南
  • 第十七章 反射与设计模式
  • 15分钟搞定Paperless-ngx多语言配置:从中文界面到全球文档管理的终极指南
  • 2026年6月工业吊扇厂家推荐,工业风扇/工业大吊扇/工业节能风扇/工业散热风扇/永磁工业风扇,工业吊扇产品哪个好 - 品牌推荐师
  • GoWxDump终极指南:跨平台微信数据提取与取证分析完整教程
  • 2026 济南奢侈品回收实测:添价收成本地靠谱变现优选 - 薛定谔的梨花猫
  • 终极指南:用Awesome-Dify-Workflow轻松构建专业级AI工作流 [特殊字符]
  • Linux命令-pinky(轻量级finger查询工具)
  • 罐头厂主要分布在哪里?产区特点有哪些差异?
  • AssetRipper完全指南:Unity游戏逆向分析与资源提取的终极解决方案
  • PowerQUICC II IMA微码实现:ATM反向复用的嵌入式软硬件协同设计
  • 2026武汉相亲机构实力盘点:合规甄选与高效脱单+正规交友渠道全指南 - 互联网科技品牌测评
  • 如何高效使用Qwerty Learner:本地词库存储与英语学习技术完全指南
  • 爱回收门店全程实测,估价和成交价到底差多少? - 新闻快传
  • Xbox手柄冲动触发器终极解锁:X1nput让PC游戏震动体验全面升级
  • 在爱回收卖手机,估价和到手价能差多少 - 新闻快传
  • 遗传算法实战精要:选择压力、适应度缩放与精英保留的工程化调优
  • 5大核心功能解密:dex2jar如何成为Android逆向工程必备神器
  • 3步掌握哔咔漫画下载器:打造个人专属漫画图书馆的完整攻略
  • 如何在macOS上获得终极歌词体验:LyricsX完整配置指南
  • 爱回收报价透明吗?三品类实测后聊聊我的判断 - 新闻快传
  • 【水下飞行器】基于matlab水下飞行器操控系统UVMS任务优先运动学控制与双重操作【含Matlab源码 15624期】
  • 洛雪音乐音源终极配置指南:5分钟快速搭建免费无损音乐库
  • Obsidian Dataview完整指南:3步将笔记库变为智能数据库
  • Vue + Axios 从入门到封装:拦截器、错误处理、请求取消、接口管理全搞定
  • APK-Installer:在Windows上安装安卓应用的终极完整指南
  • Android Studio中文界面终极指南:3分钟告别英文困扰的完整解决方案
  • 终极指南:如何让10美元鼠标在macOS上超越苹果触控板体验