LVS - FULLNAT內核編譯方法
Fullnat其實也就是nat類似原理,只是需要在調度器DR上進行進行源目地址轉發,首先介紹一下,CIP:客戶端請求ip,DIP:調度器端的ip,RIP:提供服務的真實主機的ip,由於DIP和RIP之間可以經過路由轉換,所以後端提供服務的real-server可以進行無限擴展,再通過調度器對後端服務的調用,可以完美解決負載均衡,但是存在單點故障,因此還需要結合類似:heartbeat,keepalived,pacemaker,以及紅帽rhcs套件來解決單點故障。這樣系統就非常健壯了,言歸正傳,當客戶端請求報文到達源目IP分別爲CIP和VIP。達到調度器DR後,經過ipvs通過算法調度後臺的真機real-server,但是由於DIP和RIP並不在同一個網段,所以IPVS會將請求的報文源目IP分別改爲DIP和RIP,RS收到報文後,就會將相應報文發給DR,DR通過內部追蹤nat表後,在將響應的報文源目IP分別改爲VIP和CIP,於是響應的報文就發給了客戶端client,這種對源目IP均做修改的LVS類型就稱爲FULNAT模式。
首先下載阿里的修改過後的內核:
準備材料:asciidoc-8.4.5-4.1.el6.noarch.rpm
kernel-2.6.32-220.23.1.el6.src.rpm
newt-devel-0.52.11-3.el6.x86_64.rpm
slang-devel-2.2.1-1.el6.x86_64.rpm
Lvs-fullnat-synproxy.tar.gz
#yum provides */rngd #查找rgnd這個命令的安裝包
#yum install -y rng-tools-2-13.el6_2.x86_64 安裝查找的rgn命令的
#rngd -r /dev/urandom :加快對內核的安裝
進行磁盤拉伸 +20G
#pvcreate /dev/vdb
#vgextend VolGroup /dev/vdb
#lvextend -L +27G /dev/VolGroup/lv_root
#resize2fs /dev/VolGroup/lv_root
##進行正式修改內核;
# rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm #安裝內核安裝包
#yum install -y rpm-build #安裝rpm-build工具
#cd /RPM/rpmbuild/SPECS/
#rpmbuild -bp kerbel.spec #rpmbuild編譯kernel.spec文件
#然後解決各種依賴性,注意倒數第二個改爲perl-ExtUtils-Embed
#
#yum install -y asciidoc-8.4.5-4.1.el6.noarch.rpm
newt-devel-0.52.11-3.el6.x86_64.rpm
slang-devel-2.2.1-1.el6.x86_64.rpm #解決各種依賴性
# rpmbuild -bp kernel.spec
#在另外一個客戶端登陸執行:#rngd -r /dev/urandom 速度會馬上安裝好。
#進入kernel-2.6.32.-220.23.1.el6目錄裏;
#lftp 獲得 Lvs-fullnat-synproxy.tar.gz文件 :解壓該文件,獲得內核的補丁
#tar zxf Lvs-fullnat-synproxy.tar.gz
#cd lvs-fullnat-synproxy
#cp lvs-2.6.32--220.23.1.el6.patch ../linux-2.6.32-220.23.1.el6.x86_64/
#yum install -y patch
#cd ../linux-2.6.32-220.23.1.el6.x86_64/
#patch -p1 < lvs-2.6.32--220.23.1.el6.patch #打補丁打入到內核
#vim .config
CONFIG_IP_VS_TAB_BITS=22 修改爲22位
#vim Makefile
:添加延伸延伸版本號 EXTRAVERTION = -220.23.1.el6
#make -j2 :編譯內核,
#make modules_install :安裝模塊
#make install :安裝內核
#vim /etc/grub.conf :修改啓動項。
10行 default=0 ##使之重起更換內核。使用剛纔修改過後的內核。
如果需要獲取客戶端的ip時,則也需要更改real-server的內核,對real-server的內核進行打toa補丁,動態加載toa模塊,從而使得realserver可以獲得客戶端的ip地址
-i :TUN模式
-b :FULLNAT模式
-m :NAT模式
-g :DR模式
VS上安裝ipvsadm工具,使其支持fullnat 也就是-b模式。
#安裝ipvsadm工具,使得它支持fullnat模式,
#cd rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/lvs-fullnat-synproxy/
#cp lvs-tools.tar.gz ~
#tar zxf lvs-tools.tar.gz
#keepalived的編譯。
#cd keepalived/
#yum install -y openssl-devel
#yum install -y popt-devel :解決安裝ipvsadm的依賴性問題。
#./configure --with-kernel-dir="/lib/modules/`uname -r`/build"
#make ---> make install
Ipvsadm編譯
#cd ipvsadm/
#make --> #make install
#ipvsadm --help :查看是否有fullnat模式支持。如果有支持fullnat模式的,這說明從新安裝的ipvsadm可用。
注意:必須要先編譯安裝keepalived過後,才能安裝ipvsadm命令。