LVS负载均衡之FullNat模式

准备工作

虚拟机server1配置两块网卡
两台环境干净的虚拟机作后端服务器

扩展

rpmbuild
-bp只作准备 (解压与打补丁)
-bc准备并编译
-bi编译并安装
-bl检验文件是否齐全
-ba编译后做成*.rpm和src.rpm,建立源码和二进制包
-bb编译后做成*.rpm,只建立二进制包
-bs只做成*.src.rpm ,只建立源码包
–buildroot=DIRECTORY确定以root目录建立包
–clean完成打包后清除BUILD下的文件目录
–nobuild不进行BUILD的阶段
–nodeps不检查建立包时的关联文件
–rmsource完成打包后清除sources
–rmspec完成打包后清除specfile
–short-circuit跳过
–target=CPU-VENDOR-OS确定包的最终使用平台
-D, --define=‘MACRO EXPR’预定义
-E, --eval=‘EXPR’显示大量EXPR扩展信息
–macros=<FILE:…>读<FILE:…>文件代替默认文件
–nodigest不检查包的说明信息
–nosignature不检查包的签名信息
–rcfile=<FILE:…>读<FILE:…>文件代替默认文件
-r, --root=ROOT使ROOT为最高级别的路径
–querytags显示已知的有疑问的地方
–showrc显示最终的配置信息
–quiet提供少量的信息
-v, --verbose提供大量的详细的信息
–version显示rpm包的版本

RPM的工作方式:

1,打开rpm数据库
2,从.软件包中提取h#,并且检查h#的需要是否被满足?(这里的依赖关系,有的是软件包自己给出的,有的是你系统自带,当然还可能有你没有的。)
是:转第4步   不是:转第3步
3,显示失败的依赖关系
4,安装软件,解压缩软件包,并且放到合适的位置,这里应该是有一定的规则。
5,关闭rpm数据库
显然,我这个软件包不满足依赖关系,如果强制用-force安装的话可能出错误。
 如果你失败了,那就少什么补什么

介绍一下可以用来搞定安装的全部工具。

gcc-这个是编译器
make-包含从makefiles产生二进制文件的make命令,当然还有其他的一些功能。
glibc-重要的共享库,c库和基本的数学库。没有这个连系统都没有办法运行。
glibc-devel-包含了创建可执行文件所需要的标准头文件。
binutils-包含编译程序需要的使用工具,主要是汇编和链接程序。
kernel-source-包含内核源代码
libc-包含libc5,而上面我们提到的glibc是linc6
filename-4.2.3.i386.rpm这个表示可以用rpm来安装,我们最喜欢的方式。
filename-4.2.3.tar.gz这个表示用gz压缩,用tar归档,至于是什么,那就不知道了
filename-4.2.3.src.tar.gz这个表示用gz压缩,用tar归档,内容是源代码
filename-4.2.3.bin.SPARC.tar.gz这个是表示用gz压缩,用tar归档,可以在SPARC工作站上运行,的2进制代码。
filename-4.2.3.bin.ELF.static.tar.gz这个表示用gz压缩,用tar归档,由静态连接的, FLF的可执行文件组成的2进制文件。
4.2.3 表示第4版,第2个补丁,第3次修改。
rpm.有这个后缀表示是fedora使用的2进制文件,这个不是说里面的内容2进制的,而是说他可以被fedora的软件管理器使用。可以用归档文件管理器把他打开。
tar.这个是用tar归档,使用tar 命令打开
gz.和z.这个是说用gzip压缩的,用gzip命令打开
tgz.这个扩展名和以上的结合,容易搞定
bz2.用bzip2压缩的,可以用bip2命令打开
taz.和tz.这个表示用tar压缩,也用tar命令打开
lsm.这个通常是介绍归档内容的文本,可以和软件包一起下载。
deb.这个同rpm但是用于Debian

server1

内核编译

下载包:

kernel-2.6.32-220.23.1.el6.src.rpm 
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 Lvs-fullnat-synproxy.tar.gz
Lvs-fullnat-synproxy.tar.gz

安装kernel出现rembuild

rpm -ivh kernel-2.6.32-220.23.1.e16.src.rp
error: Failed build dependencies:
    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
    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

进入目录编译,出错存在软件依赖包

cd rpmbuild/SPECS
yum install rpm-build -y  安装rpm -build工具
rpmbuild -bp kernel.spec  会出现依赖问题

安装依赖包

yum install redhat-rpm-config patchutils xmlto  asciidoc elfutils-libelf-devel binutils-devel newt-devel python-devel hmaccalc perl-ExtUtils-Embed gcc  -y

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

终端会在这里停顿,产生随机数才会继续,需要在开启一个终端

新开启的终端生成随机数

yum provides */rngd  
yum install -y 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
cd ~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/

vim Makefile
make
make modules_install  
make install       ##安装的是引导文件,在/boot目录下就有你所编译的内核文件vmlinuz-2.6.32-220.23.1.el6
查看/boot/有编译好的文件,改变grub中default=0,reboot,开机查看uname -r
vim /boot/grub/grub.conf

default=0 ##因为编译好的内核文件就加在原有版本的上面,因此default要改成0,开机时才会进入所编译的内核版本
title Red Hat Enterprise Linux Server (2.6.32-220.23.1.el6) 所编译的版本
title Red Hat Enterprise Linux (2.6.32-431.el6.x86_64) 原有的系统内核版本

添加策略

ipvsadm -A -t 172.25.45.100:80 -s rr

ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.1:80 -b

ipvsadm -a -t 172.25.45.100:80 -r 172.25.45.3:80 -b
ipvsadm -C  ##清除所有策略
ipvsadm -A -t 172.25.74.1:80 -s rr
ipvsadm -a -t 172.25.74.1:80 -r 172.25.45.2:80 -b
ipvsadm -a -t 172.25.74.1:80 -r 172.25.45.3:80 -b
ipvsadm -P -t     172.25.74.1:80 -z 172.25.45.1:80  ##添加本地ip,这里也可以写回环接口127.0.0.1 
pvsadm -G -t  172.25.74.1:80  ##get
ipvsadm -Q -t service-address -z local-address

编译keepalived

cd lvs-fullnat-synproxy/           ls
tar zxf lvs-tools.tar.gz   多出一个tools目录
cd tools/keepalived/
yum -y install openssl-devel  popt-devel解决依赖性
./configure --with-kernel-dir="/lib/modules/`uname -r`/build"(注意:uname -r 用反引号括起来)
make
make install

编译ipvsadm

cd ~/lvs-fullnat-synproxy/tools/ipvsadm/
make
make install
/etc/init.d/ipvsadm start
ipvsadm -l
ipvsadm --help    fullnat参数出现时则说明fullnat环境搭建好了
  1. 在server2端(ip为172.25.45.1)新增一个网卡eth1,给eth1添加一个和eth0不在同一网段的ip地址:ip addr add 172.25.254.100 dev eth1

  2. 在server1(ip为172.25.45.1)和server3(ip为172.25.45.3)端,设定网关为server2的ip:route add default gw 172.25.45.2 。之后开启server1和server3的http服务,作为RS。

小结

https://blog.csdn.net/qq_42711214/article/details/82990698?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.control

https://blog.csdn.net/wangkana/article/details/81814562

未完

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值