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环境搭建好了
-
在server2端(ip为172.25.45.1)新增一个网卡eth1,给eth1添加一个和eth0不在同一网段的ip地址:ip addr add 172.25.254.100 dev eth1
-
在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
未完