Lvs _ Fullnat

LVS FULL NAT 模式:

这里写图片描述

     看完上图后发现 FULLNAT有一个问题是:RealServer无法获得用户IP;淘宝通过叫TOA的方式解决的,
     主要原理是:将client address放到了TCP Option里面带给后端RealServer,RealServer收到后保存在socket的结构体里并通过toa内核模块hook了getname函数,这样当用户调用getname获取远端地址时,返回的是保存在socket的TCPOption的IP. 百度的BVS是通过叫ttm模块实现的,其实现方式跟toa基本一样,只是没有开源.

实现原理图如下:

这里写图片描述

1、调整 server 1 的内存大小。

这里写图片描述
这里写图片描述

2、安装rep-build ,并为解压和打补丁做准备

这里写图片描述

[root@server1 SPECS]# rpmbuild -bp kernel.spec   ##只做准备
error: Failed build dependencies:
    gcc >= 3.4.2 is needed by kernel-2.6.32-220.23.1.el6.x86_64
    redhat-rpm-config is needed by kernel-2.6.32-220.23.1.el6.x86_64
    patchutils is needed by kernel-2.6.32-220.23.1.el6.x86_64
    xmlto is needed by kernel-2.6.32-220.23.1.el6.x86_64
    asciidoc is needed by kernel-2.6.32-220.23.1.el6.x86_64
    elfutils-libelf-devel is needed by kernel-2.6.32-220.23.1.el6.x86_64
    zlib-devel is needed by kernel-2.6.32-220.23.1.el6.x86_64
    binutils-devel is needed by kernel-2.6.32-220.23.1.el6.x86_64
    newt-devel is needed by kernel-2.6.32-220.23.1.el6.x86_64
    python-devel is needed by kernel-2.6.32-220.23.1.el6.x86_64
    perl(ExtUtils::Embed) is needed by kernel-2.6.32-220.23.1.el6.x86_64
    hmaccalc is needed by kernel-2.6.32-220.23.1.el6.x86_64
这些都是缺少的东西,都得一一安装

这里写图片描述

安装好之后,就可以准备了,但是会卡住。这时,我们重新连接同一台server1,在操作。安装

[root@server1 ~]# yum install -y rng-tools-2-13.el6_2.x86_64
[root@server1 ~]# rngd -r /dev/urandom   ##重新载入

这里写图片描述
并安装所需要的安装包
这里写图片描述
这里写图片描述
这里写图片描述

3、解压 Lvs-fullnat 的 包并 安装补丁包儿,打补丁

这里写图片描述

4、添加版本型号

[root@server1 linux-2.6.32-220.23.1.el6.x86_64]# uname -r
2.6.32-431.el6.x86_64
[root@server1 linux-2.6.32-220.23.1.el6.x86_64]# vim Makefile  ##将 -431.el6.x86_64 添加到32的后面
 ##切记打补丁的时候一定要注意 -p 后跟的是 “yi” 而不是英文 “l” 

这里写图片描述

5、编译

[root@server1 linux-2.6.32-220.23.1.el6.x86_64]# make 
[root@server1 linux-2.6.32-220.23.1.el6.x86_64]# make modules_install
[root@server1 linux-2.6.32-220.23.1.el6.x86_64]# make install

这里写图片描述

6、修改配置文件

这里写图片描述
这里写图片描述

7、重启,为了检测是否编译成功

这里写图片描述

8、安装一个tool的包,并卸载掉ipvsadm。

这里写图片描述
可以查看出名字以及版本名
这里写图片描述

9、再次对 进行编译(三部曲)
第一、
这里写图片描述
“!!!“ 不可以忽略
“Warning“ 警告,可以忽略
这里写图片描述
这里写图片描述
这里写图片描述
第二、
这里写图片描述
这里写图片描述
第三、
这里写图片描述

10、cd /usr/local 对 ipvsadm 进行编译

这里写图片描述
这里写图片描述
这里写图片描述

11、查看

这里写图片描述

size = 2 的 22 次方 = 4190304

12、添加策略
server1 (调度器VS)

[root@server1 ~]# ipvsadm -A -t 172.25.254.100:80 -s rr
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.2:80 -b
[root@server1 ~]# ipvsadm -a -t 172.25.254.100:80 -r 172.25.254.3:80 -b

server2&server3(后端服务器RS)
这里写图片描述
这里写图片描述
测试:真机(Client)

[root@foundation66 ~]# curl 172.25.254.100
^C
[root@foundation66 ~]# curl 172.25.254.100
^C
[root@foundation66 ~]# curl 172.25.254.100
^C
[root@foundation66 ~]# curl 172.25.254.100
^C

猜你喜欢

转载自blog.csdn.net/JaneNancy/article/details/81329685
lvs