(1)配置网络环境
1)在director1上,配置ip和主机名。
配置ip
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:BOOTPROTO=static
添加:IPADDR=192.168.0.111
NETMASK=255.255.255.0
#vim /etc/sysconfig/network-scripts/ifcfg-eth1
修改:BOOTPROTO=static
添加:IPADDR=10.0.11.11
NETMASK=255.255.0.0
配置主机名
#vim /etc/sysconfig/network
修改:HOSTNAME=node1.hanlenry.com
#hostname node1.hanlenry.com
添加地址解析条目
#vim /etc/hosts
添加:192.168.0.111 node1.hanlenry.com node1
192.168.0.112 node2.hanlenry.com node2
为了方便我们在两个节点之间相互拷贝文件时,不用输密码就可以直接拷贝。我们需要做一些配置,在node1上生成私钥,并把node1(director1)上的公钥拷贝到node2(director2)上。
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node2
#ssh node2 -- 'ifconfig'
----------------------------------------------------------------------------------
2)在director2上,配置ip和主机名
配置ip
#vim /etc/sysconfig/network-scripts/ifcfg-eth0
修改:BOOTPROTO=static
添加:IPADDR=192.168.0.112
NETMASK=255.255.255.0
#vim /etc/sysconfig/network-scripts/ifcfg-eth1
修改:BOOTPROTO=static
添加:IPADDR=10.0.11.12
NETMASK=255.255.0.0
配置主机名
#vim /etc/sysconfig/network
修改:HOSTNAME=node2.hanlenry.com
#hostname node2.hanlenry.com
添加地址解析条目
#vim /etc/hosts
添加:192.168.0.111 node1.hanlenry.com node1
192.168.0.112 node2.hanlenry.com node2
为了方便我们在两个节点之间相互拷贝文件时,不用输密码就可以直接拷贝。和在node1上的配置一样,如下:
#ssh-keygen -t rsa
#ssh-copy-id -i .ssh/id_rsa.pub root@node1
#ssh node1 -- 'ifconfig'
---------------------------------------------------------------------------------
(2)安装heartbeat和ldirector,都需要在node1和node2上安装。安装过程都是一样的,我这里就不指定在谁上安装了,你需要在node1和node2上安装。
所需要的安装包:
heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm
heartbeat-devel-2.1.4-9.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm
heartbeat-gui-2.1.4-9.el5.i386.rpm libnet-1.1.4-3.el5.i386.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm
配置yum源,则需要添加上Cluster。否则会提示找不到依赖关系。
#yum localistall *.rpm -y --nogpgcheck
-----------------------------------------------------------------------------
(3) 对heartbeat的配置文件做相应的配置。
在node1上
#cd /usr/share/doc/heartbeat-2.1.4/
#cp ha.cf haresources authkeys /etc/ha.d
#cd /etc/ha.d
#vim ha.cf
添加:bcast eth1
node node1.a.org
node node2.a.org
--------------------------
#vim authkeys
auth 2
2 sha1 hanlenry sha1后面的内容是可以随便输入。
补充:
( 生成随机数:#dd if=/dev/urandom bs=512 count1 |md5sum)
修改权限:
#chmod 400 authkeys
-----------------------
#vim haresources
添加:
node1.a.org 192.168.0.12/32/eth0/192.168.0.12
主节点 流动地址 指定广播地址
注意:主节点说明开始node1工作着,只有当node1挂掉后,node2 才能代替node1开始工作。
--------------------------
将配置文件复制到node2上。
# scp ha.cf haresources authkeys node2:/etc/ha.d/
---------------------------------------------------------------------------
(4) 启动hearbeat。
在node1上
启动node1上的hearbeat。
#/etc/init.d/heartbeat start
启动node2上的heartbeat。
#ssh node2 -- '/etc/init.d/heartbeat start'
----------------------------------------------------------------------------
(5) 测试,将node1上的hearbeat停掉之后,看流动ip(VIP)是否会在node2上出现。
#/etc/init.d/heartbeat stop
#ssh node2 – ‘ifconfig’
如果成功了,就接下来的配置,先把heartbeat停掉。在node1上,
#ssh node2 – ‘service heartbeat stop’
--------------------------------------------------------------------------------
(6) 配置ldirector。
# cd /usr/share/doc/heartbeat-ldirectord-2.1.4/
# ls
# cp ldirectord.cf /etc/ha.d/ldirectord-realserver.cf
编辑ldirector-realserver.cf
# vim ldirector-realserver.cf
编辑如下:
# Global Directives
checktimeout=3 //检查Realserver的时长,超过此时长,ldirector将会将此Realserver从ipvs表中移除
checkinterval=1 //检查时间间隔
autoreload=yes //是否定期加载配置文件
logfile="/var/log/ldirectord.log" //日志文件的存放位置
quiescent=yes //当某台Realserver出现异常,在ipvs表中此Realserver的权重将设置为0,不再响应客户端的访问请求
# Sample for an http virtual service
virtual=192.168.0.12:80 // VIP
real=192.168.0.123:80 gate 5 // 指定Realserver和权重
real=192.168.0.124:80 gate 3
fallback=127.0.0.1:80 gate //当所有的Realserver都出现问题是,就用本机的服务作为最后的响应服务。
service=http //定义什么服务来测试Realserver
request=".test.html" //做测试的网页文件,内容为OK。
receive="OK" //返回的结果是否为OK,来判断Realserver是否正常。
scheduler=wlc //负载均衡算法
#persistent=600 //持久连接时间
#netmask=255.255.255.255
protocol=tcp //定义虚拟服务所用到的协议
checktype=negotiate //ldirector进程监控Realserver的方法。
checkport=80 //检查的端口
------------------------------
往node2上复制一份。
#scp ldirector-realserver.cf node2:/etc/ha.d
修改配置文件haresources
#vim haresources
在原有基础上修改:
node1.hanlenry.com 192.168.0.12/32/eth0/192.168.0.12 ldirectord::ldirectord-realserver.cf
再给node2复制一份:
#scp haresources node2:/etc/ha.d
-------------------------------------------------------------------------------
(7) 配置完成ldirector后,在node1和node2都需要上安装httpd服务,此步骤仅仅是当Realserver当机后,当用户访问Web服务时显示通知信息。
#yum install httpd
#vim /var/www/html/index.html
添加:The server is
repairing!!!
#service httpd start
给node2复制一份
#scp /var/www/html/index.html node2:/var/www/html
------------------------------------------
重新修改配置文件
#vim haresources
修改为如下:
node1.hanlenry.com 192.168.0.12/32/eth0/192.168.0.12 ldirectord::ldirectord-realserver.cf httpd
给node2复制一份
#scp haresources node2:/etc/ha.d
PS:加httpd服务主要是在后台真正的Realserver当掉后,用户的请求都发送给Director,显示如下信息:The server is repairing!!!
---------------------------------------------------------------------------------------
(8) 配置Realserver
Rip配置在接口(eth0)上,Vip配置在lo的别名上;
在server1和server2上都得配置,配置如下:
1.定义内核参数,禁止响应对Vip的ARP广播请求;
#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
2.配置Vip
#ifconfig lo:0 192.168.0.12 broadcast 192.168.0.12 netmask 255.255.255.255 up
添加主机路由:
#route add -host 192.168.0.12 dev lo:0
3.安装apache
#yum install httpd
#vim /var/www/html/index.html
添加:This is the test page
From Web1
,为了方便验证,你可以将server2上的web页面的内容改一改。
#service httpd start
4.在浏览器的地址栏中输入:192.168.0.12
此时就能实现高可用和负载均衡了。
---------------------------------------------------------------------------------------
最后,我们来看一看当两个Realserver都当掉时的结果。
启动heartbeat:在node1上,
#service heartbeat start
#ssh node2 – ‘service heartbeat start’
下面模拟实现Realserver当机。
1.修改server1上的测试网页文件:
在server1上,修改.test.html为.test.html2
#cd /var/www/html
#mv .test.html .test.html2
在node1上查看ipvs表:
#ipvsadm –ln
2.修改server2上的测试网页文件,方法同上。在查看一下,ipvs表。
3.访问一下网页。如图:
PS:由于两个Realserver都当掉了。所以,用户再次访问时,就访问的是Director上的网页文件,提供通知信息。