使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务(DR模式
使用LVS(Linux Virtual Server)在Linux上搭建负载均衡的集群服务(DR模式) |
一、基于于NAT的LVS的安装与配置。 1. 硬件需求和网络拓扑 ________ | | | 客户端 | (互连网) |________| | (router) 202.99.59.1(director GW) | | (202.99.59.110)Virtual IP ____|_____ | | (控制器有两块网卡) | director | |__________| (192.168.10.254)DIP | -----------------+---------------- | | | RIP1 RIP2 RIPx ____________ ____________ ____________ |192.168.10.1| |192.168.10.2| |192.168.10.x| |realserver1 | |realserver2 | |realserverx | |____________| |____________| |____________| 2.下载软件: (1)、内核源代码:需要下载2.4.23以后版本的内核源代码。下载地址为http://www.kerner.org。本文中下载的内核源代为:linux-2.4.30.tar.bz2。 (2)、用户配置工具ipvsadm,下载地址:http://www.linuxvirtualserver.org/software/ipvs.html。本文下载的是:http://www.linuxvirtualserver.org/software/kernel-2.4/ipvsadm-1.21-11.tar.gz 3.安装软件: 在director(控制器,202.99.59.110)上安装支持LVS的内核和配置工具ipvsadm。 (1)、在内核配置时以下选项必须选: Networking options ---> <*> Packet socket <*> Netlink device emulation [*] TCP/IP networking [*] IP: advanced router [*] Network packet filtering (replaces ipchains) IP: Netfilter Configuration ---> <*> Connection tracking (required for masq/NAT) <*> IP tables support (required for filtering/masq/NAT) <*> Full NAT <*> MASQUERADE target support IP: Virtual Server Configuration ---> <*> virtual server support (EXPERIMENTAL) (12) IPVS connection table size (the Nth power of 2) --- IPVS scheduler <M> round-robin scheduling <M> weighted round-robin scheduling <M> least-connection scheduling <M> weighted least-connection scheduling <M> locality-based least-connection scheduling <M> locality-based least-connection with replication scheduling <M> destination hashing scheduling <M> shortest expected delay scheduling <M> never queue scheduling (2)、编译和安装内核 分别执行: make bzImage;make modules;make modules_install;然后编辑启动配置文件,重新启动系统,在启动时选择新的内核。 系统启动后要确认内核是否支持ipvs,只需要执行下面的命令即可:grep ip_vs_init /boot/System.map (3)、编译和安装ipvsadm 然后运行:ipvsadm --version命令,应该有下面的内容输出: 4. 配置LVS (1)、在202.99.59.110上: 清除ipvsadm表: 使用ipvsadm安装LVS服务 增加第一台realserver: 增加第二台realserver:
(2)、realserver配置 在客户端使用浏览器多次访问:http://202.99.59.110/,然后再202.99.59.110上运行ipvsadm命令,应该有类似下面的输出: IP Virtual Server version 1.0.12 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 202.99.59.110:http rr -> 192.168.10.1:http Masq 1 0 33 -> 192.168.10.2:http Masq 1 0 33 从上面的结果可以看出,我们的LVS服务器已经成功运行。
二、基于直接路由(DR)的LVS的配置 1.硬件需求和网络拓扑: ________ | | | 客户端 | (互连网) |________| | (router) 202.99.59.1(director GW) | __________ | | | | (VIP=202.99.59.110, eth0:110) | director |---| (控制器有一块网卡,且与realserver1和realserver2在同一网段) |__________| | DIP=202.99.59.109 (eth0) | ----------------------------------- | | RIP=202.99.59.108(eth0) RIP=202.99.59.107(eth0) (VIP=202.99.59.110, lo:0) (VIP=202.99.59.110, lo:0) ____________ ____________ | | | | |realserver1 | |realserver2 | |____________| |____________| 2.安装软件: 在director(202.99.59.109)上安装上面的方法安装内核和管理软件。
3. 配置LVS (1)、在202.99.59.109上: 修改内核运行参数,即修改/etc/sysctl.conf文件的内容如下: net.ipv4.ip_forward = 0 net.ipv4.conf.all.send_redirects = 1 net.ipv4.conf.default.send_redirects = 1 net.ipv4.conf.eth0.send_redirects = 1 然后执行下面的命令是对内核修改的参数立即生效: sysctl -p 配置VIP地址: /sbin/ifconfig eth0:0 202.99.59.110 broadcast 202.99.59.110 netmask 255.255.255.255 up /sbin/route add -host 202.99.59.110 dev eth0:0 清除ipvsadm表: /sbin/ipvsadm -C 使用ipvsadm安装LVS服务: /sbin/ipvsadm -A -t 192.168.1.110:http -s rr 增加realserver: #forward http to realserver using direct routing with weight 1 /sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1 /sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1 (2)在realserver1(202.99.59.108)和realserver2(202.99.59.107)上做下面的设置。 修改内核运行参数,即修改/etc/sysctl.conf文件的内容如下: net.ipv4.ip_forward = 0 net.ipv4.conf.lo.arp_ignore = 1 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 然后执行下面的命令是对内核修改的参数立即生效: sysctl -p 配置VIP地址: /sbin/ifconfig lo:0 202.99.59.110 broadcast 202.99.59.110 netmask 255.255.255.255 up /sbin/route add -host 202.99.59.110 dev lo:0p>在客户端使用浏览器多次访问:http://202.99.59.110/,然后再202.99.59.110上运行ipvsadm命令,应该有类似下面的输出: IP Virtual Server version 1.0.12 (size=4096) Prot LocalAddress:Port Scheduler Flags -> RemoteAddress:Port Forward Weight ActiveConn InActConn TCP 192.168.100.254:http rr -> 192.168.100.3:http Route 1 0 28 -> 192.168.100.2:http Route 1 0 29 从上面的结果可以看出,我们的LVS服务器已经成功运行。
在面的实例中ipvsadm用到的几个参数含义如下: -A 增加一个虚拟服务,该服务由协议、IP地址和端口号组成,例如: -s 指定服务采用的算法,常用的算法参数如下:
/sbin/ipvsadm -a -t 192.168.1.110:http -r 192.168.1.12 -g -w 1 -a 表示往一个服务内增加一个real server -r 指定real server的IP地址 -w 表示权重 -g 表示使用DR方式,-m表示NAT方式,-i表示tunneling方式。 对于relserver是windows的情况,做如下操作: 对于Windows系统的服务器,只要添加一个Loopback的网卡,IP地址设置成虚拟IP(192.168.34.41),子网掩码设置成255.255.255.255,网关地址留空。 操作: l从控制面板选择添加硬件; l选择“是,硬件已连好”; l选择“添加新的硬件设备”; l选择“安装我手动从列表选择的硬件”; l选择“网络适配器”; l从厂商列表选择“Microsoft”,从网卡列表选择“MicrosoftLoopbackAdapter”; 点下一步开始安装硬件,安装完毕后出现一个新的网卡,配置好IP和子网掩码。Windows子网掩码无法配置成255.255.255.255,我们可以先按默认的保存配置,然后从注册表修改子网掩码。 注册表修改子网掩码: 从注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]下找到对应的网卡,将SubnetMask修改成255.255.255.255。然后禁用再启用该网卡即可。 Linux Virtual Server负载均衡 ipvsadm(DR模式+LDirectord )使用方法(二) 1. 安装ipvsadm 下载ipvsadm,下载时需注意对应自己的内核版本。 ipvsadm下载网址:http://www.linuxvirtualserver.org/software/ 本文使用的是FC8系统,内核版本2.6.23.1,对应ipvsadm版本1.24。 安装时需要Linux内核源码,如果安装系统时没有安装源码,需要再下载内核源码。本文使用的内核是linux-2.6.23.1.tar.bz2。把内核解压到/usr/src/linux-2.6.23.1。下面开始编译安装: 建立内核快捷方式:ln -s /usr/src/linux-2.6.23.1 /usr/src/linux 解压ipvsadm: tar zxvf ipvsadm-1.24.tar.gz 安装ipvsadm: cd ipvsadm-1.24 make make install 安装完成后,下一步我们开始配置IPVS,本文主要介绍Direct Routing方式的配置。 2. 配置IPVS(Direct Routing) 2.1.网络结构 三台计算机,一台Director安装Linux作负载均衡器,另两台Real Server提供服务。 Director:eth0=192.168.34.40,eth0:0(Virtual IP) =192.168.34.41 RealServer1:IP=192.168.34.26 RealServer2:IP=192.168.34.27 服务端口:443 客户通过Virtual IP 192.168.34.41访问服务器。Load Balancer将来自客户的访问按一定的负载均衡机制分发到192.168.34.26和192.168.34.27这两台实际提供服务的服务器。 2.2.Load Balancer配置 步骤1:配置Director IP 在Director上配置好eth0的IP(192.168.34.40),然后在eth0上新增一个IP(192.168.34.41),命名为eth0:0,作为Virtual IP。 步骤2:配置IPVS Table脚本 编写sh脚本如下: VIP=192.168.34.41 #Vritual IP地址 #清除IPVS Table #设置IPVS Table #将IPVS Table保存到/etc/sysconfig/ipvsadm #启动IPVS #显示IPVS状态 #脚本结束---------------------------- 该脚本配置IPVS Table,并将配置保存到/etc/sysconfig/ipvsadm文件中。以后修改IPVS TABLE可直接修改该脚本。当然,您也可以直接编辑该文件来实现IPVS Table的配置。 配置完毕后执行/etc/rc.d/init.d/ipvsadm start(或service ipvsadm start)启动IPVS。 通过以上两个步骤,就完成了负载均衡器IPVS的配置。 2.3.Real Server配置 Real Server主要做两个配置,一是添加一个虚拟IP,二是关闭该IP的ARP响应。 2.3.1.Windows系统 对于Windows系统的服务器,只要添加一个Loopback的网卡,IP地址设置成虚拟IP(192.168.34.41),子网掩码设置成255.255.255.255,网关地址留空。 操作: l 从控制面板选择添加硬件; l 选择“是,硬件已连好”; l 选择“添加新的硬件设备”; l 选择“网络适配器”; l 从厂商列表选择“Microsoft”,从网卡列表选择“Microsoft Loopback Adapter”; 点下一步开始安装硬件,安装完毕后出现一个新的网卡,配置好IP和子网掩码。Windows子网掩码无法配置成255.255.255.255,我们可以先按默认的保存配置,然后从注册表修改子网掩码。 注册表修改子网掩码: 从注册表 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces]下找到对应的网卡,将SubnetMask修改成255.255.255.255。然后禁用再启用该网卡即可。 2.3.2.Linux系统 3.配置LDirectord RealServer故障检测及管理 LDirectord进程定时检测各Real Server运行状态,当检测到某台Real Server故障时,则将该Server从负载均衡调度列表删除,当恢复正常时再加入。 3.1.安装LDirectord LDirectord软件包含在HeartBeat软件包中。安装HeartBeat时就同时安装了LDirectord。 HeartBeat下载网址:http://www.linuxvirtualserver.org/software/。 安装HeartBeat还需要安装libnet等软件包。可以到网上下载这些软件包来安装。 Libnet下载网址:http://www.packetfactory.net/libnet/dist/libnet.tar.gz 安装libnet: tar zxf libnet.tar.gz cd libnet ./configure make make install 安装HeartBeat: ./ConfigureMe configure make make install 安装完后执行以下命令加入自启动项: chkconfig –add ldirectord 3.2.配置LDirectord heartbeat/ldirectord目录下有个ldirectord.cf文件。该文件是ldirectord的配置范例。 checktimeout=3 #检测超时3s checkinterval=1 #检测间隔1s fallback=127.0.0.1:443 #所有服务器都故障时访问该服务器 autoreload=yes #配置文件改变时自动加载 logfile="/var/log/ldirectord.log" #日志文件 quiescent=yes virtual=192.168.34.41:443 #虚拟IP real=192.168.34.26:443 gate real=192.168.34.27:443 gate fallback=127.0.0.1:443 #所有服务器都故障时访问该服务器 service=none scheduler=wlc persistent=600 protocol=tcp checktype=on 3.3.启动ldirectord /etc/rc.d/init.d ldirectord start 注意,启动时如果提示ldirectord某行出错,一般是有些运行需要的软件没安装,大部分是perl开头的软件包。 net-snmp-5.3-4.2.i386.rpm |