1、硬件:服务器、交换机。2个服务器用来做web,1个服务器做LVS-DR,2个mysql服务器,2个交换机
2、运行环境:linux as 4
服务器都使用2个网络地址,一个公网地址和一个私有网络地址。设置为公网ip的网络接口连接在一个交换机,设置为私有网络ip的网络接另外一个交换机,处于安全和网络带宽考虑,网络存储设备和数据库只使用私有网络地址。用户----LVS-DR---->WEB1---- MYSQL
---->WEB2----
真实
ip地址
(RIP):LVS-DR 220.202.254.2
WEB1 220.202.254.20 私网:192.168.88.1
WEB2 220.202.254.21 私网:192.168.88.2
MYSQL 私网:192.168.88.3
虚拟
ip地址(
VIP) WEB虚拟地址(vip1) 220.202.254.1
一、配置LVS/DR。
我的系统都是linux as4 u6 (2.6.9-5.EL)
实现LVS/DR最重要的两个东西是ipvs内核模块和ipvsadm工具包,幸运的是,当前的发行版已经包含ipvs内核模块,不必再像旧的内核版本需要打这个补丁,ipvsadm需要从网上下载安装,下面总结一下这个过程:
1、 检查内核模块,看
ipvs 模块是否被加载
[root@TestAs4 ~]# lsmod |grep ip_vs
ip_vs_wlc 1857 1
ip_vs 86433 3 ip_vs_wlc
(二) 控制器配置:既可以使用脚本也可以更改系统的配置文件 /etc/sysconfig/ipvsadm。在实际应用中,我建议用脚本,这样的话,维护和移植lvs会很方便。下面给出本案使用的lvs/dr脚本:
[root@TestAs4 bin]# more lvsdr
#!/bin/bash
RIP1=220.202.254.20RIP2=220.202.254.21 VIP1=220.202.254.1 /etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of DirectorServer"
# set the Virtual IP Address and sysctl parameter
/sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up#/sbin/ifconfig eth0:1 $VIP2 broadcast $VIP2 netmask 255.255.255.255 up
/sbin/route add -host $VIP1 dev eth0:0#/sbin/route add -host $VIP2 dev eth0:1
echo "1" >/proc/sys/net/ipv4/ip_forward
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
#Web Apache
/sbin/ipvsadm -A -t $VIP1:80 -s wlc -p 120
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g
#Run LVS
/sbin/ipvsadm
;;
stop)
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/ip_forward
/sbin/ipvsadm -C
/sbin/ifconfig eth0:0 down
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up把web服务所需的ip地址(虚拟地址)绑定在辅助接口eth0:0。在LVS方案中,虚拟ip地址与普通网络接口大大不同,这点需要特别注意。虚拟ip地址的广播地址是它本,子网掩码255.255.255.255。
为什么要这样呢?因为有若干机器要使用同一个ip地址,用本身做广播地址和把子网掩码设成4个255就不会造成ip地址冲突了,否则lvs将不能正常转发访问请求。
route add -host $VIP1 dev eth0:0添加主机路由,这2条可有可无,较新的linux发行版能正确路由这个主机地址。
echo "1" >/proc/sys/net/ipv4/ip_forward启用ip转发功能。
ipvsadm –C清空ipvs转发表。
ipvsadm -A -t $VIP1:80 -s wlc -p 120 添加一个虚拟服务,服务协议是tcp(-t);服务类型是web($VIP1:80);-s 表示采用wlc这种调度算法转发数据包(调度算法包括:rr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq);-p表示连接的持续时间为120秒,这个会话时间是根据实际情况调整的,如果这个值设置得不合理,用户将得到非常糟糕的访问效果。
有2个方法检验LVS/DR是否正常运行了:(1)查看内核是否列出ip_vs模块;(2)直接运行ipvsadm –l看输出是否有转发规则。
真实服务器配置虚拟ip地址。LVS可以把服务请求转发到各种各样的操作系统.
(1) linux as4 u6服务器设置虚拟服务器:与LVS/DR控制类似,既可以修改配置文件也可以用脚本,相对来讲,还是脚本方便,下面是某个服务器设置虚拟ip地址的脚本:
[root@cwmtest1 bin]# more lvs
#!/bin/bash
#description:start realserver
#chkconfig
VIP1=220.202.254.1
/etc/rc.d/init.d/functions
case "$1" in
start)
echo " start LVS of REALServer"
/sbin/ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
stop)
/sbin/ifconfig lo:0 down
echo "close LVS Directorserver"
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
ifconfig lo:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up 跟LVS/DR控制器一样,广播地址设置为虚拟地址本身,子网掩码4个255,不同的是,虚拟ip地址被绑定在环回(loopback)子接口,而不是物理接口的子接口。
echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore 一共四行,其目的是关闭arp响应。
一、运行LVS/DR
在LVS/DR运行lvs脚本,在真实服务器上启用虚拟地址,就可以把整个LVS/DR运行起来了。
几个需要关注的问题
一、控制器高可靠性。一个普遍的做法是使用HA,用2个服务器做双机。在条件有限的情况下,又考虑不增加网络结构的复杂性,可以把LVS/DR控制器脚本放在不同的服务器上,一旦当前使用的LVS/DR控制器出故障,立即启用其它服务器的控制器脚本,可以把停机时间控制在可以接受的范围。
分享到:
相关推荐
Piranha作为一个出色的HA_LVS实现工具,通过提供WEB界面和简化配置,大大降低了负载均衡高可用解决方案的技术门槛。对于希望快速部署高效稳定的负载均衡系统的企业,Piranha无疑是一个值得推荐的解决方案。
【LVS(Linux Virtual Server)负载均衡设置指南】 LVS,全称为Linux Virtual Server,是基于Linux操作系统的一种高性能、高可用的网络服务器集群技术。它通过将请求分发到多个真实的服务器,实现了负载均衡,提高...
- **特点**:简单易懂,实现容易,但不考虑服务器的实际负载情况。 ##### 2. 加权轮叫(Weighted Round Robin) - **原理**:根据各服务器的能力进行权重分配,使得处理能力强的服务器承担更多的请求。 - **特点**...
**LVS(Linux Virtual Server)**,全称为Linux虚拟服务器,是基于IP层的一种负载均衡技术,由章文卓博士在1998年开发,它通过将请求分发到多个真实服务器上,实现了高性能、高可用的集群系统。本教程将详细介绍LVS...
- **定义**:VS/NAT是最简单的负载均衡方式,它通过网络地址转换(NAT)技术实现。 - **工作原理**:调度器将接收到的客户端请求通过NAT技术重定向到内部的真实服务器上。响应数据包同样需要经过调度器,由调度器...
为了验证LVS+Keepalived的HA功能,我们构建了一个简单的测试环境。所有机器均关闭了防火墙以避免不必要的干扰。首先,确保系统内核支持LVS所需的IPVS模块。可以通过以下命令检查: ```bash [root@localhost ~]# ...
LVS能够在Linux内核2.4及以后的版本中实现网络请求的负载均衡,其主要架构基于netfilter框架。netfilter是一个用于在网络栈中进行数据包处理的子系统,它允许开发者定义各种规则,并根据这些规则对经过的数据包进行...
- **keepalived**:通过配置文件管理LVS集群,不仅可以实现LVS集群的管理,还支持健康检查等功能,提高集群的高可用性。 #### 三、LVS集群部署实例 假设我们有一个简单的Web集群环境,包含一台负载均衡服务器lb01...
LVS-DR模式简单高效,适用于对实时性要求较高的场景,如Web服务、数据库服务等。同时,结合心跳线同步和监控机制,可以构建出一个高可用、可扩展的服务器集群。在实际应用中,应根据业务规模和需求进行适当调整和...
为了更好地理解LVS/NAT模式的具体配置步骤,我们以一个简单的实验环境为例。 - **实验环境**: - 分发器:主机54 - eth0:192.168.4.54(私有网络) - eth1:192.168.2.54(公有网络) - 真实服务器: - 主机...
2. **配置灵活**:LVS支持多种负载调度算法和转发模式,可以根据不同的场景选择最适合的策略,同时Keepalived的配置也相对简单,只需要一个配置文件即可完成复杂的高可用设置。 3. **高可用性**:Keepalived通过实时...
LVS(Linux Virtual Server)是基于Linux内核的一种免费开源的负载均衡解决方案,它能实现高性能且高可用性的Web服务。本文将详细介绍如何搭建一个基本的LVS集群环境,并解释每一步的具体操作与目的。 #### 二、...
- **PIRANHA 工具**:用于配置 LVS 的图形化工具,简化了 LVS 的部署过程。 - **高可用性系统和服务**:讨论如何使用 Red Hat Enterprise Linux 和 LVS 构建高性能的系统和服务。 - **版本**:本教材针对的是 Red ...
通过对LVS DR模式及其配置脚本的深入分析,我们可以了解到如何通过简单的脚本实现一个基本的LVS集群。这种配置方式不仅能够满足大多数场景下的需求,而且易于管理和维护。当然,在实际生产环境中,还需要考虑到更多...
3. **Keepalived**:用于实现LVS调度器的高可用,当主调度器出现故障时,备份调度器能够接管工作。 ### 四、LVS部署与配置 LVS的部署涉及到多个步骤,包括: 1. **规划网络**:确定Director、Real Server的网络...
4. **易用性**:配置过程相对简单,提供了多种负载均衡策略。 5. **稳定性与可扩展性**:系统稳定可靠,易于扩展,可以随着业务增长添加更多服务器。 【LVS的安装与配置】 在Linux内核2.4版本及更高版本上,LVS...
《LVS参考手册》是关于Linux Virtual Server(LVS)设计与实现的深入指南,旨在为读者提供构建可伸缩网络服务的全面解决方案。LVS作为Linux内核的一部分,提供了强大的负载均衡和高可用性功能,是搭建高性能、高可靠...