首页 > 代码库 > 直接路由的高可用LVS集群配置

直接路由的高可用LVS集群配置



直接路由的高可用LVS集群配置:
调度服务器IP:(106.3.43.240)192.168.11.100,节点服务器分别为:192.168.11.101,192.168.11.102
一、安装ipvsadmin:
1、yum -y install ipvsadmin(推荐用第一种方法)
2、下载http://www.linuxvirtualserver.org/software/,找到相应的版本:
    注意对应自己的内核版本
  ipvsadm-1.24.tar.gz
  tar zxvf ipvsadm-1.24.tar.gz
  cd ipvsadm-1.24
  make
  make install
  要想编译正常,需要把内核做一个软件连接到安装目录:
  ln -s /usr/src/kernels/2.6.9-22.EL-i686/ /usr/src/linux
  cd ipvsadm-1.24
  make
  make install
二、配置调度服务器:
1、添加节点:
    先清除:
    /sbin/ipvsadm -C
    添加:
    /sbin/ipvsadm -A -t 192.168.11.100:80 -s rr #(如果需要session保持添加-p 默认保持300秒)
  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.101:80 -g
  /sbin/ipvsadm -a -t 192.168.11.100:80 -r 192.168.11.102:80 -g
  #/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g(多个节点)
    #/sbin/ipvsadm -d -r $VIP:80 -r $RIP3:80 -g(删除节点)
说明:1、选项-a表示添加服务器、-t用来指定VIP地址及TCP端口、-r用来指定RIP地址及TCP端口,-m表示使用NAT群集模式(-g 

DR模式、-I  TUN模式),-w用来设置权后重(权重为0时表示暂停节点)。
2、需要删除整个虚拟服务器时,使用选项-D并指定虚拟IP地址即可,无需指定节点。例如若执行“ipvsadm –D –t 192.168.11.101:80”,则删除此虚拟服务器。
 
2、添加虚拟IP到第一块网卡(外网)并路由(只有一个网卡,他的地址:106.3.43.240):
    /sbin/ifconfig eth0:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up
  /sbin/route add -host 192.168.11.100 dev eth0:0
3、运行LVS
   /sbin/ipvsadm

4、以上写成一个脚本运行也可:
   #vi/etc/init.d/lvsrs
#!/bin/sh
# description: start LVS of Directorserver
VIP=192.168.11.100
RIP1=192.168.11.101
RIP2=192.168.11.102
#RIPn=192.168.11.103~254(添加其它节点)
GW=192.168.11.1
. /etc/rc.d/init.d/functions
case $1 in
start)
echo "start LVS of DirectorServer"
# set the Virtual IP Address
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
#Clear IPVS table
/sbin/ipvsadm -C
#set LVS
/sbin/ipvsadm -A -t $VIP:80 -s rr #(如果需要session保持添加-p 默认保持300秒)
/sbin/ipvsadm -a -t $VIP:80 -r $RIP1:80 -g
/sbin/ipvsadm -a -t $VIP:80 -r $RIP2:80 -g
#/sbin/ipvsadm -a -t $VIP:80 -r $RIP3:80 -g
#Run LVS
/sbin/ipvsadm
#end
;;
stop)
echo "close LVS Directorserver"
/sbin/ipvsadm -C
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac

(-s rr 是使用了轮叫算法,若要修改其它的算法,更改rr就可以了,ipvsadm -h查看帮助。-g 是使用lvs工作DR直接路由模式)

三、配置节点服务器:
1、配置网络:
    /sbin/ifconfig lo:0 192.168.11.100 broadcast 192.168.11.255 netmask 255.255.255.255 up
  /sbin/route add -host 192.168.11.100 dev lo:0
2、修改sysct1.conf:
    sysctl -w net.ipv4.ip_forward=0
    sysctl -w net.ipv4.conf.lo.arp_ignore=1
    sysct1 -w net.ipv4.conf.lo.arp_announce=2
    sysct1 -w net.ipv4.conf.all.arp_ignore=1
    sysct1 -w net.ipv4.conf.all.arp_announce =2

或者:
    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
或者vi  sysctl
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


3、写成脚本如下:
#!/bin/bash
  #description : start realserver
  VIP=192.168.11.100
  /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
  /sbin/route add -host $VIP dev lo:0
  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
  sysctl -p
  #end


四、测试:
测试:分别启动realserver上的httpd服务(节点服务器的www/html文件夹,可以共用NAS存储挂载上去)
  在realserver1 执行 echo "This is realserver1" > /var/www/html/index.html
  在realserver2 执行 echo "This is realserver2" > /var/www/html/index.html
  打开IE浏览器输入http://192.168.11.100 应该可以分别看到:This is realserver1 和 This is realserver1。

查看节点状态:
#ipvsadm -L -n
查看负载连接情况:
#ipvsadm -Lnc


LVS的负载调度算法

  针对不同的网络服务和配置需要,LVS调度器提供多种不同的负载调度算法,其中最常用的四种得法包括:轮询、加权轮询、最少

连接、加权最少连接。
轮询(Round Robin):将收到的访问请求按照顺序轮流分配给群集中的各个节点(真实 服务器),均等的对待每一台服务器,而不

管服务器实际的连接数和系统负载。
加权轮询(Weighted Round Robin):根据真实服务器的处理能力轮流分配收到的访问请 求,调度器可以自动查询各节点的负载情

况,并动态调整其权重。这样可以保证处理能力强的服务器承担更多的访问流量。
最少连接(Least Connections):根据真实服务器已建立的连接数进行分配,将收到的访 问请求优先分配给连接数最少的节点。如

果所有的服务器节点性能相近,采用这种方式可以更好的均衡负载。
加权最少连接(Weighted Least Connections):在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重,权得较

高的节点将承担更大比例的活动连接负载。


五、给调度服务器添加备份:
1、下载heartbeatak或者直接安装:yum -y install heartbeat
   说明:需要安装:epel-release包,32位:wget http://mirrors.sohu.com/fedora-epel/6/i386/epel-release-6-8.noarch.rpm   64位:wgethttp://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
修改epel.repo文件:
编译/etc/yum.repos.d/epel.repo,做如下改动
#baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch
改为:
baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch


2、配置heartbeat
#chkconfig --levels 235 heartbeat on
复制三个文件: 
# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/     #ha.cf HA的配置文件 
# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/  #haresources 资源文件 
# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/   #HA节点间的验证文件

配置:
# vi /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 
ucast eth1 1.1.1.2         #心跳 
auto_failback on 
node    DR1 
node    DR2 
ping 172.16.1.1  172.16.1.11 #网关与另一个节点IP 
respawn hacluster /usr/lib/heartbeat/ipfail 
deadping 30 
apiauth ipfail uid=hacluster
use_logd yes 
conn_logd_time 60

# vi /etc/ha.d/authkeys         #定义认证的keys 
auth 1 
1 crc

#chmod 600 /etc/ha.d/authkeys  修改authkeys文件权限

# vi/etc/ha.d/haresources       #配置HA资源 
DR1     IPaddr::192.168.11.100/24/eth0 httpd 

启动heartbeat:
#service heartbeat start