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;
重點內容