fullnat原理圖
fullnat原理:
1 client主機(cip)將請求發往前端的負載均衡器(vip),請求報文源地址是CIP,目標地址爲VIP。負載均衡器收到報文後,發現請求的是在規 則裏面存在的地址,那麼它將客戶端請求報文的源MAC地址改爲自己DIP的MAC地址,目標MAC改爲了RIP的MAC地址,並將此包發送給RS。
2 RS發現請求報文中的目的MAC是自己,就會將次報文接收下來,處理完請求報文後,將響應報文通過lo接口送給eth0網卡直接發送給client主機(cip)。
fullnat模式的優缺點:
FULLNAT一個最大的問題是:RealServer無法獲得用戶IP;爲了解決這個問題我們提出了TOA的概念,主要原理是:將 clientaddress放到了TCP Option裏面帶給後端RealServer,RealServer上通過toa內核模塊hack了getname函數,給用戶態返回TCP Option中的client ip。
虛擬機搭建
虛擬機內存至少2048mb
添加第二塊網卡 ip addr 192.168.2.1/24 dev eth1
軟件安裝
安裝rpm-build
進入 cd /root/rpmbuild/SPECS/
rpmbuild -bp kernel.spec
解決圖中依賴性 沒有的rpm手動安裝
yum install kernel.spec redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel hmaccalc perl-ExtUtils-Embed -y
rpm -ivh slang-devel-2.2.1-1.el6.x86_64.rpm
rpm -ivh newt-devel-0.52.11-3.el6.x86_64.rpm asciidoc-8.4.5-4.1.el6.noarch.rpm
再進行rpmbuild -bp kernel.spec
安裝yum install rng-tools -y
運行 rngd -r /dev/urandom 加快速度
打補丁
tar zxf Lvs-fullnat-synproxy.tar.gz
cd lvs-fullnat-synproxy/
cp lvs-2.6.32-220.23.1.el6.patch /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
cd /root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
patch -p1 < lvs-2.6.32-220.23.1.el6.patch
補丁更新之後直接 make 進行編譯
編譯完成後
make modules_install
make install
cd /boot/grub
vim grub.conf 將default1改爲default0
reboot
解壓 lvs-tools
cd keepalived/
./configure --with-kernel-dir="/lib/modules/`uname -r`/build"
根據提示安裝 軟件 並且 安裝 如軟件-devel
./configure --with-kernel-dir="/lib/modules/`uname -r`/build"
make
make install
cd ..
cd ipvsadm/
make
make install