文档配置环境: 主调度器A:192.168.0.111(eth0) 内网:172.16.1.1(eth1) 从调度器B:192.168.0.112(eth0) 内网:172.16.1.2(eth1) 真实服务器R1:192.168.0.113 真实服务器R2:192.168.0.114 虚拟IP(VIP):192.168.0.110 准备工作:调度器A和B的/etc/hosts内加入以下内容:以便解析 vi /etc/hosts 192.168.0.111 quxinyao 192.168.0.112 slave 配置主调度器A: 1.安装libnet-1.1.2.1.tar.gz (1)tar –zxvf libnet-1.1.2.1.tar.gz (2)cd libnet-1.1.2.1 (3)./configure (4)make && make install libnet安装完成。 2.安装kernel-devel (1)首先查看内核:uname –a (2)然后在安装对应内核的kernel-devel rpm -ivh kernel-devel-2.6.9-78.EL.i686.rpm (3)将当前使用内核连接到/usr/src/linux ln -s /usr/src/kernels/2.6.9-78.EL-i686 /usr/src/linux 3.安装ipvsadm-1.24.tar.gz (1)tar –zxvf ipvsadm-1.24.tar.gz (2)cd ipvsadm-1.24 (3)make && make install ipvsadm安装完成。 4.安装pkgconfig rpm -ivh /media/cdrom/RedHat/RPMS/pkgconfig-0.15.0-3.i386.rpm 5.安装glib2-devel rpm -ivh /media/cdrom/RedHat/RPMS/glib2-devel-2.4.7-1.i386.rpm 6.安装heartbeat-2.0.2.tar.gz (1)tar –zxvf heartbeat-2.0.2.tar.gz (2)cd heartbeat-2.0.2 (3)./ConfigureMe configure --disable-swig --disable-snmp-subagent (4)make && make install heartbeat安装完成。 7.配置lvs启动脚本 本文档采用的是lvs-DR模式,该模式的特点是客户端的请求从调度器进入分配到真实服务器,然后真实服务器的响应是直接交付给客户端的。 配置如下: vi /etc/init.d/lvs #!/bin/sh #chkconfig: 2345 20 80 # description: start LVS of Directorserver VIP1=192.168.0.110 //指定虚拟IP RIP1=192.168.0.111 RIP2=192.168.0.112 RIP3=192.168.0.113 RIP4=192.168.0.114 // RIP1-RIP4为真实服务器IP,如有更多真实服务器则可以添加更多,如RIP5等 . /etc/rc.d/init.d/functions case "$1" in start) echo " start LVS of DirectorServer" # set the Virtual IP Address /sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up //LVS启动时添加VIP的网口eth0:0 /sbin/route add -host $VIP1 dev eth0:0 #Clear IPVS table /sbin/ipvsadm -C #set LVS /sbin/ipvsadm -A -t $VIP1:80 -s lc /sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g /sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g /sbin/ipvsadm -a -t $VIP1:80 -r $RIP3:80 -g /sbin/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g #Run LVS //使用ipvsadm来转发客户端请求,-s lc 为最小连接数算法,-g指的是采用DR模式。有几个真实服务器就添加几条记录。 /sbin/ipvsadm #end ;; stop) echo "close LVS Directorserver" /sbin/ipvsadm –C //关闭时清除ipvsadm表 ;; *) echo "Usage: $0 {start|stop}" exit 1 esac 注意:这个资源脚本不要使用chkconfig管理,放入/etc/init.d内即可。 用chkconfig管理使其随系统启动 chkconfig --add lvs chkconfig --level 35 lvs on 8.配置heartbeat 首先创建所需的用户和组 groupadd haclient useradd -g haclient hacluster (1)cd heartbeat-2.0.4
(2)cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/ heartbeat的主目录是:/etc/ha.d/ ha.cf为heartbeat的主配置文件,配置如下,其余可以按照默认配置: (4)vi /etc/ha.d/ha.cf(下面所用的选项均将前面的注释去掉) <1>日志文件位置 logfile /var/log/ha-log <2>指定主备服务器多久发送一次心跳 keepalive 2 <3>指定30秒没有收到对方心跳就认为对方已经DOWN机 deadtime 30 <4>10秒没有收到心跳,便发出警报。warntime 10 <5>对方DOWN后120秒重新检测一次。initdead 120 <6>指定监听端口 udpport 694 <7>心跳监听网口,这里为eth1 bcast eth1 //在文件中把第一个bcast前面的#去掉,还要把后面的#linux去掉 <8>主节点恢复后,自动收回资源。 auto_failback on <9>指定主备服务器的主机名称,即在hosts文件中指定的。 第一个node为主服务器,第二个node为备服务器。 node quxinyao //服务器的主机名 node slave <10>当192.168.0.1(网关),192.168.0.111这两个IP都不能ping通时对方即开始接管资源。 ping_group group1 192.168.0.1 192.168.0.111 <11>启用ipfail脚本 respawn root /usr/lib/heartbeat/ipfail <12>指定运行ipfail的用户。 apiauth ipfail gid=root uid=root 主配置文件配置完成 9.haresources文件配置,这个文件指定虚拟IP和该主机控制的资源脚本。 内容如下: vi /etc/ha.d/haresources # quxinyao为主调度器主机名,192.168.0.110为虚拟IP, lvs ldirectord 为heartbeat控制的资源脚本,这些脚本预先要放在 /etc/init.d中。 quxinyao 192.168.0.110 lvs ldirectord 资源文件配置完成。 用chkconfig管理使其随系统启动 chkconfig --add ldirectord chkconfig --level 35 ldirectord on 10.ldirectord.cf是ldirectord进程的配置文件,该进程用来监视真实服务器的运行状况,如果真实服务器不能响应请求则把它排除在转发列表外。 vi /etc/ha.d/ldirectord.cf <1>设置真实服务器的超时时间 checktimeout=30 <2>监视真实服务器的时间间隔 checkinterval=10 <3>如全部真实服务器失败,则转发至本地 fallback=127.0.0.1:80 <4>改变配置文件内容,不需要重新ldirectord autoreload=yes <5>指定日志位置 logfile="/var/log/ldirectord.log" quiescent=no <6>指定虚拟IP virtual=192.168.0.110:80 <7>指定真实服务器IP及监听端口 real=192.168.0.111:80 gate real=192.168.0.112:80 gate real=192.168.0.113:80 gate real=192.168.0.114:80 gate fallback=127.0.0.1:80 gate service=http <8>监听测试页面名称,这个页面放入真实服务器web服务的根目录 request="test.html" <9>指定测试页面返回内容 receive="Test Page" virtualhost=v.abc.cn <10>指定转发算法 scheduler=lc //这里的算法要和LVS脚本的算法一样 protocol=tcp ldirectord.cf配置完成。 11.authkeys文件配置 authkeys文件的作用是用来设置心跳信息的加密方式。 vi /etc/ha.d/authkeys auth 1 1 crc 这里的设置是使用crc循环冗余校验,并不采用加密的方式。 这个文件的权限必须是600。 整个lvs和heartbeat配置完成。 12.从调度器B的配置与A完全一样。 Heartbeat应用chkconfig进行管理,将其随机启动。 chkconfig --add heartbeat chkconfig --level 35 heartbeat on 13.配置真实服务器脚本,在每台真实服务器的/etc/init.d目录内放置realserver脚本,这里主备调度器同时也为真实服务器。 vi /etc/init.d/realserver #!/bin/bash # # lvsdrrs init script to hide loopback interfaces on LVS-DR # Real servers. Modify this script to suit # your needs. You at least need to set the correct VIP address(es). # # Script to start LVS DR real server. # # chkconfig: 2345 20 80 # description: LVS DR real server # # You must set the VIP address to use here: #指定虚拟IP VIP=192.168.0.110 host=`/bin/hostname` case "$1" in start) # Start LVS-DR real server on this machine. /sbin/ifconfig lo down /sbin/ifconfig lo 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 /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up /sbin/route add -host $VIP dev lo:0 ;; stop) # Stop LVS-DR real server loopback device(s). /sbin/ifconfig lo:0 down ;; status) # Status of LVS-DR real server. islothere=`/sbin/ifconfig lo:0 | grep $VIP` isrothere=`netstat -rn | grep "lo" | grep $VIP` if [ ! "$islothere" -o ! "$isrothere" ];then # Either the route or the lo:0 device # not found. echo "LVS-DR real server Stopped." else echo "LVS-DR Running." fi ;; *) # Invalid entry. echo "$0: Usage: $0 {start|status|stop}" exit 1 ;; esac 14.真实服务器的配置脚本完成,将脚本放置到每个真实服务器/etc/init.d中(包括主从调度器),并用chkconfig进行管理,让其随机启动。 chkconfig --add realserver chkconfig --level 35 realserver on 15.最后将heartbeat在主从调度器上,realserver在真实服务器上开启,测试其是否切换与转发正常工作。 用ipvsadm –ln查看服务器列表 用查ipvsadm -Lcn看访问日志 (责任编辑:IT) |