iPVS FULLNAT

FullNAT: 除了DR/NAT/TUNNEL之外IPVS下的新的包轉發模式,解決了DR/NAT/TUNNEL中的一些缺點(如不能跨vlan或者跨vlan成本太高,服務搭建較複雜,不易運維等)。

主要規則如下:
local ip address (IDC internal ip address, lip)
IPVS 轉換cip-vip 到/來自 lip-rip,這裏的lip和rip都是IDC 內部ip地址,所以LVS負載均衡器和真實主機可以不在同一個vlan中, 而且真實主機只需要接入內網。

FULLNAT實現如下功能:
1.數據包從外部進來的時候,目標ip更換爲realserver ip,源ip更換爲內網local ip;
2.數據包發送出去的時候,目標ip更換爲client ip,源ip更換爲vip;
性能:和NAT比,正常轉發性能下降<10%;

SYNPROXY: 抵禦同步氾濫(也叫拒絕服務攻擊DDoS)攻擊

Linux kernel 2.6.32 IPVS下的FullNAT和SYNPROXY程序代碼 是由阿里的吳家明和360的陳建以及淘寶朱順明,在阿里章文嵩的一些建議下寫成的。程序代碼的寫成也受到了源NAT和SYNPROXY 思想的影響。

FullNAT和 SYNPROXY支持被吳家明加到了keepalived/ipvsadm

編譯

1. LVS Kernel

1.1 從redhat獲取kernel rpm:
這裏放在host1主機root用戶的加目錄下

kernel-2.6.32-220.23.1.el6.src.rpm

1.2 獲取kernel源碼

 rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
 cd ~/rpmbuild/SPECS
 #yum provides */rpmbuild
 #yum install rpm-build-4.8.0-37.el6.x86_64
 rpmbuild -bp kernel.spec

注意:執行rpmbuild -bp kernel.spec命令的時候可能會提示一些依賴需要解決,可以通過yum源或者下載相應的rpm包來解決依賴問題(perl(ExtUtils::Embed) 包名爲perl-ExtUtils-Embed)。然後還有一個問題:過程中會停下來,這時候需要執行以下命令的一條或者兩條用來生成隨機數(新開終端):

yum whatprovides *\rngd
yum install rng-tools-2-13.el6_2.x86_64 -y
rngd -r /dev/urandom

1.3 添加lvs補丁

tar zxf Lvs-fullnat-synproxy.tar.gz   ##解壓補丁
cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64   ##切換工作目錄到內核文件目錄中:
cp  /root/lvs-fullnat-synproxy/lvs-2.6.32-220.23.1.el6.patch  ##複製到當前目錄就是內核文件目錄中
patch -p1<lvs-2.6.32-220.23.1.el6.patch ##打補丁

1.4 打完補丁後我們來進行編譯安裝(虛擬機的話儘量內存給的大一點,因爲比較費時間,物理機的話可以多開幾個線程同時編譯)

 make ##物理機的話可以加參數 -j16 ,表示同時開啓16個線程進行編譯;編譯時間較長,耐心等待或者打局遊戲再來看
 make modules_install  ##安裝模塊
 make install 

執行完以上步驟之後修改/boot/grub/grub.conf文件中第一個出現的default值爲0,然後reboot,主機起來後使用uname -r查看結果是否爲kernel-2.6.32,如果是的就可以去3. LVS 工具的安裝這一步了

3.LVS 工具的安裝 (keepalived/ipvsadm/quaage)
3.1keepalived安裝

  • keepalived是集羣管理中保證集羣高可用的一個服務軟件,其功能類似於heartbeat,用來防止單點故障。
    keepalived工作原理
  • keepalived是以VRRP協議爲實現基礎的,VRRP全稱Virtual Router Redundancy
    Protocol,即虛擬路由冗餘協議。
  • 虛擬路由冗餘協議,可以認爲是實現路由器高可用的協議,即將N臺提供相同功能的路由器組成一個路由器組,這個組裏面有一個master和多個backup,master上面有一個對外提供服務的vip(該路由器所在局域網內其他機器的默認路由爲該vip),master會發組播,當backup收不到vrrp包時就認爲master宕掉了,這時就需要根據VRRP的優先級來選舉一個backup當master。這樣的話就可以保證路由器的高可用了。
  • keepalived主要有三個模塊,分別是core、check和vrrp。core模塊爲keepalived的核心,負責主進程的啓動、維護以及全局配置文件的加載和解析。check負責健康檢查,包括常見的各種檢查方式。vrrp模塊是來實現VRRP協議的。
  • keepalived的配置文件
    keepalived只有一個配置文件keepalived.conf,裏面主要包括以下幾個配置區域,分別是global_defs、static_ipaddress、static_routes、vrrp_script、vrrp_instance和virtual_server。

    剛纔解壓Lvs-fullnat-synproxy.tar.gz的時候會生成一個壓縮包lvs-tools.tar.gz,繼續對其進行解壓生成一個目錄tools,進入該目錄中keepalived

cd /root/lvs-fullnat-synproxy/tools/keepalived
./configure --with-kernel-dir="/lib/modules/`uname -r`/build"
make 
make install

.安裝完成之後因爲配置文件和啓動腳本都不在一般目錄下,所以需要做軟鏈接

ln -s /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
ln -s /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
ln -s /usr/local/etc/keepalived /etc/
ln -s /usr/local/sbin/keepalived /usr/sbin

注意如果報錯缺少依賴包安裝即可,這裏缺少openssl-devel.x86_64 和 popt-devel.x86_64,安裝後再次執行./configure –with-kernel-dir=”/lib/modules/uname -r/build”知道顯示以下內容安裝成功
這裏寫圖片描述

3.2ipvsadm安裝

cd ~/lvs-fullnat-synproxy/tools/ipvsadm;
 make;
 make install;

重點內容

發佈了102 篇原創文章 · 獲贊 27 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章