|
RHEL6上配置基于Heartbeat+LVS+ldirectord的高可用服务
我的网络环境:
一、 前其他准备
1、 所需要的软件
heartbeat-2.1.3.tar.gz
MailTools-1.74.tar.gz
IO-Socket-INET6-2.65.tar.gz
Socket6-0.23.tar.gz
ipvsadm-1.24.tar.gz
libnet-1.1.4.tar.gz
2、 安装时所依赖的软件包
[iyunv@Lvs-Master ~]$yum -y install make gcc-* glib2-* libxml2-* gzip2-* kernel-devel perl-*
二、 安装ipvsadm
[iyunv@Lvs-Master ~]$ln -s /usr/src/kernels/2.6.32-71.el6.x86_64/ /usr/src/linux
[iyunv@Lvs-Master ~]$tar xzvf ipvsadm-1.24.tar.gz >> /dev/null
[iyunv@Lvs-Master ~]$cd ipvsadm-1.24
[iyunv@Lvs-Master ~/ipvsadm-1.24]$make && make install
三、 安装heartbeat
1、 在此之前需要先依次安装这三个包
Socket6-0.23.tar.gz
IO-Socket-INET6-2.65.tar.gz
MailTools-1.74.tar.gz
详细的命令如下,其实可以写个for循环方便一些,不过本人比较懒,就这样吧
[iyunv@Lvs-Master ~]$tar xzvf Socket6-0.23.tar.gz
[iyunv@Lvs-Master ~]$cd Socket6-0.23
[iyunv@Lvs-Master ~/ Socket6-0.23]$perl Makefile.PL
[iyunv@Lvs-Master ~/ Socket6-0.23]$make && make install
[iyunv@Lvs-Master ~]$cd ..
[iyunv@Lvs-Master ~]$tar xzvf IO-Socket-INET6-2.65.tar.gz
[iyunv@Lvs-Master ~]$cd IO-Socket-INET6-2.65
[iyunv@Lvs-Master ~/ IO-Socket-INET6-2.65]$perl Makefile.PL
[iyunv@Lvs-Master ~/ IO-Socket-INET6-2.65]$make && make install
[iyunv@Lvs-Master ~]$cd ..
[iyunv@Lvs-Master ~]$tar xzvf MailTools-1.74.tar.gz
[iyunv@Lvs-Master ~]$cd tar xzvf MailTools-1.74
[iyunv@Lvs-Master ~/ MailTools-1.74]$perl Makefile.PL
[iyunv@Lvs-Master ~/ MailTools-1.74]$make && make install
[iyunv@Lvs-Master ~/ MailTools-1.74]$cd ..
2、 安装libnet-1.1.4.tar.gz
[iyunv@Lvs-Master ~]$tar xzvf libnet-1.1.4.tar.gz
[iyunv@Lvs-Master ~]$cd libnet-1.1.4
[iyunv@Lvs-Master ~/ libnet-1.1.4]$./configure && make && make install
3、 安装heartbeat
[iyunv@Lvs-Master ~]$tar xzvf heartbeat-2.1.3.tar.gz
[iyunv@Lvs-Master ~]$cd heartbeat-2.1.3
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$./ConfigureMe configure
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$groupadd haclient
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$useradd -g haclient hacluster
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$./ConfigureMe make –enable-fatal-warnings=no
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$make install
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$cp doc/{authkeys,haresources,ha.cf} /etc/ha.d/
[iyunv@Lvs-Master ~/heartbeat-2.1.3]$cp ldirectord/ldirectord.cf /etc/ha.d/
四、 配置heartbeat
1、 配置heartbeat 的认证文件
Authkeys文件用于设定heartbeat的认证方式,该文件中有3种可用的认证方式:crc、sha1、md5,这里先用crc认证方式 ,配置如下
[iyunv@Lvs-Master ~]$sed –i ‘/auth/s/^#//’ /etc/ha.d/authkeys
[iyunv@Lvs-Master ~]$sed –i ‘/crc/s/^#//’ /etc/ha.d/authkeys
[iyunv@Lvs-Master ~]$chmod 600 /etc/ha.d/authkeys #这个权限一定要改,否则认证过不去
2、 配置ha.cf
配置好的文件如下
[iyunv@Lvs-Master ~]$cat /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log #指定heartbeat的日志存放位置
logfacility local0
keepalive 2 #指定心跳时间间隔为2s
deadtime 5 #如果指定备用节点在5s内没有收到主节点的心跳信号,则立即接管主节点的服务资源
initdead 12 #至少要为deadtime的2倍
udpport 694 #设置广播通信的端口,694为默认的端口
ucast eth1 10.10.10.2 #采用网卡eth1的UDP多播来组织心跳,后面跟双机中对方的IP地址
auto_failback on #用来定义当主节点恢复后,是否将服务自动切回
node Lvs-Master #主节点主机名,可以通过“uname -n”查看
node Lvs-Backup #备用节点主机名
crm no
3、 配置haresources文件
Haresources文件用于指定双机系统的主节点,集群IP,子网掩码,广播地址以及启动的服务参数等集群资源,文件每一行可以包含一个或多个资源脚本名,资源脚本本之间用空格隔开,参数之间用两个冒号隔开。
[iyunv@Lvs-Master ~]$cat /etc/ha.d/haresources | grep -v ^#
Lvs-Master 172.16.12.100 cluster ldirectord
#负载主节点主机名 虚拟IP地址 要有heartbeat管理的程序
4、 配置ldirectord文件
[iyunv@Lvs-Master ~]$cat /etc/ha.d/ldirectord.cf | grep -v ^# | grep -v ^$
checktimeout=3 #判定Real Server出错的时间间隔
checkinterval=2 #指定Ldirectord在两次检查之间的间隔时间
fallback=127.0.0.1:80 #当所有的Real Server不能工作时,Web重定向的地址
autoreload=yes #选yes时,配置文件发生变化时,自动加载
logfile="/var/log/ldirectord.log"
quiescent=yes
virtual=172.16.12.100:80 #指定虚拟IP地址和端口号,在Virtual这行后面的行必须缩进4个空格或以一个tab字符进行标记
real=172.16.12.30:80 gate #指定Real Server服务器地址和端口号,同时设定LVS工作模式,用gate表示DR模式,ipip表示TUNL模式,masq表示NAT模式
real=172.16.12.40:80 gate
fallback=127.0.0.1:80 gate
service=http #指定服务的类型
request="default.html" #Ldirectord根据指定Real Server,发送访问请求,检查Real Server上的服务是否正常运行,必须确保这里给出的页面地址是可以访问的
receive="Test Page" #指定请求和应答字符串,也就是default.html的内容
virtualhost=Lvs-Master #虚拟服务器的名称
scheduler=rr #指定调度算法
#persistent=600
#netmask=255.255.255.255
protocol=tcp #指定协议类型
checktype=negotiate #指定Ldirectord的检测类型
checkport=80 #指定监控端口号
5、 编辑cluster脚本文件
此脚本要放在/etc/init.d/ {网上找的,又改了下}
set Arp 当一台VS接管LVS服务时,可能会网络不通,这是因为路由器的MAC缓存表里无法及时刷新MAC.关于vip这个地址的MAC地址还是替换的VS的MAC,解决方法是使用arping命令.
[iyunv@Lvs-Master ~]$chmod 755 /etc/init.d/cluster
[iyunv@Lvs-Master ~]$chkconfig --add heartbeat
至此负载节点已经安装配置完毕,把一下文件拷贝到相应备用节点的目录:
authkeys,ha.cf,haresources,ldirectord.cf,cluster
备用几点只需要改动ha.cf文件中 “ucast eth1 10.10.10.1”中的ip地址为负载节点的eth1所对应的ip即可。其他配置完全相同。
五、RealServer的配置
1、 在真实节点上安装http服务,在制定存放网页的目录建立default.html文件,确保内容为”Test Page”
2、 在/etc/init.d/下建立脚本文件
[iyunv@Lvs-Master ~]$cat /etc/init.d/lvs_rs
[iyunv@Lvs-Master ~]$chkconfig –add lvsrs
[iyunv@Lvs-Master ~]$chkconfig lvsrs on
六、启动Heartbeat+LVS集群系统
[iyunv@Lvs-Master ~]$/etc/init.d/ldirectord restart
[iyunv@Lvs-Master ~]$/etc/init.d/heartbeat restart
[iyunv@Lvs-Master ~]$/etc/init.d/cluster restart
七、验证
访问没有问题,查看下日志
没有任何问题!
|
|
|
|
|
|
|