主機環境 redhat6.5 64位python
實驗環境 ip 172.25.29.6linux
安裝包 asciidoc-8.4.5-4.1.el6.noarch.rpm vim
Lvs-fullnat-synproxy.tar.gzapp
kernel-2.6.32-220.23.1.el6.src.rpm dom
newt-devel-0.52.11-3.el6.x86_64.rpm ide
slang-devel-2.2.1-1.el6.x86_64.rpm測試
防火牆狀態:關閉
ui
從新編譯內核以前,要保證根分區要有20G的內存。spa
若是沒有足夠的空間就添加一塊20G的虛擬磁盤orm
1.給根分區分用lvm分20G的空間(若是有足夠的空間,就不用作拉伸了)
[root@server6 ~]# 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
[root@server6 ~]# pvcreate /dev/vdc #用pv分紅物理塊
Physical volume"/dev/vdc" successfully created
[root@server6 ~]# pvs #查看,pv成功
PV VG Fmt Attr PSize PFree
/dev/vda2 VolGroup lvm2 a-- 8.51g 0
/dev/vdc lvm2 a-- 20.00g 20.00g
[root@server6 ~]# vgs #查看
VG #PV #LV #SN Attr VSize VFree
VolGroup 1 2 0 wz--n- 8.51g 0
[root@server6 ~]# vgextend VolGroup /dev/vdc #擴展VolGroup組
Volume group"VolGroup" successfully extended
[root@server6 ~]# vgs #查看
VG #PV #LV #SN Attr VSize VFree
VolGroup 2 2 0 wz--n- 28.50g 20.00g
[root@server6 ~]# lvextend -L 20G /dev/VolGroup/lv_root #擴展lv
Extending logicalvolume lv_root to 20.00 GiB
Logical volume lv_rootsuccessfully resized
[root@server6 ~]# df -lh #查看,根分區7.5G
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 7.5G 1.5G 5.7G 21% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/vda1 485M 55M 405M 12% /boot
[root@server6 ~]# 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.
[root@server6 ~]# df -lh #查看,根分區20G
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 20G 1.5G 18G 8% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/vda1 485M 55M 405M 12% /boot
2. 從新編譯內核,將fallnat模塊添加到在內核及測試
A)從新編譯內核
[root@server6 mnt]# ls
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
lvs-fullnat-synproxy slang-devel-2.2.1-1.el6.x86_64.rpm
[root@server6 mnt]# rpm -vih kernel-2.6.32-220.23.1.el6.src.rpm #安裝內核包
[root@server6 mnt]# yum install rpm-build -y #安裝rpmbuild
[root@server6 mnt]# cd ~/rpmbuild/
[root@server6 rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@server6 rpmbuild]# cd SPECS/
[root@server6 SPECS]# ls
kernel.spec
[root@server6 SPECS]# 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
[root@server6 SPECS]# yum install redhat-rpm-config patchutilsxmlto elfutils-libelf-devel binutils-devel python-devel hmaccalcperl-ExtUtils-Embed -y #安裝所缺乏的包
[root@server6 SPECS]# cd /mnt/
[root@server6 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... ########################################### [100%]
1:slang-devel ########################################### [ 33%]
2:newt-devel ###########################################[ 67%]
3:asciidoc ########################################### [100%]
[root@server6 mnt]#cd -
[root@server6 SPECS]# rpmbuild -bp kernel.spec
若是出現這種狀況
[root@server6 ~]# 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
[root@server6 ~]# yum install rng-tools-2-13.el6_2.x86_64 -y #安裝
[root@server6 ~]# rngd -r /dev/urandom #輸入命令
#查看,運行經過
[root@server6 SPECS]# cd /mnt/
[root@server6 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.rpm slang-devel-2.2.1-1.el6.x86_64.rpm
Lvs-fullnat-synproxy.tar.gz
[root@server6 mnt]# tar zxf Lvs-fullnat-synproxy.tar.gz #解壓
[root@server6 mnt]# ls
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
lvs-fullnat-synproxy slang-devel-2.2.1-1.el6.x86_64.rpm
[root@server6 mnt]# cd lvs-fullnat-synproxy/ #進入解壓以後的包
[root@server6 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
[root@server6 lvs-fullnat-synproxy]# cd~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# cp/mnt/lvs-fullnat-synproxy/lvs-2.6.32-220.23.1.el6.patch . #將剛查看的包移動到當前
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# patch-p1<lvs-2.6.32-220.23.1.el6.patch #打lvs的補丁
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# vimMakefile #進入,添加版本號,做爲區別
4 EXTRAVERSION =-220.23.1.el6
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# make
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# makemodules_install #安裝內核模塊
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# makeinstall #安裝
#在kernel一行中,添加「nohz=off 」(若是不關閉nohz,大壓力下CPU0可能會消耗太高,壓力不均勻)
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# 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
[root@server6 linux-2.6.32-220.23.1.el6.x86_64]# reboot #重啓
[root@server6 ~]# uname -r #查看版本號,編譯成功
2.6.32-220.23.1.el6
B)安裝keepalived和ipvsadm
[root@server6 ~]# ipvsadm -l #查看
IP Virtual Server version 1.2.1 (size=4194304)
Prot LocalAddress:Port Scheduler Flags
->RemoteAddress:Port ForwardWeight ActiveConn InActConn
[root@server6 ipvsadm]# ipvsadm --help | grep fullnat #查看,fullnat模塊並無
[root@server6 ~]# yum remove ipvsadm -y #卸載,從新安裝
[root@server6 ~]# cd /mnt/
[root@server6 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.rpm lvs-fullnat-synproxy
kernel-2.6.32-220.23.1.el6.src.rpm slang-devel-2.2.1-1.el6.x86_64.rpm
[root@server6 mnt]# cd lvs-fullnat-synproxy/
[root@server6 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
[root@server6 lvs-fullnat-synproxy]# tar zxf lvs-tools.tar.gz #解壓
[root@server6 lvs-fullnat-synproxy]# 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
[root@server6 lvs-fullnat-synproxy]# cd tools/
[root@server6 tools]# ls
ipvsadm keepalived quagga rpm
[root@server6 tools]# cd keepalived/ #切換目錄
[root@server6 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
[root@server6 keepalived]# ./configure--with-kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #配置,生成Makfile
若有下面報錯:
則需:
[root@server6 keepalived]# yum install -y openssl-devel
[root@server6 keepalived]# ./configure--with-kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #從新配置
以下報錯:
則需:
[root@server6 keepalived]# yum install popt-devel -y
[root@server6 keepalived]# ./configure --with-
kernel-dir=/lib/modules/2.6.32-220.23.1.el6/build #從新配置
結果:
[root@server6 keepalived]# make #編譯
[root@server6 keepalived]# make install #安裝
[root@server6 keepalived]# cd ..
[root@server6 tools]# cd ipvsadm/
[root@server6 ipvsadm]# make #編譯
[root@server6 ipvsadm]# make install #安裝ipvsadm
C)測試
[root@server6 ipvsadm]# ipvsadm --help | grep fullnat #查看,內核添加fullnat模塊成功
--fullnat -b fullnat mode
[root@server6 ipvsadm]# vim /boot/grub/grub.conf #將引導文件裏的default該回原來的數值
10 default=2