在FreeBSD環境下搭建雙機熱備+負載均衡

一、        系統環境

FreeBSD 5.4 Release 最小化安裝 + Kernel Source
內核補丁 CARP  +  IPVS  for  5.4 Release
Load Balance Server     ipvs1  192.168.1.200    255.255.255.0   (雙機熱備 主)
Load Balance Server     ipvs2  192.168.1.243    255.255.255.0   (雙機熱備 輔)
Real Server            real1   192.168.1.156    255.255.255.0   http 80 telnet 23
Real Server            real2   192.168.1.133    255.255.255.0   http 80 telnet 23
Share IP                      192.168.1.160    255.255.255.0   (所有機器共享)

二、        邏輯拓撲結構

三、        安裝過程


a、        安裝 IPVS for 5.4 Release patch
Ipvs1# cd /home/vaio/
Ipvs1# tar –zxvf ipvs_freebsd-0.4.0.tar.gz
Ipvs1# mv ipvs-0.4.0 ipvs
Ipvs1# cd ipvs/patch/5.4-RELEASE
Ipvs1# cp * /usr/src/
Ipvs1# cd /usr/src/
Ipvs1# patch –p0 < uipc_socket.c.patch
Ipvs1# patch –p0 < ip_input.c.patch
Ipvs1# patch –p0 < socketvar.h.patch
Ipvs1# patch –p0 < sys_conf_options.patch
Ipvs1# patch –p0 < sys_i386_conf_GENERIC.patch
b、        添加對CARP的支持
   Ipvs1# cd /usr/src/sys/i386/conf/
Ipvs1# vi GENERIC
      在最下面 添加   “device                carp”    注意:中間是兩個tab !
    c、Rebuild FreeBSD Kernel
Ipvs1# config GENERIC
Ipvs1# cd ../compile/GENERIC
Ipvs1# make depend
Ipvs1# make
Ipvs1# make install
Ipvs1# reboot
c、        編譯 ipvs module
Ipvs1# cd /home/vaio/ipvs/ipvs
Ipvs1# make
Ipvs1# cd ipvsadm
Ipvs1# make install
    d、編譯 ipvs scheduler module
Ipvs1# cd ../schedulers
Ipvs1# cd  rr                           (按照需求 編譯相應規則)
Ipvs1# make
以上操作在ipvs2上同樣做一遍

四、   配置方法
      
a、CARP配置
         ipvs1# sysctl net.inet.carp.preempt=1
         ipvs1# ifconfig carp0 create
         ipvs1# ifconfig carp0 vhid 1 pass yourpassword 192.168.1.160/24 up
         ipvs2# sysctl net.inet.carp.preempt=1
         ipvs2# ifconfig carp0 create
         ipvs2# ifconfig carp0 vhid 1 advskew 100 pass yourpassword 192.168.1.160/24 up
      b、IPVS配置
         ipvs1# cd /home/vaio/ipvs/ipvs/
         ipvs1# kldload ./ipvs.ko
         ipvs1# kldload schedulers/rr/ip_vs_rr.ko
         ipvs1# cd ipvsadm
         ipvs1# ./ipvsadm  –A  –t   192.168.1.160:80  -s  rr
         ipvs1# ./ipvsadm  -a   -t   192.168.1.160:80  -r  192.168.1.156:80  -g
         ipvs1# ./ipvsadm  -a   -t   192.168.1.160:80  -r  192.168.1.133:80  -g
         ipvs1# ./ipvsadm  –A  –t   192.168.1.160:23  -s  rr
         ipvs1# ./ipvsadm  -a   -t   192.168.1.160:23  -r  192.168.1.156:23  -g
         ipvs1# ./ipvsadm  -a   -t   192.168.1.160:23  -r  192.168.1.133:23  -g
以上操作在ipvs2上同樣做一遍
      c、配置Real Server
         在所有 Real Server 上 添加
ifconfig_lo0_alias0="inet 192.168.1.160 netmask 255.255.255.0"
d、Clear IPVS配置
         ipvs1# ./ipvsadm   -C
ipvs1# kldunload  ip_vs_rr
         ipvs1# kldunload  ipvs

五、   測試
     
  a、IPVS 測試
通過同一客戶端 訪問 http://192.168.1.160訪問的web頁面在所有Real Server 上切換。
通過不同客戶端訪問 http://192.168.1.160訪問的web頁面在所有Real Server 上切換。
通過同一客戶端 訪問 192.168.1.160:23 每次連接一臺不同的 Real Server。
  b、CARP 測試
     ssh 到 192.168.1.160 可以看到 主機名應爲 ipvs1 (主)
     在客戶端上ping 192.168.1.160 並斷開 ipvs1 的網線 在丟失1個包後再次連通
     再次ssh 到 192.168.1.160 可以看到主機名應爲 ipvs2 (輔->主)
     當 ipvs1網線連通後 192.168.1.160 再次切換到 ipvs1 上
     以上操作時 應不影響 對 192.168.1.160的 http 和 telnet 訪問

至此OK!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章