`
ithero
  • 浏览: 145621 次
社区版块
存档分类
最新评论

lvs DR模式

阅读更多

集群技术主要分为三大类:

  • 高可用性(High Available Cluster),例:Linux-HA
  • 负载均衡(Load balancing Cluster),例:LVSMOSIX
  • 高性能计算(High Performance Computing),例:Beowulf

 

我们这里使用RedHat AS 3.x,LVS,Linux-HA,Ldirectord,构造一个高可用的负载均衡集群系统。如图:

各层的作用:

 

  • Load Balancer(负载均衡器):

    Load Balancer是整个集群系统的前端,负责把客户请求转发到Real Server上。

    Backup是备份Load Balancer,当Load Balancer不可用时接替它,成为实际的Load Balancer。

    Load Balancer通过Ldirectord监测各Real Server的健康状况。在Real Server不可用时
    把它从群中剔除,恢复时重新加入。
  • Server Array(服务器群):

    Server Array是一组运行实际应用服务的机器,比如WEB, Mail, FTP, DNS, Media等等。

    在实际应用中,Load Balancer和Backup也可以兼任Real Server的角色。
  • Shared Storage(共享存储):

    Shared Storage为所有Real Server提供共享存储空间和一致的数据内容。

 

各服务器IP分配:

 

Virtual IP: 192.168.136.10
Load Balancer: 192.168.136.11
Backup: 192.168.136.12
Real Server 1: 192.168.136.101
Real Server 2: 192.168.136.102
Real Server 3: 192.168.136.103

 

IPVS

IPVS是LVS集群系统的核心软件,它的主要作用是:

 

  • 安装在Load Balancer上,把发往Virtual IP的请求转发到Real Server上。

 

IPVS的负载均衡机制有三种,这里使用IP Tunneling机制:

 

  • Virtual Server via NAT
  • Virtual Server via IP Tunneling
  • Virtual Server via Direct Routing

 

IPVS的负载调度算法有十种:

  • 轮叫(Round Robin)
  • 加权轮叫(Weighted Round Robin)
  • 最少链接(Least Connections)
  • 加权最少链接(Weighted Least Connections)
  • 基于局部性的最少链接(Locality-Based Least Connections)
  • 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)
  • 目标地址散列(Destination Hashing )
  • 源地址散列(Source Hashing)
  • 最短期望延迟(Shortest Expected Delay)
  • 无须队列等待(Never Queue)

 

IPVS安装主要包括三方面:

 

  • 在Load Banlancer上安装IPVS内核补丁
  • 在Load Banlancer上安装IPVS管理软件
  • 在Real Server上安装ARP hidden内核补丁

 

关于如何编译内核请参考其他文档,这里使用从UltraMonkey下载的已编译好的内核。

在Load Banlancer、Backup和Real Server上使用同一内核,IPVS和ARP hidden都已编译在这个内核里:

 

 

wget http://www.ultramonkey.org/download/2.0.1/rh.el.3.0/RPMS/mkinitrd-3.5.13-1.um.1.i386.rpm
wget http://www.ultramonkey.org/download/2.0.1/rh.el.3.0/RPMS/kernel-2.4.21-27.0.2.EL.um.1.i686.rpm
wget http://www.ultramonkey.org/download/2.0.1/rh.el.3.0/RPMS/kernel-smp-2.4.21-27.0.2.EL.um.1.i686.rpm
rpm -Fhv mkinitrd-3.5.13-1.um.1.i386.rpm
rpm -Fhv kernel-2.4.21-27.0.2.EL.um.1.i686.rpm

 

 

在Load Banlancer和Backup上安装IPVS管理软件:

 

wget http://www.linuxvirtualserver.org/software/kernel-2.4/ipvs-1.0.10.tar.gz

tar zxf ipvs-1.0.10.tar.gz

cd ipvs-1.0.10/ipvs/ipvsadm

make install

chkconfig --del ipvsadm

 

配置IPVS(/etc/sysconfig/ipvsadm),添加Real Server:

 

-A -t 192.168.136.10:80 -s rr

-a -t 192.168.136.10:80 -r 192.168.136.11:80 -i

-a -t 192.168.136.10:80 -r 192.168.136.12:80 -i

 

-a -t 192.168.136.10:80 -r 192.168.136.101:80 -i

-a -t 192.168.136.10:80 -r 192.168.136.102:80 -i

-a -t 192.168.136.10:80 -r 192.168.136.103:80 -i

 

相关链接:

 

Kernel:http://www.kernel.org/

IPVS和IPVSadm:http://www.linuxvirtualserver.org/software/ipvs.html

ARP hidden:http://www.ssi.bg/~ja/#hidden

 

注意事项:

 

1. Kernel,IPVS,IPVSadm,ARP hidden之间的版本必须对应。

2. 自己编译内核时,从http://www.kernel.org/下载标准内核源文件,不要使用发行版的内核源文件。

3. Kernel 2.4.28和2.6.10及以上版本已内置IPVS,有些Linux发行版也在其内核里编译了IPVS。

4. ARP hidden可以用arp_ignore/arp_announce或者arptables代替

 

HeartBeat

HeartBeat是Linux-HA的高可用性集群软件,它的主要作用是:

 

  • 安装在Load Balancer和Backup上,运行于active/standby模式。

    当Load Balancer失效时,Backup自动激活,成为实际的Load Balancer。
  • 切换到active模式时,按顺序启动Virtual IP、IPVS和Ldirectord。

    切换到standby模式时,按顺序关闭Ldirectord、IPVS和Virtual IP。

 

HeartBeat串口线连接测试方法:

 

在Load Balancer上:cat < /dev/ttyS0

在Backup上:echo hello > /dev/ttyS0

 

修改主机名(/etc/hosts):

 

127.0.0.1         localhost.localdomain localhost

192.168.136.11    loadbalancer

 

192.168.136.12    backup

 

安装:

 

groupadd -g 694 haclient

useradd -u 694 -g haclient hacluster


rpm -ivh /mnt/cdrom/RedHat/RPMS/glib2-devel-*


wget http://www.packetfactory.net/libnet/dist/libnet.tar.gz

tar zxf libnet.tar.gz

 

cd libnet

./configure 

make

make install


wget http://www.linux-ha.org/download/heartbeat-1.99.4-tar.gz

tar zxf heartbeat-1.99.4.tar.gz

cd heartbeat-1.99.4

./ConfigureMe configure --disable-swig --disable-snmp-subagent

make

make install

cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/

cp ldirectord/ldirectord.cf /etc/ha.d/

chkconfig --add heartbeat

chkconfig --del ldirectord

 

主配置文件(/etc/ha.d/ha.cf):

 

#debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility local0

keepalive 2

deadtime 30

 

warntime 10

initdead 120

udpport 694

baud 19200

serial /dev/ttyS0

mcast eth0 225.0.0.1 694 1 0

# 当主节点恢复后,是否自动切回

auto_failback on


# stonith用来保证共享存储环境中的数据完整性

#stonith baytech /etc/ha.d/conf/stonith.baytech


# watchdog能让系统在出现故障1分钟后重启该机器。这个功能可以帮助服务器在确实停止心跳后能够重新恢复心跳。

# 如果使用该特性,则在内核中装入"softdog"内核模块,用来生成实际的设备文件,输入"insmod softdog"加载模块。

# 输入"grep misc /proc/devices"(应为10),输入"cat /proc/misc | grep watchdog"(应为130)。

# 生成设备文件:"mknod /dev/watchdog c 10 130" 。

#watchdog /dev/watchdog


node loadbalancer

node backup


# 默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。

# 所以当网络中断时,并不会进行Load Balancer和Backup之间的切换。

# 可以通过ipfail插件,设置'ping nodes'来解决这一问题。详细说明参考hearbeat文档。

#ping 192.168.136.1 172.16.0.1

ping_group group1 192.168.136.1 192.168.136.2

respawn root /usr/lib/heartbeat/ipfail

apiauth ipfail gid=root uid=root


# 其他一些插件可以在/usr/lib/heartbeat下找到

#apiauth ipfail uid=hacluster

#apiauth ccm uid=hacluster

#apiauth cms uid=hacluster

#apiauth ping gid=haclient uid=alanr,root

#apiauth default gid=haclient

 

资源文件(/etc/ha.d/haresources):

 

loadbalancer lvs IPaddr::192.168.136.10/24/eth0 ipvsadm ldirectord

 

认证文件(/etc/ha.d/authkeys),选取一种认证方式,这个文件的权限必须是600:

 

auth 1

1 crc

#2 sha1 sha1_any_password

#3 md5 md5_any_password

 

相关链接:

 

Linux-HA:http://www.linux-ha.org

 

 

 

ldirectord

安装HeartBeat过程中,已经自动安装了Ldirectord,它的作用是:

 

  • 监测Real Server,当Real Server失效时,把它从Load Balancer列表中删除,恢复时重新添加。

 

配置(/etc/ha.d/ldirectord.cf):

 

# Global Directives

checktimeout=3

 

checkinterval=1

fallback=127.0.0.1:80

autoreload=yes

logfile="/var/log/ldirectord.log"

quiescent=yes

# A sample virual with a fallback that will override the gobal setting

virtual=192.168.136.10:80

        real=192.168.136.11:80  ipip

        real=192.168.136.12:80  ipip

        real=192.168.136.101:80 ipip

        real=192.168.136.102:80 ipip

        real=192.168.136.103:80 ipip

        fallback=127.0.0.1:80   gate

        service=http

        request="test.html"

        receive="Test Page"

        virtualhost=www.funbsd.net

        scheduler=rr

        #persistent=600

        #netmask=255.255.255.255

        protocol=tcp

 

在每个Real Server的中添加监控页:

 

echo "Test Page" >> /var/www/html/test.html

 

Patch

在启动集群系统之前,我们认为包括Load Balancer和Backup在内的所有服务器都是Real Server。

在服务器上添加以下脚本/etc/init.d/tunl,用来配置tunl端口,应用arp补丁:

 

#!/bin/sh

# chkconfig: 2345 70 10

# description: Config tunl port and apply arp patch

 

VIP=192.168.136.10

. /etc/rc.d/init.d/functions

case "$1" in

    start)

        echo "Tunl port starting"

        ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up

        echo 1 > /proc/sys/net/ipv4/ip_forward

        echo 1 > /proc/sys/net/ipv4/conf/all/hidden

        echo 1 > /proc/sys/net/ipv4/conf/tunl0/hidden

        ;;

    stop)

        echo "Tunl port closing"

        ifconfig tunl0 down

        echo 1 > /proc/sys/net/ipv4/ip_forward

        echo 0 > /proc/sys/net/ipv4/conf/all/hidden

        ;;

    *)

        echo "Usage: $0 {start|stop}"

        exit 1

esac

 

如果有多个Virutal IP,可以使用tunl0:0,tunl0:1...。

 

chmod 755 /etc/init.d/tunl

chkconfig --add tunl

 

在Load Balancer和Backup上,这个脚本的启动级必须先于heartbeat,关闭级必须后于heartbeat。

Scripts

在HeartBeat资源文件(/etc/ha.d/haresources)中定义了实现集群所需的各个软件的启动脚本。

这些脚本必须放在/etc/init.d或者/etc/ha.d/resource.d目录里,启动顺序不能变:

 

loadbalancer lvs IPaddr::192.168.136.10/24/eth0 ipvsadm ldirectord

 

IPaddr的作用是启动Virutal IP,它是HeartBeart自带的一个脚本。

ipvsadm的作用是在启动的时候把所有Real Server加入群中。

ldirectord的作用是启动ldirectord监控程序。

lvs的作用是为启动Load Balancer做准备,关闭tunl端口,取消arp补丁:

 

#!/bin/sh

# chkconfig: 2345 90 10

# description: Preparing for Load Balancer and Real Server switching

 

VIP=192.168.136.10

. /etc/rc.d/init.d/functions

case "$1" in

    start)

        echo "Preparing for Load Balancer"

        ifconfig tunl0 down

        echo 1 > /proc/sys/net/ipv4/ip_forward

        echo 0 > /proc/sys/net/ipv4/conf/all/hidden

        ;;

    stop)

        echo "Preparing for Real Server"

        ifconfig tunl0 $VIP netmask 255.255.255.255 broadcast $VIP up

        echo 1 > /proc/sys/net/ipv4/ip_forward

        echo 1 > /proc/sys/net/ipv4/conf/all/hidden

        echo 1 > /proc/sys/net/ipv4/conf/tunl0/hidden

        ;;

    *)

        echo "Usage: lvs {start|stop}"

        exit 1

esac

 

 

chmod 755 /etc/ha.d/resource.d/lvs

 

启动集群系统:

 

/etc/init.d/heartbeat start

分享到:
评论

相关推荐

    lvs DR模式总结详细笔记文档

    LVS DR 模式总结详细笔记文档 LVS(Linux Virtual Server)是一种基于 Linux 的负载均衡解决方案,能够将incoming请求分布到多个后端服务器上,以提高系统的可扩展性和高可用性。在 DR 模式下,LVS 可以与 ...

    centos7 lvs DR模式1

    **LVS DR模式详解** LVS(Linux Virtual Server)是一种基于IP层的负载均衡技术,DR(Direct Routing)模式是其工作模式之一,它通过直接路由的方式实现负载均衡。在这个案例环境中,我们将深入理解DR模式的搭建...

    实验2 LVS DR模式实现负载均衡.md

    实验2 LVS DR模式实现负载均衡.md

    掌握LVS-DR模式原理、流程特点及搭建.doc

    LVS-DR 模式原理、流程特点及搭建 LVS-DR 模式是 Load Balancer 的一种实现方式,它可以将incoming请求分配到多个 Real Server 上,以提高系统的可用性和性能。LVS-DR 模式的核心思想是使用 Director 服务器来分配...

    linux lvs 的DR 模式

    ### Linux LVS的DR模式详解 #### 一、概述 Linux Virtual Server (LVS) 是一个基于 Linux 内核的高性能负载均衡解决方案,它能够通过调度算法将客户端请求分发到多个后端服务器(Real Server),从而实现负载均衡...

    LVS/NAT与LVS/DR模式集群的概述与配置

    ### LVS/NAT与LVS/DR模式集群的概述与配置 #### 一、集群及其重要性 **集群**的概念是指一组通过高速网络互连的计算单元,它们以单一系统的模式进行管理,对外提供一致的服务体验。集群技术的核心优势在于其能够...

    LVS DR 模式 VIP脚本

    LVS VIP 脚本,用在后端的Nginx 上面,每台Nginx上都要运行。

    LVS负载均衡DR模式安装调试介绍.pptx

    **LVS负载均衡DR模式详解** LVS(Linux Virtual Server)是基于Linux内核的高性能负载均衡解决方案,它能够将网络请求分发到多个后端服务器,以实现高可用性和可扩展性。DR(Direct Routing)模式是LVS中的一种工作...

    Redhat Linux 6 操作系统LVS_DR模式配置

    Redhat Linux 6 操作系统LVS_DR模式配置的详细文档,按照文档的部署和配置可实现 LVS_DR模式的负载均衡。

    LVS 工作模式以及工作原理1

    **LVS DR模式** 1. **网络结构**:DR模式下,VIP(Virtual IP)与所有Real Server在同一网络段内。 2. **工作原理**: - 客户端向VIP发送请求,VIP依据调度算法选择合适的Real Server。 - VIP修改请求包的MAC地址...

    LVS-DR集群.doc

    LVS支持三种常见的工作模式:NAT模式、DR模式(Direct Routing模式)和IP Tunneling模式。本文将重点介绍LVS通过DR模式实现后台网站服务的代理。 在DR模式下,LVS作为负载均衡器,它并不修改数据包的源或目标IP地址...

    LVS脚本语言

    其中,DR模式由于其实现简单且性能较高,在实际部署中被广泛采用。 #### 二、LVS DR模式详解 LVS的DR模式是通过直接路由的方式来实现负载均衡的。在DR模式下,真实服务器与负载均衡器在同一物理网络上,并且它们的...

    8.1: 集群及LVS简介 、 LVS-NAT集群 、 LVS-DR集群 、 总结与答疑.docx

    例如,使用ipvsadm -e命令可以修改LVS集群规则的模式,将其改为DR模式。 1.5 小结 LVS是Linux虚拟服务器的缩写,主要用于实现服务器集群和负载均衡。LVS提供了两种集群模式:LVS-NAT集群和LVS-DR集群。通过使用...

    LVS源码分析1

    LVS源码分析 LVS(Linux Virtual Server)是一种开源的负载均衡软件,能够将incoming请求分配到多个real server上以提高系统的可扩展性和可靠性。下面是LVS源码分析的总结。 ip_vs_conn 结构体 ip_vs_conn结构体...

    通过lvs模式使windows和linux的web服务器负载均衡一例

    DR模式是LVS中的直接路由模式,它通过修改数据包的目标MAC地址,将流量直接发送到真实服务器,无需经过LVS调度器。这种方式下,所有服务器都拥有相同的外部IP地址,且服务器间需要通过共享的物理网络层连接,确保...

Global site tag (gtag.js) - Google Analytics