LVS-Fullnat之編譯內核 將fullnat模塊添加到內核

主機環境   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

若是出現這種狀況

wKiom1gQcvvA4j21AADROE0_Egg871.png則需:

[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                           #輸入命令

#查看,運行經過

wKiom1gQc6aBVvetAAEBfZttGrE900.png

[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

若有下面報錯:

wKiom1gQcv3wGv7YAAArs1k4-t0432.png

則需:

[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                                             #從新配置

以下報錯:

wKioL1gQcv3j_QH_AAARuGkxfrk308.png

則需:

[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              #從新配置

結果:

wKiom1gQcv2wEAL9AABzU3eoBzI798.png

[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

相關文章
相關標籤/搜索