fdeli 发表于 2015-11-21 11:04:30

LVS+Heartbeat 配置

LVS+Heartbeat 配置
|字号 订阅
LVS+Heartbeat 安装

http://xfshean.blog.163.com/blog/static/602065662012729111557850/

4、实践环境
DR1:192.168.1.80    负载服务器-主
DR2:192.168.1.81    负载服务器-备R1: 192.168.1.82      WEB1
R2: 192.168.1.83   WEB2
VIP:192.168.1.85       虚拟IP

1、准备工作:DR1和DR1的/etc/hosts内加入以下内容:以便解析
    vi /etc/hosts
    192.168.1.80   master.30920.cn    192.168.1.81    backup.30920.cn
2、修改#    vi/etc/ha.d/ha.cf   配置文件(主、备一样)
#debugfile /var/log/ha-debug logfile /var/log/ha-log #日志存放位置#crm yes #是否开启集群资源管理功能logfacility      local0    #记录日志等级keepalive 2    #心跳的时间间隔,默认时间单位为秒deadtime 5   #超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。warntime 3   #超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中,但此时不会切换initdead 10    #在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍。udpport694   #设置广播通信使用的端口,694为默认使用的端口号。bcast      eth0               # Linux指定心跳使用以太网广播方式,并在eth0上进行广播。"#"后的要完全删除,要不然要出错。#ucast eth0 192.168.1.81       # 采用网卡eth0的UDP多播来组织心跳,后面跟的IP地址应为双机中对方的IP地址auto_failback on #在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备用节点。off主节点恢复后变为备用节点,备用为主节点。#stonith_host *   baytech 10.0.0.3 mylogin mysecretpassword #stonith_host ken3rps10 /dev/ttyS1 kathy 0#stonith_host kathy rps10 /dev/ttyS1 ken3 0#watchdog /dev/watchdog         node   backup.30920.cn    #主机节点名,可通过 uname -n 查看,默认为主节点node   master.30920.cn    #备用机节点名,默认为次节点,要注意顺序哟#ping 192.168.1.1          # 选择ping节点,选择固定路由作为节点。ping节点仅用来测试网络连接。ping_group group1 192.168.1.80 192.168.1.55   #并不是双机中的两个节点,仅仅用来测试网络的连通性,都不能过主动切换respawn root /usr/lib/heartbeat/ipfail#选配项。其中rootr表示启动ipfail进程的身份。apiauth ipfail gid=root uid=root
3、修改资源文件(#    vi    /etc/ha.d/haresources)(主、备一样) 注意:DR1和DR2的资源文件要完全一致
master.30920.cn 192.168.1.85ldirectord#设置master.30920.cn为主节点,集群VIP为192.168.1.85,heartbeat托管的服务为ldirectord.

4、配置heartbeat的认证文件(#   vi    /etc/ha.d/authkeys   )(主、备一样)
auth 1             #auth后面指定的数字,下一行必须作为关键字再次出现。1 crc#2 sha1 HI!#3 md5 Hello!
#最后保证文件的权限为 600
#chmod 600 /etc/ha.d/authkeys

5、修改 #   vi    /etc/ha.d/ldirectord.cf   (主、备一样)他的作用就是监控集群中有故障时,从集群中T出,恢复了又加入服务。他通过调用ipvsadm命令创建LVS路由表信息。
    # GlobalDirectives    checktimeout=10                # 判定realserver出错时间    checkinterval=10               # 指定ldirectord在两次检查之间的间隔时间    fallback=127.0.0.1:80          # 当所有RS机器不能访问的时候WEB重写向地址    autoreload=yes               # 是否自动重载配置文件    logfile="/var/log/ldirectord.log"# 设定Ldirectord日志输出文件路径    #logfile="local0"    #emailalert="root@30920.cn"       #emailalertfreq=3600    #emailalertstatus=all    quiescent=yes               # 选择为no是,如果一个节点在checktimeout设置的时间周期内没响应,将会被T除,中断现有客户端的连接。 yes新的连接不能到达。
    # Samplefor an http virtual service    virtual=192.168.1.85:80   # 指定虚拟IP,注意在virtual这行后面的行必须缩进4个空格或以一个tab字符进行标记
            real=192.168.1.104:80 gate    #gate 为DR模式,ipip表示TUNL模式,masq表示NAT模式
            real=192.168.1.105:80 gate

            #fallback=127.0.0.1:80 gate
            #service=http               #指定服务类型,这里对HTTP进行负载均衡
            #request="index.html"         #请求监控地址
            #receive="Test Page"          # 指定请求和应答字符串,也就是index.html的内容
            #virtualhost=some.domain.com.au#虚拟服务器的名称可任意指定
            scheduler=wrr               #指定调度算法,这里是wrr(加权轮叫调度算法)
            #netmask=255.255.255.255
            protocol=tcp
            checktype=connect
             checkport=80
6、在RS上加入如下脚本并运行(两台真实的RS都要加入并开机启动)# vi /etc/init.d/lvs

#!/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:VIP=10.0.0.20/etc/rc.d/init.d/functionscase "$1" instart)       # Start LVS-DR real server on this machine.      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 broadcast $VIP netmask 255.255.255.255 up;;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

#   /etc/init.d/lvs start

7、启动相关
在RS1\RS2上启动
/etc/init.d/lvs start

在DR1/DR2上启动
/etc/init.d/heartbeat start

然后就可以测试了


看到有的网站上写的需要给主备heartbeat写脚本,其实是不需要的。--------------------------------------------HA主备切换报错,无法切换ERROR: Could not send gratuitous arps. rc=127
解决办法:ldd /usr/lib/heartbeat/send_arp,看看读取的libnet.so.0属于哪个路径,如果没有的话,弄个软连接过去吧。
libnet.so.1 => not found

ln -s /usr/local/lib/libnet.so.1 /lib
页: [1]
查看完整版本: LVS+Heartbeat 配置