LVS-Fullnat之编译内核 将fullnat模块添加到内核
主机环境 redhat6.5 64位实验环境 ip 172.25.29.6
安装包 asciidoc-8.4.5-4.1.el6.noarch.rpm
Lvs-fullnat-synproxy.tar.gz kernel-2.6.32-220.23.1.el6.src.rpm newt-devel-0.52.11-3.el6.x86_64.rpm slang-devel-2.2.1-1.el6.x86_64.rpm防火墙状态:关闭
重新编译内核之前,要保证根分区要有20G的内存。
如果没有足够的空间就添加一块20G的虚拟磁盘
1.给根分区分用lvm分20G的空间(如果有足够的空间,就不用做拉伸了)
# fdisk -l #查看分区
Disk /dev/vdc: 21.5 GB, 21474836480 bytes #新添加的磁盘
16 heads, 63 sectors/track, 41610 cylinders
Units = cylinders of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
# pvcreate /dev/vdc #用pv分成物理块
Physical volume"/dev/vdc" successfully created
# pvs #查看,pv成功
PV VG Fmt Attr PSizePFree
/dev/vda2VolGroup lvm2 a-- 8.51g 0
/dev/vdc lvm2 a--20.00g 20.00g
# vgs #查看
VG #PV #LV #SN Attr VSize VFree
VolGroup 12 0 wz--n- 8.51g 0
# vgextend VolGroup /dev/vdc #扩展VolGroup组
Volume group"VolGroup" successfully extended
# vgs #查看
VG #PV #LV #SN Attr VSize VFree
VolGroup 22 0 wz--n- 28.50g 20.00g
# lvextend -L 20G /dev/VolGroup/lv_root#扩展lv
Extending logicalvolume lv_root to 20.00 GiB
Logical volume lv_rootsuccessfully resized
# df -lh #查看,根分区7.5G
Filesystem SizeUsed Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 7.5G1.5G5.7G 21% /
tmpfs 499M 0499M0% /dev/shm
/dev/vda1 485M 55M405M 12% /boot
# resize2fs /dev/VolGroup/lv_root #扩展文件系统
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/VolGroup/lv_root is mounted on /; on-lineresizing required
old desc_blocks = 1, new_desc_blocks = 2
Performing an on-line resize of /dev/VolGroup/lv_root to5242880 (4k) blocks.
The filesystem on /dev/VolGroup/lv_root is now 5242880 blockslong.
# df -lh #查看,根分区20G
Filesystem SizeUsed Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root20G1.5G 18G8% /
tmpfs 499M 0499M0% /dev/shm
/dev/vda1 485M 55M405M 12% /boot
2. 重新编译内核,将fallnat模块添加到在内核及测试
A)重新编译内核
# ls
asciidoc-8.4.5-4.1.el6.noarch.rpm Lvs-fullnat-synproxy.tar.gz
kernel-2.6.32-220.23.1.el6.src.rpmnewt-devel-0.52.11-3.el6.x86_64.rpm
lvs-fullnat-synproxy slang-devel-2.2.1-1.el6.x86_64.rpm
# rpm -vih kernel-2.6.32-220.23.1.el6.src.rpm #安装内核包
# yum install rpm-build -y #安装rpmbuild
# cd ~/rpmbuild/
# ls
BUILDBUILDROOTRPMS SOURCESSPECSSRPMS
# cd SPECS/
# ls
kernel.spec
# rpmbuild -bp kernel.spec #生成内核源码
error: Failed build dependencies:
redhat-rpm-config isneeded by kernel-2.6.32-220.23.1.el6.x86_64
patchutils is neededby kernel-2.6.32-220.23.1.el6.x86_64
xmlto is needed bykernel-2.6.32-220.23.1.el6.x86_64
asciidoc is needed bykernel-2.6.32-220.23.1.el6.x86_64
elfutils-libelf-develis needed by kernel-2.6.32-220.23.1.el6.x86_64
binutils-devel isneeded by kernel-2.6.32-220.23.1.el6.x86_64
newt-devel is neededby kernel-2.6.32-220.23.1.el6.x86_64
python-devel is neededby 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 bykernel-2.6.32-220.23.1.el6.x86_64
# yum install redhat-rpm-config patchutilsxmlto elfutils-libelf-devel binutils-devel python-devel hmaccalcperl-ExtUtils-Embed -y #安装所缺少的包
# cd /mnt/
# rpm -vihnewt-devel-0.52.11-3.el6.x86_64.rpm #安装编译内核时所需要的包
slang-devel-2.2.1-1.el6.x86_64.rpmasciidoc-8.4.5-4.1.el6.noarch.rpm
warning: newt-devel-0.52.11-3.el6.x86_64.rpm: Header V3 RSA/SHA1Signature, key ID c105b9de: NOKEY
Preparing... ###########################################
1:slang-devel ########################################### [ 33%]
2:newt-devel ###########################################[ 67%]
3:asciidoc ###########################################
#cd -
# rpmbuild -bp kernel.spec
如果出现这种情况
则需:
# yum provides */rngd #上面的图片提示,输入rngd -r /dev/urandom,查找命令所在的安装包
Loaded plugins: product-id, subscription-manager
This system is not registered to Red Hat SubscriptionManagement. You can use subscription-manager to register.
rng-tools-2-13.el6_2.x86_64 : Random number generator relatedutilities
Repo : rhel6.5
Matched from:
Filename :/etc/sysconfig/rngd
Filename : /sbin/rngd
Filename :/etc/rc.d/init.d/rngd
# yum install rng-tools-2-13.el6_2.x86_64 -y #安装
# rngd -r /dev/urandom #输入命令
#查看,运行通过
# cd /mnt/
# ls
asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm
kernel-2.6.32-220.23.1.el6.src.rpmslang-devel-2.2.1-1.el6.x86_64.rpm
Lvs-fullnat-synproxy.tar.gz
# tar zxf Lvs-fullnat-synproxy.tar.gz #解压
# ls
asciidoc-8.4.5-4.1.el6.noarch.rpm Lvs-fullnat-synproxy.tar.gz
kernel-2.6.32-220.23.1.el6.src.rpmnewt-devel-0.52.11-3.el6.x86_64.rpm
lvs-fullnat-synproxy slang-devel-2.2.1-1.el6.x86_64.rpm
# cd lvs-fullnat-synproxy/ #进入解压之后的包
# ls #查看
lvs-2.6.32-220.23.1.el6.patch README
lvs-tools.tar.gz toa-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/
# cp/mnt/lvs-fullnat-synproxy/lvs-2.6.32-220.23.1.el6.patch . #将刚查看的包移动到当前
# patch-p1<lvs-2.6.32-220.23.1.el6.patch #打lvs的补丁
# vimMakefile #进入,添加版本号,作为区别
4 EXTRAVERSION =-220.23.1.el6
# make
# makemodules_install #安装内核模块
# makeinstall#安装
#在kernel一行中,添加“nohz=off ”(如果不关闭nohz,大压力下CPU0可能会消耗过高,压力不均匀)
# vim/boot/grub/grub.conf#进入引导文件
10 default=0
16 kernel /vmlinuz-2.6.32-220.23.1.el6 roroot=/dev/mapper/VolGroup-lv_ rootnomodeset rd_NO_LUKS.UTF-8 rd_NO_MD rd_LVM_LV=VolGroup/lv_sw ap SYSFONT=latarcyrheb-sun16crashkernel=auto rd_LVM_LV=VolGroup/lv_root KE YBOARDTYPE=pc KEYTABLE=usrd_NO_DM nohz=off rhgb quiet # reboot #重启
# uname -r #查看版本号,编译成功
2.6.32-220.23.1.el6
B)安装keepalived和ipvsadm
# ipvsadm -l #查看
IP Virtual Server version 1.2.1 (size=4194304)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port ForwardWeight ActiveConn InActConn
# ipvsadm --help | grep fullnat #查看,fullnat模块并没有
# yum remove ipvsadm -y #卸载,重新安装
# cd /mnt/
# ls
asciidoc-8.4.5-4.1.el6.noarch.rpm Lvs-fullnat-synproxy.tar.gz
newt-devel-0.52.11-3.el6.x86_64.rpmlvs-fullnat-synproxy
kernel-2.6.32-220.23.1.el6.src.rpmslang-devel-2.2.1-1.el6.x86_64.rpm
# cd lvs-fullnat-synproxy/
# ls
lvs-2.6.32-220.23.1.el6.patch README
lvs-tools.tar.gz toa-2.6.32-220.23.1.el6.patch
# tar zxf lvs-tools.tar.gz#解压
# ls
lvs-2.6.32-220.23.1.el6.patch README tools
lvs-tools.tar.gz toa-2.6.32-220.23.1.el6.patch
# cd tools/
# ls
ipvsadmkeepalivedquagga rpm
# cd keepalived/ #切换目录
# ll -d /lib/modules/`uname -r`/build #查看
lrwxrwxrwx 1 root root 80 Oct 20 12:23/lib/modules/2.6.32-220.23.1.el6/build ->/root/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64
# ./configure--with-kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #配置,生成Makfile
如有下面报错:
则需:
# yum install -y openssl-devel
# ./configure--with-kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #重新配置
如下报错:
则需:
# yum install popt-devel -y
# ./configure --with-
kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #重新配置
结果:
# make #编译
# make install #安装
# cd ..
# cd ipvsadm/
# make #编译
# make install #安装ipvsadm
C)测试
# ipvsadm --help | grep fullnat#查看,内核添加fullnat模块成功
--fullnat -b fullnat mode
# vim /boot/grub/grub.conf #将引导文件里的default该回原来的数值
10 default=2
页:
[1]