天天看點

centos6.0安裝lvs+keepalive

一、概述

1.1、背景

随着網站業務量的增長網站的伺服器壓力越來越大,需要負載均衡方案,而商業的硬體如F5成本高,為了節省不必要的浪費,同時實作商業硬體一樣的高性能高可用的功能,我們可以利用LVS+Keepalived基于完整開源軟體的架構提供一個負載均衡及高可用的伺服器。

1.2、LVS+Keepalived介紹

LVS: Linux Virtual Server的簡寫,意即Linux虛拟伺服器,是一個虛拟的伺服器叢集系統。本項目在1998年5月由章文嵩博士成立,是中國國内最早出現的自由軟體項目之一。目前有三種IP負載均衡技術(VS/NAT、VS/TUN和VS/DR):

目前有十種排程算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq),上次實驗是采用的VS/DR方法并帶有主備模式LVS,排程算法用的wrr.兩台WEB通vip經lvs(主備)排程實作業務分發負載均衡。

Keepalived在這裡主要用作RealServer的健康狀态檢查以及LoadBalance主機和BackUP主機之間failover的實作.

以下實驗是在隻用兩台的情況下,實作WEB負載均衡的方法

二、安裝前環境和準備

2.1、實驗說明

主LVS_master,WEB1: 192.168.6.14

備LVS_backeup,WEB2:192.168.6.247

對外VIP:192.168.6.201

2.2、系統環境

作業系統64位centos 6.0,

核心:2.6.32-220.el6.x86_64

4台作業系統均為centos 6.0,并配有yum環境.

2.3、安裝前準備

2.3.1、下載下傳popt-static

http://mirror.centos.org/centos/6/os/x86_64/Packages/popt-static-1.13-7.el6.x86_64.rpm

我在安裝過程碰到些報錯,下載下傳該包問題解決,下載下傳以下包時根據系統核心确定其版本。

2.3.2、下載下傳keepalived

http://www.keepalived.org/software/keepalived-1.2.2.tar.gz

2.3.3、下載下傳ipvsadm

http://www.linuxvirtualserver.org/software/kernel-2.6/ipvsadm-1.26.tar.gz

2.3.4、加載ip_vs子產品(重要)

   檢視核心uname–r,加載子產品,modprobe ip_vs,檢查lsmod | grep ip_vs

三、Director Server安裝

3.1、LVS_Master安裝(192.168.6.14)

3.1.1、安裝依賴包

#yum -y install kernel-devel make gccopenssl-devel libnl* popt*

我這用的yum安裝,大多情況實際下不一定有網絡,手動去下載下傳相關包或從安裝包中找到相關。

3.1.2、安裝popt-static

#rpm -ivh popt-static-1.13-7.el6.x86_64.rpm

3.1.3、安裝ipvsadm

# ln -s /usr/src/kernels/2.6.32-71.el6.x86_64/usr/src/linux

# tar -zxvfipvsadm-1.26.tar.gz -C /usr/src/

# cd /usr/src/ipvsadm-1.26/

# make

# make install

3.1.3、安裝keepalived

# tar -zxvfkeepalived-1.2.2.tar.gz -C /usr/src/

# cd /usr/src/keepalived-1.2.2/

# ./configure

#cp /usr/local/etc/rc.d/init.d/keepalived/etc/rc.d/init.d/

#cp /usr/local/etc/sysconfig/keepalived/etc/sysconfig/

# mkdir /etc/keepalived

#cp /usr/local/etc/keepalived/keepalived.conf/etc/keepalived/

#cp /usr/local/sbin/keepalived /usr/sbin/

3.1.4、配置keepalived.conf

# vi /etc/keepalived/keepalived.conf//内容如下

3.1.5、開啟負載伺服器路由機制(IP轉發)

vi /etc/sysctl.conf 保證有如下内容

 net.ipv4.ip_forward = 1

3.1.6、建立負載伺服器啟動腳本

vi /usr/local/bin/lvsdr.sh 加入如下内容

3.1.7、測試負載伺服器啟動腳本

#Chmod +x /usr/local/bin/lvsdr.sh

#Chomd 775 /usr/local/bin/lvsdr.sh

執行測試

   #/usr/local/bin/lvsdr.shstart

   檢視ifconfig是否有ifcfg-eth0:1   (有就對了)

   檢視route -n 路由表是否多了eth0:1路由(有就對了)

   [root@host1 ~]/usr/local/bin/lvsdr.sh stop

   檢視ifconfig是否有ifcfg-eth0:1  (無就對了)

   檢視route -n 路由表是否多了eth0:1路由(無就對了)

   [root@host1 ~]/usr/local/bin/lvsdr.sh  adsa

   是否提示參數錯誤,隻能使用{start|stop}。

3.1.8、安裝啟動回環位址腳本

要是用lvs的dr模式,必須在realserver上啟動回環位址,是以,搭建兩台機器的負載均衡,當然就得在本機也啟動相應的回環位址,才能實作所要的功能,腳本如下

vi /usr/local/bin/startlo

給其執行chmod+x/usr/local/bin/startlo

3.1.9、安裝檢測啟動回環位址腳本

但由于keepalived不像heartbeat裡有ldirectord來控制回環位址的啟動和停止,是以我們需要人為的判斷應該在哪台機器上啟動回環位址,是以就得使用下面的一個腳本判斷,

# vi /usr/local/bin/check_interface

給其執行權限chmod +x /usr/local/bin/check_interface

3.2、LVS_Backup安裝

LVS_Backup(192.168.6.247)安裝與LVS_MASTER安裝一緻,不同的隻是修改keepalived配置檔案,确定其主備關系,當主的不線上時,備的頂上。

[root@host1 ~]# vi/etc/keepalived/keepalived.conf//内容如下

四、最後安裝測試

Httpd安裝這裡就不說了,啟動每台機器的腳本,和HTTPD服務,keepalived。

[root@host1~]# /usr/local/bin/lvsdr.sh start

[root@host1~]# /usr/local/bin/check_interface

[root@host1~]# chkconfigkeepalived on

[root@host1 ~]# /etc/init.d/keepalived start

[root@host1 ~]# ipvsadm

IP Virtual Server version 1.2.1 (size=4096)

ProtLocalAddress:PortScheduler Flags

->RemoteAddress:PortForward Weight ActiveConnInActConn

TCP192.168.6.201:httpwrr

->localhost.localdomain:httpLocal100

-> 192.168.6.247:httpRoute100

在區域網路中浏覽器不同主機上同時打開http://192.168.6.201檢視web,測試時進入的頁面不一樣則成功,做測試,兩台機器做了兩個不同頁面,實際環境中為一緻的。

關閉其中一台/etc/init.d/keepalived stop檢視,有頁面則正常。

[root@node1 keepalived]# vi realserver

#!/bin/bash

#description : start realserver

VIP=192.168.1.250

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

case "$1" in

start)

echo " start LVS ofREALServer"

/sbin/ifconfig lo:0 $VIP broadcast $VIPnetmask 255.255.255.255 up

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

;;

stop)

/sbin/ifconfig lo:0 down

echo "close LVSDirectorserver"

echo "0">/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/lo/arp_announce

echo "0">/proc/sys/net/ipv4/conf/all/arp_ignore

echo "0">/proc/sys/net/ipv4/conf/all/arp_announce

*)

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

exit 1

esac

[root@node1 keepalived]# chmod +xrealserver

[root@node1 keepalived]# ./realserverstart

繼續閱讀