linux Lvs/Fullnat模式

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

猜你喜欢

转载自blog.csdn.net/iaMay_____/article/details/81326588