天天看點

LVS+HEARTBEAT叢集安裝配置

叢集拓撲如下圖:

文檔配置環境:

主排程器A:222.76.222.69(eth0) 内網:192.168.1.69(eth1)

從排程器B:222.76.222.75(eth0) 内網:192.168.1.75(eth1)

真實伺服器R1:222.76.222.71

真實伺服器R2:222.76.222.72

真實伺服器R3:222.76.222.73

虛拟IP(VIP):222.76.222.70

在排程器A和B的/etc/hosts内加入以下内容:

vi /etc/hosts

222.76.222.69         master.abc.cn

222.76.222.75         slave.abc.cn

<b>配置主排程器</b><b>A:</b>

<b> </b>

安裝<b>libnet-1.1.2.1.tar.gz</b>

tar –zxvf  libnet-1.1.2.1.tar.gz

cd libnet-1.1.2.1

./configure

make &amp;&amp; make install

libnet安裝完成。

安裝<b>ipvsadm-1.24.tar.gz</b>

tar –zxvf ipvsadm-1.24.tar.gz

cd ipvsadm-1.24

将目前使用核心連接配接到/usr/src/linux

ln -s /usr/src/kernels/`uname -a` /usr/src/linux

//将目前使用核心連接配接到/usr/src/linux

(需要用`uname -a`來看系統的核心版本是多少)

ipvsadm安裝完成。

安裝<b>heartbeat-2.0.2.tar.gz</b>

tar –zxvf heartbeat-2.0.2.tar.gz

cd heartbeat-2.0.2

./ConfigureMe configure --disable-swig --disable-snmp-subagent

heartbeat安裝完成。

<b>配置lvs啟動腳本</b>

本文檔采用的是lvs-DR模式,該模式的特點是用戶端的請求從排程器進入配置設定到真實伺服器,然後真實伺服器的響應是直接傳遞給用戶端的。

配置如下:

vi /etc/init.d/lvs

#!/bin/sh

#chkconfig: 2345 20 80

# description: start LVS   of  Directorserver

VIP1=222.76.222.70   //指定虛拟IP

RIP1=222.76.222.71

RIP2=222.76.222.72

RIP3=222.76.222.73 

RIP4=222.76.222.75

RIP5=222.76.222.69  // RIP1-RIP5為真實伺服器IP,如有更多真實伺服器則可以添加更多,如RIP6等

. /etc/rc.d/init.d/functions

case "$1" in

    start)

        echo " start LVS  of DirectorServer"

       # set the Virtual  IP Address

       /sbin/ifconfig eth0:0 $VIP1 broadcast $VIP1 netmask 255.255.255.255 up   //LVS啟動時添加VIP的網口eth0:0

/sbin/route add -host $VIP1 dev eth0:0

       #Clear IPVS table

       /sbin/ipvsadm -C

      #set LVS

      /sbin/ipvsadm -A -t $VIP1:80 -s lc

      /sbin/ipvsadm -a -t $VIP1:80 -r $RIP1:80 -g

      /sbin/ipvsadm -a -t $VIP1:80 -r $RIP2:80 -g

      /sbin/ipvsadm -a -t $VIP1:80 -r $RIP3:80 -g

      /sbin/ipvsadm -a -t $VIP1:80 -r $RIP4:80 -g

      /sbin/ipvsadm -a -t $VIP1:80 -r $RIP5:80 -g

      #Run LVS   //使用ipvsadm來轉發用戶端請求,-s lc 為最小連接配接數算法,-g指的是采用DR模式。有幾個真實伺服器就添加幾條記錄。

      /sbin/ipvsadm

      #end

        ;;

    stop)

        echo "close LVS Directorserver"

        /sbin/ipvsadm –C  //關閉時清除ipvsadm表

    *)

        echo "Usage: $0 {start|stop}"

        exit 1

esac

注意:這個資源腳本不要使用chkconfig管理,放入/etc/init.d内即可。

<b>配置heartbeat</b>

<b>cd heartbeat-2.0.4</b>

<b>cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/</b>

cp ldirectord/ldirectord.cf /etc/ha.d/

<b>Heartbeat</b><b>的主目錄是:/etc/ha.d/</b>

<b>Ha.cf</b><b>為heartbeat的主配置檔案</b>,配置如下,其餘可以按照預設配置:

vi /etc/ha.d/ha.cf

#日志檔案位置

logfile /var/log/ha-log

#指定主備伺服器多久發送一次心跳

keepalive 2

#指定30秒沒有收到對方心跳就認為對方已經DOWN機

deadtime 30

#10秒沒有收到心跳,便發出警報。

warntime 10

#對方DOWN後120秒重新檢測一次。

initdead 120

#指定監聽端口

udpport 694

#心跳監聽網口,這裡為eth1

bcast   eth1   //在檔案中把第一個bcast前面的#去掉,還要把後面的#linux去掉

#主節點恢複後,自動收回資源。

auto_failback on

#指定主備伺服器的主機名稱,即在hosts檔案中指定的。

第一個node為主伺服器,第二個node為備伺服器。

node          master.abc.cn   //伺服器的主機名

node          slave.abc.cn

#當222.76.222.65,222.76.222.71這兩個IP都不能ping通時對方即開始接管資源。

ping_group group1 222.76.222.65 222.76.222.71

#啟用ipfail腳本

respawn root /usr/lib/heartbeat/ipfail

#指定運作ipfail的使用者。

apiauth ipfail gid=root uid=root

主配置檔案配置完成

<b>haresources</b><b>檔案配置</b>,這個檔案指定虛拟IP和改主機控制的資源腳本。

内容如下:

vi /etc/ha.d/haresources

# master.abc.cn為主排程器主機名,222.76.222.70為虛拟IP,

lvs ldirectord 為heartbeat控制的資源腳本,這些腳本預先要放在

/etc/init.d中。

master.abc.cn 222.76.222.70 lvs ldirectord

資源檔案配置完成。

<b>ldirectord.cf</b><b>是ldirectord程序的配置檔案</b>,該程序用來監視真實伺服器的運作狀況,如果真實伺服器不能響應請求則把它排除在轉發清單外。

vi /etc/ha.d/ldirectord.cf

# Global Directives

#設定真實伺服器的逾時時間

checktimeout=30

#監視真實伺服器的時間間隔

checkinterval=10

#如全部真實伺服器失敗,則轉發至本地

fallback=127.0.0.1:80

#改變配置檔案内容,不需要重新ldirectord

autoreload=yes

#指定日志位置

logfile="/var/log/ldirectord.log"

quiescent=no

# A sample virual with a fallback that will override the gobal setting

#指定虛拟IP

virtual=222.76.222.70:80 

#指定真實伺服器IP及監聽端口

        real=222.76.222.72:80  gate

        real=222.76.222.73:80  gate

        real=222.76.222.74:80  gate

        real=222.76.222.75:80  gate

        real=222.76.222.76:80  gate

        fallback=127.0.0.1:80   gate

        service=http

#監聽測試頁面名稱,這個頁面放入真實伺服器web服務的根目錄

        request="test.html"

#指定測試頁面傳回内容

        receive="Test Page"

        virtualhost=v.abc.cn

#指定轉發算法

        scheduler=lc   //這裡的算法要和LVS腳本的算法一樣

        protocol=tcp

ldirectord.cf配置完成。

<b>authkeys</b><b>檔案配置</b>

authkeys檔案的作用是用來設定心跳資訊的加密方式。

vi /etc/ha.d/authkeys

auth 1

1 crc

這裡的設定是使用crc循環備援校驗,并不采用加密的方式。

這個檔案的權限必須是600。

整個lvs和heartbeat配置完成。

<b>從排程器B的配置與A完全一樣。</b>

<b>Heartbeat</b><b>應用chkconfig進行管理,将其随機啟動。</b>

<b>配置真實伺服器腳本</b>,在每台真實伺服器的/etc/init.d目錄内放置realserver腳本,這裡主備排程器同時也為真實伺服器。

vi /etc/init.d/realserver

#!/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=222.76.222.70

host=`/bin/hostname`

start)

       # Start LVS-DR real server on this machine.

        /sbin/ifconfig lo down

        /sbin/ifconfig lo up

#修改相關核心參數:

        echo "1" &gt;/proc/sys/net/ipv4/conf/lo/arp_ignore

        echo "2" &gt;/proc/sys/net/ipv4/conf/lo/arp_announce

        echo "1" &gt;/proc/sys/net/ipv4/conf/all/arp_ignore

        echo "2" &gt;/proc/sys/net/ipv4/conf/all/arp_announce

        /sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 up

        /sbin/route add -host $VIP dev lo:0

;;

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}"

真實伺服器的配置腳本完成,<b>将腳本放置到每個真實伺服器/etc/init.d中(包括主從排程器),并用chkconfig進行管理,讓其随機啟動。</b>

最後将heartbeat在主從排程器上,realserver在真實伺服器上開啟,測試其是否切換與轉發正常工作

本文轉自wiliiwin 51CTO部落格,原文連結:http://blog.51cto.com/wiliiwin/199214

繼續閱讀