lvs+heartbeat+ldirectord
在现在大规模网站中应用的集群技术中,能够提供负衡均载,高可用性的
web
服务,当然还有其他的方案同样也能提供负衡均载,高可用性,这里来实现一下
lvs+heartbeat+ldirectord
。
在所需要的软件包
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-gui-2.1.4-9.el5.x86_64.rpm
perl-MailTools-1.77-1.el5.noarch.rpm
heartbeat-ldirectord-2.1.4-9.el5.i386.rpm
网络和系统环境的需求:
网络规划
:
192.168.10.0
192.168.20.0
该网段是作为
heartbeat
的心跳网段
需要五台主机
两台主机充当
heartbeat
服务器
,
且为其分配的
Ip
地址为
主节点
: 192.168.10.1
心跳地址
: 192.168.20.1
辅助接点
: 192.168.10.2
心跳地址
: 192.168.20.2
浮动的
ip
地址
:
192.168.10.10
一
.
首先配置真实服务器
1,
因为此次实现的是
web
集群
首先在真实服务器上安装
apache
并测试其能够运行
#yum install httpd
#service httpd start
#
并用客户机访问该
web
服务
,
如果能够正常运行
,
2
在真实服务器上隐藏
arp
解析
,
并设置其能够宣布自己的
IP
地址
#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
3
配置浮动
ip
#ifconfig lo:0 192.168.10.10 broadcast 192.168.10.10 netmask 255.255.255.255 up
# ifconfig
并确认配置的浮动
IP,
能够正常
,
当然该中方法配置的
IP
地址在重启网卡的时候
,
该地址就会消失
当然
,
您可以在
/etc/sysconfig/network-scripts/
下面创建
ifcfg-lo:0
文件
,
并把其中的
IP
地址修改为浮动的
ip
地址
4
添加路由
#route add -host 192.168.10.10 dev lo:0
5
同样在其他真实服务器上面配置
二
.
配置配置双机热备
heartbeat
1
同样在主节点和辅助节点上同样需要安装
apache
服务
#yum install httpd
#
并在
web
的根目录下面创建
index.html
文件
,
文件中的内容为当真实服务器不能正常运行的时候
,
主辅节点
,
提供一些说明性信息
,
同样也要测试其
apache
能够正常运行
#service httpd start
同样用客户端进行测试
,
测试完成后
,
并关闭其服务
#service httpd stop
#chkconfig httpd off
2
安装
ipvsadm
软件包
#yum install ipvsadm
3
配置
ipvsadm
#ipvsadm -A �Ct 192.168.10.10:80 �Cs wlc
#ipvsadm -a �Ct 192.168.10.10:80 �Cr 192.168.10.3 -w 1 �Cg
#ipvsadm -a -t 192.168.10.10:80 �Cr 192.168.10.4 �Cw 2 �Cg
4
安装并配置
heartbeat
#yum �Cnogpgcheck localinstall *.rpm
注
:
在安装前先把光盘挂载
,
因为在安装
heartbeat
的时候
,
依赖一些软件包
5
从
/usr/share/doc/heartbeat-2.14/ authkeys ha.cf haresource
到目录
/etc/ha.d/
#cp /usr/share/doc/heartbeat-2.14/{authkeys,ha.cf,haresource}
/etc/ha.d/
6.
修改文件
authkeys
#echo �Cne
“
auth 1 \nl shal
“
>>/etc/ha.d/authkeys
#dd if=/dev/urandom bs=512 count=1 | openssl md5 >> /etc/ha.d/authkeys
#vim /etc/ha.d/authkeys (
查看密钥是否追加到该文件中,并把密钥要和
1 shal
同行
)
并把
authkeys
文件的权限该为
0600
#chmod 0600 authkeys
7
修改
heartbeat
的主配置文件
#vim /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
bcast eth1
auto_failback
node node1.example.com
node node2.example.com
respawn hacluster /usr/lib/heartbeat/ipfail
8
从
目录下面
/usr/share/doc/heartbeat-ldirectord-2.1.4
中拷贝文件
ldirectord.cf
到目录
/etc/ha.d/
,并修改其名为
heartbeat-ldirectord-lvs-httpd.cf,
并修改
确保下面行,去掉注释
checktimeout =3
checkinterval=1
fallback=127.0.0.1
:
80
autoreload=yes
quiescent=yes
virtual=192.168.10.10
:
80
real=192.168.10.3
:
80 gate 1
注:
gate
后面跟的是权重
real=192.168.10.4
:
80 gate 2
fallback=127.0.0.1
:
80 gate
注:
fallback
如果真是服务器的服务不能正常运行,则会把客户的请求转发到本节点的服务上
service = http
request=
“
.ldirectord.html
”
注:该项是节点进行探测真是服务
apache
的根目录下面的文件,从而确认该真是服务器能够正常运行
receive=
“
GOOD
”
注:该信息是返回给主节点的确认信息,当返回的的信息为上面的内容时,则服务运行正常,否则服务是
down
protocol=tcp
checktype=negotiate
checkport=80
修改完后并保存
注:
该部和第三不中配置
ipvsadm
是重复的,当然第三步中的配置可以省略
#cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/ldirectord-lvs-httpd.cf
9
修改文件
haresource
#vim /etc/ha.d/harecource
在其末尾添加
node1.example.com 192.168.10.10 ldirectord-lvs-httpd.cf
注:
node1.example.com
为主节点的主机名
192.168.10.10
为浮动地址
10
在辅助节点上做和主节点上一样的配置
11
分别在真是服务器上的
apache
的根目录下面创建文件
.ldirectord.html
且内容中必须包含
GOOD
12
分别启动真是服务器上的
apache
服务
#service httpd start
#chkconfig httpd on
13
先启动主节点的
heartbeat
服务
#service heartbeat start
#chkconfig heartbeat on
并用
ifconfig
查看
eth0
:
0
是否出现,该
ip
地址为
192.168.10.10
,即使浮动地址
当出现浮动地址的时,并启动辅助节点
#service heartbeat start
#chkconfig heartbeat on
14
在主节点上
#ipvsadm -L �Cn
查看
lvs
的配置,并用客户机进行测试
15
注:不知在配置
heartbeat+lvs+ldirectord
中,真是服务器上的服务是否还需要手动启动,有人说在启动
heartbeat
的时,就已经把真是服务器上的服务器启动开了,但是我在配置的哦时候,是手动启动开真是服务器上的服务:如
apache
希望大家指出我的配置不对的地方