免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2423 | 回复: 0
打印 上一主题 下一主题

centos5.4+lvs+heartbeat [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-18 16:07 |只看该作者 |倒序浏览

环境介绍
系统:centos5.4
软件:apache(在这里仅仅用于测试), heartbeat,tomcat,mysql
主机名:HA1 HA2 WEB1 WEB2 DB1 DB2
主机HA1 IP:192.168.1.11 心跳IP:10.0.0.11
主机HA2 IP:192.168.1.12 心跳IP:10.0.0.12
主机WEB1 IP:192.168.1.21
主机WEB2 IP:192.168.1.22
主机DB1 IP:192.168.1.31 心跳IP:10.0.0.31
主机DB2 IP:192.168.1.32 心跳IP:10.0.0.32
LVS浮动IP:192.168.1.200
DB浮动IP:192.168.1.150.
网关:192.168.1.1

HA1和HA2的安装,也就是LVS的集群安装
一、环境搭建
centos5.4 最小化安装(略)
#yum update
#vi /etc/sysconfig/selinux
SELINUX=disabled
关闭iptables防火墙
#chkconfig --level 3 iptables off
#chkconfig --level 3 ip6tables off
安装heartbeat以及相关软件
#yum install heartbeat* which
修改主机1的hosts文件
#vi /etc/hosts
127.0.0.1       localhost.localdomain localhost
192.168.1.101   HA1 lvs1
192.168.1.102   HA2
10.0.0.101      lvs1
10.0.0.102      lvs2
修改主机2的hosts文件
#vi /etc/hosts
127.0.0.1       localhost.localdomain localhost
192.168.1.101   HA1
192.168.1.102   HA2 lvs2
10.0.0.101      lvs1
10.0.0.102      lvs2
重启
#reboot

二、配置heartbeat、ldirectord
#cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
#cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
#cp /usr/share/doc/heartbeat-ldirectord-2.1.3/ldirectord.cf /etc/ha.d/
#cd /etc/ha.d/
#vi authkeys
auth 3
#1 crc
#2 sHA1 HI!
3 md5 test!!!  #1,2,3表示认证算法选择,这里选择了md5算法
必须将authkeys文件权限设置为600
#chmod 600 authkeys

#vi haresources
HA1 IPaddr::192.168.1.200/24/eth0:0 ldirectord
#第一列为默认主机,第二列为配置的浮动ip,第三列为需要实现高可用性的服务(启动脚本在/etc/init.d内),如果没有服务则默认全部已运行服务,ha指定服务在备机接管之前是不会启动的

#vi ha.cf
#debugfile /var/log/ha-debug
logfile /var/log/ha-log    #两个日志文件
logfacility     local0    #登陆/调试日志同时记录给syslog
keepalive 2     #每2秒检测一次
deadtime 30     #30秒后切换
warntime 10     #警告时间10秒
initdead 120    #重启网络时间(deadtime两倍以上)
#watchdog/dev/watchdog      #看门狗程序,跟硬件看门口原理一样,需要linux添加softdog模块才能使用
udpport 694     #心跳端口
#bcast eth1     #采用eth1的udp广播用来发送心跳信息,建议在副节点不只一台时使用
ucast eth1 10.0.0.12      #采用网卡eth1的udp单播来通知心跳,ip应为对方IP,在主机2上设置为ucast eth1 10.0.0.11
#mcast eth0 225.0.0.1 694 1 0       #采用udp多播播来通知心跳,建议在副节点不只一台时使用,广播,单播,多播,以上三种任选其一即可
auto_failback on  #on=主备机模式,off=非切换模式(就是谁接手谁是主机直到他自己故障)
node    HA1
node    HA2      #节点名(一定要和uname -n的结果一致)
ping 192.168.1.1  #用来验证外网线连通的ip(推荐上级路由器,还有ping_group,hbaping等类似配置可选)
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster      #网络检测补救插件,用来实现auto_failback功能的

#vi /etc/ha.d/ldirectord.cf
# Global Directives
checktimeout=12         #健康检查超时时间,当超过12秒,健康检查没响应,则将realserver从IPVS列表中移除
checkinterval=3         #健康检查的时间间隔
#fallback=127.0.0.1:80
autoreload=yes              #自动加载配置文件,ldirectord检查配置文件的MD5的校验值,当有改动,则自动加载配置文件
logfile="/var/log/ldirectord.log"   #日志文件
logfile="local0"
#emailalert=
admin@x.y.z
     #邮件
#emailalertfreq=3600
#emailalertstatus=all
quiescent=no                    #当checktimeout时间超时,自动中断客户连接,并把realserver移除IPVS列表,设置为yes,客户计算机可能会显示集群关闭了

# Sample for an http virtual service
virtual=192.168.1.200:80            #虚拟IP
        real=192.168.1.21:80 gate   #真实的服务器IP
        real=192.168.1.22:80 gate
        #fallback=127.0.0.1:80 gate #所有服务器都故障时访问该服务器
        service=http                #服务
        request="index.html"        #测试页面
        receive="Test Page"     #返回消息
        #virtualhost=some.domain.com.au     #虚拟主机
        scheduler=rr                        #调度策略
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp                #协议
        checktype=negotiate     #检查真实服务器的方法negotiate是使用检查request指定的页面,返回的消息要符合receive指定的内容,connect是检查真实服务器的网络和端口是否正常
        #checkport=80
        #request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z
以下配置使用检查realserver的网络端口是否正常,并不对页面进行检测
# Sample for an http virtual service
virtual=192.168.1.200:80
        real=192.168.1.21:80 gate
        real=192.168.1.22:80 gate
        #fallback=127.0.0.1:80 gate
        #service=http
        #request="index.html"
        #receive="Test Page"
        #virtualhost=some.domain.com.au
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=connect
        checkport=80
        #request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z

# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1

#sysctl –p

为了避免出现lvs主机出现故障时,出现路由器的mac刷新不到备份主机的mac,所以使用以下脚本实现,并放在haresources配置文件中,当进行切换时候,主机向网关发送arp包。
vi /etc/init.d/arp.sh
#!/bin/bash
case "$1" in
start)
arping -I eth0 -c 5 -s 192.168.1.200 192.168.1.1
;;
stop)
echo "arping stop"
esac

chmod +x /etc/init.d/arp.sh
vi /etc/ha.d/ haresources
HA1 IPaddr::192.168.1.200 ldirectord arp.sh

#chkconfig --add heartbeat

一、环境搭建
centos5.4 最小化安装(略)
#yum update
#vi /etc/sysconfig/selinux
SELINUX=disabled
关闭iptables防火墙
#chkconfig --level 3 iptables off
#chkconfig --level 3 ip6tables off
安装tomcat和apache,这里安装apache仅仅是用于检测index.html页面用的
#yum install tomcat5* httpd
重启
#reboot

#vi /etc/rc.local
ifconfig lo:0 192.168.1.200 broadcast 192.168.1.255 netmask 255.255.255.255 up
route add -host 192.168.1.200 dev lo:0
# vi /etc/sysctl.conf
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
#vi /var/www/html/index.html
Test Page
测试页面

Tomcat5的session复制
#cd /etc/tomcat5/
#vi server.xml
   
jvmRoute="jvm1"> 在另一台tomcat中添加jvm2


                 managerClassName="org.apache.catalina.cluster.session.DeltaManager"
                 expireSessionsOnShutdown="false"
                 useDirtyFlag="true"
                 notifyListenersOnReplication="true">

            
                className="org.apache.catalina.cluster.mcast.McastService"
                mcastAddr="228.0.0.4"
                mcastPort="45564"
                mcastFrequency="500"
                mcastDropTime="3000"/>

            
                className="org.apache.catalina.cluster.tcp.ReplicationListener"
                tcpListenAddress="192.168.1.21" 本机的ip地址
                tcpListenPort="4001"
                tcpSelectorTimeout="100"
                tcpThreadCount="6"/>

            
                className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
                replicationMode="pooled"
                ackTimeout="15000"
                waitForAck="true"/>

            
                   filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>

            
                      tempDir="/tmp/war-temp/"
                      deployDir="/tmp/war-deploy/"
                      watchDir="/tmp/war-listen/"

        

#vi web.xml   修改webapp应用的web.xml,在最下一行添加
   
        index.html
        index.htm
        index.jsp
   



#vi tomcat-users.xml

修改lvs的vi /etc/ha.d/ldirectord.cf,因为DR模式的lvs不能进行端口的转换,所以如果需要客户访问80端口,需要运行lvs/nar模式或者将tomcat的端口改为80
virtual=192.168.1.200:8080
        real=192.168.1.21:8080 gate
        real=192.168.1.22:8080 gate
        #fallback=127.0.0.1:80 gate
        service=http
        #request="index.html"
        #receive="Test Page"
        #virtualhost=some.domain.com.au
        scheduler=rr
        #persistent=600
        #netmask=255.255.255.255
        protocol=tcp
        checktype=connect
        checkport=8080
        #request="index.html"
        #receive="Test Page"
        #virtualhost=www.x.y.z

至此已经全部安装完毕,还有mysql的集群待续



本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/75896/showart_2182374.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP