热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用LVS与ldirectord实现高可用负载均衡

本文介绍了如何通过LVS(LinuxVirtualServer)结合ldirectord工具来实现服务器的健康检查及负载均衡功能。环境设置包括一个LVS节点和两个真实服务器节点,通过配置ldirectord进行健康状态监测,确保系统的高可用性。

为了提高Web服务的可用性和性能,本文将指导您如何使用LVS(Linux Virtual Server)和ldirectord来构建一个高可用性的负载均衡系统。以下是详细的步骤和配置说明:


1. 环境规划:






























主机名IP地址角色
LVS节点192.168.188.11 (公网), 192.168.255.137 (私网)负载均衡器
RS1192.168.255.12 (私网)真实服务器1
RS2192.168.255.13 (私网)真实服务器2
测试机192.168.188.14用于测试负载均衡效果

LVS的初始配置请参考前文关于LVS-NAT模式的介绍。


2. 安装ldirectord:


[root@LVS ~]# yum localinstall ldirectord-4.1.1-3.40.el7.noarch.rpm -y

3. 查看安装后的文件结构:


[root@LVS ~]# rpm -ql ldirectord
/etc/ha.d # 主配置文件目录
/etc/ha.d/conf
/etc/ha.d/resource.d
/etc/ha.d/resource.d/ldirectord
/etc/logrotate.d/ldirectord
/etc/rc.d/init.d/ldirectord
/run/ldirectord
/usr/lib/systemd/system/ldirectord.service # 服务文件
/usr/lib/tmpfiles.d/ldirectord.conf # 配置模板
/usr/sbin/ldirectord # 主程序,由Perl编写
/usr/share/doc/ldirectord-4.1.1
/usr/share/doc/ldirectord-4.1.1/ldirectord.cf # 主配置文件模板
/usr/share/man/man8/ldirectord.8.gz

4. 编辑ldirectord的主要配置文件:


[root@LVS ~]# vim /etc/ha.d/ldirectord.cf
checktimeout=3
checkinterval=1
autoreload=yes
quiescent=no
logfile="/var/log/ldirectord.log"
virtual=192.168.188.11:80 ## 虚拟IP地址
real=192.168.255.12:80 masq 2 ## 真实服务器1,权重2
real=192.168.255.13:80 masq 1 ## 真实服务器2,权重1
fallback=127.0.0.1:80 ## 当所有真实服务器均失效时,访问此地址
service=http
scheduler=wrr ## 负载均衡算法
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80

5. 配置Web页面以测试负载均衡效果:


[root@LVS ~]# echo "服务器正在维护..." > /var/www/html/index.html
[root@RS1 ~]# echo "$(hostname -I)" > /var/www/html/index.html
[root@RS2 ~]# echo "$(hostname -I)" > /var/www/html/index.html

6. 启动ldirectord服务:


[root@LVS ~]# systemctl start ldirectord.service

7. 监控ipvsadm的状态变化:


[root@LVS ~]# watch ipvsadm -ln

8. 在测试机上验证负载均衡效果:


[root@test ~]# for ((i=1;i<=10;i++)); do curl 192.168.188.11; done
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12
192.168.255.12
192.168.255.13
192.168.255.12

9. 测试健康检查功能:


首先,停止RS1上的HTTP服务,观察ldirectord的行为:


[root@RS1 ~]# systemctl stop httpd.service

此时,您应该能够看到RS1从负载均衡池中被移除。


接着,停止RS2上的HTTP服务:


[root@RS2 ~]# systemctl stop httpd.service

当所有后端服务器都出现故障时,ldirectord会自动切换到预设的备用地址127.0.0.1,显示“服务器正在维护...”的信息。


最后,再次测试访问情况:


[root@test ~]# for ((i=1;i<=10;i++)); do curl 192.168.188.11; done
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...
服务器正在维护...

推荐阅读
  • 本文详细介绍了Java编程语言中的核心概念和常见面试问题,包括集合类、数据结构、线程处理、Java虚拟机(JVM)、HTTP协议以及Git操作等方面的内容。通过深入分析每个主题,帮助读者更好地理解Java的关键特性和最佳实践。 ... [详细]
  • 深入解析 Apache Shiro 安全框架架构
    本文详细介绍了 Apache Shiro,一个强大且灵活的开源安全框架。Shiro 专注于简化身份验证、授权、会话管理和加密等复杂的安全操作,使开发者能够更轻松地保护应用程序。其核心目标是提供易于使用和理解的API,同时确保高度的安全性和灵活性。 ... [详细]
  • Nginx 反向代理与负载均衡实验
    本实验旨在通过配置 Nginx 实现反向代理和负载均衡,确保从北京本地代理服务器访问上海的 Web 服务器时,能够依次显示红、黄、绿三种颜色页面以验证负载均衡效果。 ... [详细]
  • 本文详细介绍了如何在云服务器上配置Nginx、Tomcat、JDK和MySQL。涵盖从下载、安装到配置的完整步骤,帮助读者快速搭建Java Web开发环境。 ... [详细]
  • DNN Community 和 Professional 版本的主要差异
    本文详细解析了 DotNetNuke (DNN) 的两种主要版本:Community 和 Professional。通过对比两者的功能和附加组件,帮助用户选择最适合其需求的版本。 ... [详细]
  • 本文深入探讨了Linux系统中网卡绑定(bonding)的七种工作模式。网卡绑定技术通过将多个物理网卡组合成一个逻辑网卡,实现网络冗余、带宽聚合和负载均衡,在生产环境中广泛应用。文章详细介绍了每种模式的特点、适用场景及配置方法。 ... [详细]
  • 本文详细介绍如何使用Samba软件配置CIFS文件共享服务,涵盖安装、配置、权限管理及多用户挂载等关键步骤。通过具体示例和命令行操作,帮助读者快速搭建并优化Samba服务器。 ... [详细]
  • 从零开始构建完整手机站:Vue CLI 3 实战指南(第一部分)
    本系列教程将引导您使用 Vue CLI 3 构建一个功能齐全的移动应用。我们将深入探讨项目中涉及的每一个知识点,并确保这些内容与实际工作中的需求紧密结合。 ... [详细]
  • MySQL 数据库迁移指南:从本地到远程及磁盘间迁移
    本文详细介绍了如何在不同场景下进行 MySQL 数据库的迁移,包括从一个硬盘迁移到另一个硬盘、从一台计算机迁移到另一台计算机,以及解决迁移过程中可能遇到的问题。 ... [详细]
  • 深入解析 Spring Security 用户认证机制
    本文将详细介绍 Spring Security 中用户登录认证的核心流程,重点分析 AbstractAuthenticationProcessingFilter 和 AuthenticationManager 的工作原理。通过理解这些组件的实现,读者可以更好地掌握 Spring Security 的认证机制。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 通过Web界面管理Linux日志的解决方案
    本指南介绍了一种利用rsyslog、MariaDB和LogAnalyzer搭建集中式日志管理平台的方法,使用户可以通过Web界面查看和分析Linux系统的日志记录。此方案不仅适用于服务器环境,还提供了详细的步骤来确保系统的稳定性和安全性。 ... [详细]
  • 采用IKE方式建立IPsec安全隧道
    一、【组网和实验环境】按如上的接口ip先作配置,再作ipsec的相关配置,配置文本见文章最后本文实验采用的交换机是H3C模拟器,下载地址如 ... [详细]
  • 并发编程 12—— 任务取消与关闭 之 shutdownNow 的局限性
    Java并发编程实践目录并发编程01——ThreadLocal并发编程02——ConcurrentHashMap并发编程03——阻塞队列和生产者-消费者模式并发编程04——闭锁Co ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
author-avatar
少少_LV
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有