LVS-Fullnat模式
Lvs-fullnat
Full-NAT解決的是LVS和RS跨VLAN的問題,而跨VLAN問題解決後,LVS和RS不再存在VLAN上的從屬關係,可以做到多個LVS對應多個RS,解決水平擴容的問題。
lvs中nat和fullnat的區別:
nat模式下報文變化 fullnat模式下報文變化
傳送 接收 傳送 接收
cip —> vip cip —>vip
cip —> rip ( DNAT ) lip —> rip ( SNAT + DNAT )
rip —> cip rip —>lip
vip —> cip ( SNAT ) vip —>cip ( SNAT + DNAT )
注:cip為客戶端的地址,vip為虛擬地址,rip為真實的伺服器,lip為本地地址,SNAT為來源地址轉換,DNAT為目的地址轉換
圖解:
工作原理:
(1)客戶端將請求報文傳送給VS;cip->vip
(2)VS將請求報文的目的地址修改為後端真實伺服器(DNAT),源地址改為自己的ip地址(SNAT),傳送給後端真實伺服器;lip->rip
(3)後端伺服器在處理完之後要將響應的報文返回給Lvs;rip->lip
(4)LVS將返回的資料包源地址改為自己(SNAT),目的地址改為客戶端(DNAT),傳送給客戶端;vip->cip
資料流走向:Client -> Vs -> Rs -> Vs -> client
官方參考站點:
http://kb.linuxvirtualserver.org/wiki/IPVS_FULLNAT_and_SYNPROXY
編譯核心
確保虛擬機器磁碟有10G以上空餘容量
rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
yum install -y rpm-build # rpmbuild此命令需安裝rpm-build
yum install -y gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel perl-ExtUtils-Embed hmaccalc # 需要安裝依賴
yum install -y asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm # 安裝依賴,需自行下載安裝包
yum install -y slang-devel-2.2.1-1.el6.x86_64.rpm # 上兩個安裝包所需的依賴,需自行下載安裝包
cd rpmbuild/SPECS/
rpmbuild -bp kernel.spec
此時會卡在此處
安裝rng-tools 並執行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 …/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
cd …/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
vim Makefile
EXTRAVERSION = -220.23.1.el6.x86_64
uname -r #檢視核心版本
make
make modules_install
make install
vim /boot/grub/grub.conf
#boot=/dev/vda
default=0 #修改預設引導順序
完成之後reboot,檢視核心資訊
cd lvs-fullnat-synproxy/ # 進入此目錄解壓lvs-tools.tar.gz
編譯安裝keepalived
cd tools/keepalived/
yum install openssl-devel popt-devel -y #需要安裝此依賴
./configure --with-kernel-dir="/lib/modules/`uname -r`/build"
make && make install
編譯安裝ipvsadm
cd tools/ipvsadm/
make && make install
至此fullnat模式環境配置完成