CentOS 6.3下部署LVS(NAT)+keepalived實現高效能高可用負載平衡

來源:互聯網
上載者:User

標籤:

一、系統內容

實驗拓撲:

 

 

實驗環境:

Vmware 9.01 + Windows 8 x64 企業版+8G記憶體

虛擬機器步驟:

1、安裝一台CentOS 6.3 x64主機,記憶體為1GB,網路為NAT模式,注意檢查Vmware中EDIT菜單下Virtual Network Editor中VMnet8

2、 加電,安裝系統。基礎知識了,不再多說,注意:選擇英文而不要選擇中文,選擇是Basic Server模式,系統名稱:LVS-MASTER

3、安裝系統後,用root使用者登入進去,執行 ifconfig查看下網路情況,發現:

沒有看到其物理網卡,我們需要想辦法解決它。

 vi /etc/sysconfig/network-scripts/ifcfg-eth0

按下面的樣子進行修改之,設定隨系統啟動,IP為靜態地址而不是DHCP,IP地址、掩碼、網關、DNS等資訊

 

測試一下PING,看看是不是能PING通BAIDU,對了,為什麼上面GATEWAY是192.168.9.2,是因為在虛擬機器中VMnet8中指定的IP。

 

開始複製多台主機,組成測試環境:

 

關閉掉主機 init 0,然後在虛擬中右鍵LVS-MASTER,MANAGER-CLONE,注意選擇Create a full clone,機器名輸入LVS-BACKUP,大約三十秒時間可以複製好。

 

給LVS-BACKUP主機加電,系統正常啟動

我們需要做兩件事,

一是主機名稱修改為LVS-BACKUP,這個容易

vi /etc/sysconfig/network

修改 LVS-MASTER為LVS-BACKUP就可以了。然後 reboot一下系統就發現系統名稱修改完成了。

 

 

 二是修改系統IP

 

        1、刪除 /etc/udev/rules.d/70-persistent-net.rules 後重啟機器。70-persistent-net.rules這個檔案確定了網卡與MAC地址的綁定,匯入已經存在的虛擬機器後,但網卡的MAC地址發生了變化,所以導致系統認為網路裝置不存在。 

        2、經過這樣的處理後eth0還不能正常啟動,需要將 /etc/udev/rules.d/70-persistent-net.rules 檔案最後的修改"eth1"為"eth0",

然後將/etc/sysconfig/network-scripts/ifcfg-eth0中的MAC直接刪除。

重啟機器,eth0可以正常啟動了。

 

確定執行 ifconfig命令後能看到 eth0裝置,然後繼續下面的動作: 

vi /etc/sysconfig/network-scripts/ifcfg-eth0

將系統IP修改為192.168.9.202

執行一下 service network restart,現在測試一下ping www.baidu.com,看看是不是能PING通。

 

重複上面的步驟,將WEB1和WEB2兩台主機也複製完成,IP分別是192.168.9.203,192.168.9.204

 

網路設定通過了,下面可以使用Securecrt進行網路連接設定了。

=====================================================================================

系統平台:CentOS 6.3

Kernel:2.6.32-279.el6.i686 

查看核心方法:cat /proc/version,為啥重點說明下這裡呢?因為下面有個步驟是建立軟串連到這個核心的目錄上,所以重點說明下為啥下面指定的是這個目錄。 

LVS版本:ipvsadm-1.26

keepalived版本:keepalived-1.2.4

三、安裝

0、安裝LVS前系統需要安裝

yum -y install  openssl-devel lftplibnl* popt* libnl* libpopt* gcc*

 

1、在兩台Director Server上分別配置LVS+Keepalived

------------- -------------LVS install --------------------------

cd /usr/src

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

如果已經建立了軟串連,那麼刪除之: rm /usr/src/linux 注意不能帶最後的/,否則無法刪除。

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

tar zxvf ipvsadm-1.26.tar.gz

cd ipvsadm-1.26

make && make install

 Keepalived install -------------

cd ..

wget http://www.keepalived.org/software/keepalived-1.2.4.tar.gz

tar zxvf keepalived-1.2.4.tar.gz

cd keepalived-1.2.4

./configure 

make && make install

######### 將keepalived做成啟動服務,方便管理##########

\cp /usr/local/etc/rc.d/init.d/keepalived /etc/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/

service keepalived start  

2、開啟路由轉寄

vi /etc/sysctl.conf 

修改下面的值,從0修改到1: 

net.ipv4.ip_forward = 1

 

重新整理系統變數,使系統檔案變更馬上生效

sysctl -p

 

3、配置Keepalived

vi /etc/keepalived/keepalived.conf

輸入  

:.,$d 

刪除所有內容,在LVS-MASTER中輸入以下內容: 

! Configuration File for keepalivedglobal_defs {   notification_email {      [email protected]   }   notification_email_from [email protected]   smtp_server smtp.163.com  # smtp_connect_timeout 30   router_id LVS_DEVEL}# VIP1vrrp_instance VI_1 {    state MASTER             #備份伺服器上將MASTER改為BACKUP    interface eth0    lvs_sync_daemon_inteface eth0    virtual_router_id 51    priority 100    # 備份服務上將100改為90    advert_int 5    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {
     192.168.9.200 #(如果有多個VIP,繼續換行填寫.) }}virtual_server 192.168.9.200 80 { delay_loop 6 #(每隔10秒查詢realserver狀態) lb_algo wlc #(lvs 演算法) lb_kind DR #(Direct Route) persistence_timeout 60 #(同一IP的串連60秒內被分配到同一台realserver) protocol TCP #(用TCP協議檢查realserver狀態) real_server 192.168.9.203 80 { weight 100 #(權重) TCP_CHECK { connect_timeout 10 #(10秒無響應逾時) nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 192.168.9.204 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}

在LVS-BACKUP中輸入以下內容:

! Configuration File for keepalivedglobal_defs {   notification_email {      [email protected]   }   notification_email_from [email protected]   smtp_server smtp.163.com  # smtp_connect_timeout 30   router_id LVS_DEVEL}# VIP1vrrp_instance VI_1 {    state BACKUP             #備份伺服器上將MASTER改為BACKUP    interface eth0    lvs_sync_daemon_inteface eth0    virtual_router_id 51    priority 90    # 備份服務上將100改為90    advert_int 5    authentication {        auth_type PASS        auth_pass 1111    }    virtual_ipaddress {
     192.168.9.200 #(如果有多個VIP,繼續換行填寫.) }}virtual_server 192.168.9.200 80 { delay_loop 6 #(每隔10秒查詢realserver狀態) lb_algo wlc #(lvs 演算法) lb_kind DR #(Direct Route) persistence_timeout 60 #(同一IP的串連60秒內被分配到同一台realserver) protocol TCP #(用TCP協議檢查realserver狀態) real_server 192.168.9.203 80 { weight 100 #(權重) TCP_CHECK { connect_timeout 10 #(10秒無響應逾時) nb_get_retry 3 delay_before_retry 3 connect_port 80 } real_server 192.168.9.204 80 { weight 100 TCP_CHECK { connect_timeout 10 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }}

配置keepalived自啟動

chkconfig  --level 0123456 keepalived on

查看自啟動狀態

chkconfig --list keepalived

 

===下面的指令碼是在WEB伺服器上執行的================================================================================================

在WEB1和WEB2機器上編輯如下檔案

vi /root/lvs_real.sh

#!/bin/bash# description: Config realserver#Written by : http://kerry.blog.51cto.comSNS_VIP=192.168.9.200 /etc/rc.d/init.d/functions case "$1" instart)       /sbin/ifconfig lo:0 $SNS_VIP netmask 255.255.255.255 broadcast $SNS_VIP       /sbin/route add -host $SNS_VIP dev lo:0       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       sysctl -p >/dev/null 2>&1       echo "RealServer Start OK"        ;;stop)       /sbin/ifconfig lo:0 down       /sbin/route del $SNS_VIP >/dev/null 2>&1       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 "RealServer Stoped"       ;;*)       echo "Usage: $0 {start|stop}"       exit 1esac exit 0

 

賦給執行許可權 

 

chmod 755 /etc/rc.d/init.d/functions    別人的配置文檔中沒這個步驟,我不知道為什麼總是說執行到這句時沒有許可權,所以我添加了執行許可權

chmod 755 /root/lvs_real.sh

/root/lvs_real.sh start

添加自動啟動

echo “/root/lvs_real.sh start” >> /etc/rc.local

 ================================================================================================

關閉iptables,因為CentOS 6.3 X64預設是開啟IPTABLES的,這樣我們不方便測試這個實驗,所以暫時採用關閉IPTABLES的辦法,以後需要時再測試如何使用IPTABLES的規則。

 配置iptables關閉自啟動 

chkconfig  --level 0123456 iptables off

查看自啟動狀態 

chkconfig --list iptables 

將四台機器的IPTABLES全部關閉,防止出現其它問題。

光是這樣還是不行的,因為不重啟不能停止掉iptables,所以在四台上執行如下命令:

service iptables stop

 ================================================================================================

4、在2台WEBSERVER中分別配置HTTP,這裡使用了一個簡單的WEB SERVER:HTTPD這個軟體包,當然也可以使用APACHE或者TOMCAT。

在192.168.9.203和192.168.9.204上執行如下命令:

yum -y install httpd

cd /var/www/html/

vi index.html

 

-----------------------------

192.168.9.203上內容:

<h1>WEB1/192.168.9.203</h1>

 

192.168.9.204上內容:

<h1>WEB1/192.168.9.204</h1>

----------------------------- 

 /etc/init.d/httpd start

結果發現出錯無法啟動:

 

我們修改一下: 

vi /etc/httpd/conf/httpd.conf

ServerName www.example.com:80

再次啟動:

 /etc/init.d/httpd restart  

設定開機啟動httpd

chkconfig  --level 0123456 httpd on

 

另一台機器配置一樣,過程略。

 

在兩台LVS伺服器上都要啟動keepalvied,這點十分重要,否則不能正常查看到下面的介面: 

service keepalived restart

 

 

四、測試

####高可用性測試####

類比故障,將CentOS-LVS_MASTER上的keepalived服務停掉,然後觀察CentOS-LVS_BACKUP上的日誌,資訊如下

從日誌中可知,主機出現故障後,備機立刻檢測到,此時備機變為MASTER角色,並且接管了主機的虛擬IP資源,最後將虛擬IP綁定在etho裝置上。

將CentOS-LVS_MASTER 上的keepalived服務開啟後,CentOS-LVS_BACKUP的日誌狀態。

從日誌可知,備機在檢測到主機重新恢複正常後,釋放了虛擬IP資源重新成為BACKUP角色

####故障切換測試####

故障切換是測試當某個節點出現故障後,Keepalived監製模組是否能及時發現然後屏蔽故障節點,同時將伺服器轉移到正常節點來執行。

將WEB2節點服務停掉,假設這個節點出現故障,然後主、備機日誌資訊如下

 

從以上可以看出,Keepalived監控模組檢測到192.168.9.204這台主機出現故障後,將WEB2從叢集系統中剔除掉了。 此時訪問http://192.168.9.200隻能看到WEB1了)

 

重新啟動WEB2節點的服務,日誌資訊如下:

 

Keepalived監控模組檢測到192.168.9.204這台主機恢複正常後,又將此節點加入叢集系統中,再次訪問就可以訪問到WEB2頁面了)

 ============================================================================================== 

 參考文檔:

http://blog.csdn.net/winsonyuan/article/details/7069884

CentOS 6.3下部署LVS(NAT)+keepalived實現高效能高可用負載平衡

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.