LVS - FULLNAT内核编译方法

Fullnat其实也就是nat类似原理,只是需要在调度器DR上进行进行源目地址转发,首先介绍一下,CIP:客户端请求ip,DIP:调度器端的ip,RIP:提供服务的真实主机的ip,由于DIP和RIP之间可以经过路由转换,所以后端提供服务的real-server可以进行无限扩展,再通过调度器对后端服务的调用,可以完美解决负载均衡,但是存在单点故障,因此还需要结合类似:heartbeat,keepalived,pacemaker,以及红帽rhcs套件来解决单点故障。这样系统就非常健壮了,言归正传,当客户端请求报文到达源目IP分别为CIP和VIP。达到调度器DR后,经过ipvs通过算法调度后台的真机real-server,但是由于DIP和RIP并不在同一个网段,所以IPVS会将请求的报文源目IP分别改为DIP和RIP,RS收到报文后,就会将相应报文发给DR,DR通过内部追踪nat表后,在将响应的报文源目IP分别改为VIP和CIP,于是响应的报文就发给了客户端client,这种对源目IP均做修改的LVS类型就称为FULNAT模式。

首先下载阿里的修改过后的内核:

准备材料:asciidoc-8.4.5-4.1.el6.noarch.rpm

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

Lvs-fullnat-synproxy.tar.gz

#yum provides */rngd      #查找rgnd这个命令的安装包

#yum install -y rng-tools-2-13.el6_2.x86_64     安装查找的rgn命令的

#rngd  -r  /dev/urandom     :加快对内核的安装

进行磁盘拉伸 +20G

#pvcreate /dev/vdb

#vgextend VolGroup /dev/vdb

#lvextend -L +27G   /dev/VolGroup/lv_root

#resize2fs /dev/VolGroup/lv_root

##进行正式修改内核;

# rpm  -ivh  kernel-2.6.32-220.23.1.el6.src.rpm    #安装内核安装包

#yum  install -y  rpm-build        #安装rpm-build工具

#cd   /RPM/rpmbuild/SPECS/

#rpmbuild  -bp  kerbel.spec       #rpmbuild编译kernel.spec文件

#然后解决各种依赖性,注意倒数第二个改为perl-ExtUtils-Embed

#

#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

#在另外一个客户端登陆执行:#rngd -r /dev/urandom  速度会马上安装好。

#进入kernel-2.6.32.-220.23.1.el6目录里;

#lftp 获得 Lvs-fullnat-synproxy.tar.gz文件   :解压该文件,获得内核的补丁

#tar  zxf   Lvs-fullnat-synproxy.tar.gz

#cd   lvs-fullnat-synproxy

#cp   lvs-2.6.32--220.23.1.el6.patch   ../linux-2.6.32-220.23.1.el6.x86_64/

#yum  install  -y patch

#cd  ../linux-2.6.32-220.23.1.el6.x86_64/

#patch  -p1 < lvs-2.6.32--220.23.1.el6.patch    #打补丁打入到内核

#vim   .config

CONFIG_IP_VS_TAB_BITS=22   修改为22位

#vim    Makefile

:添加延伸延伸版本号  EXTRAVERTION = -220.23.1.el6

#make   -j2       :编译内核,

#make  modules_install     :安装模块

#make   install              :安装内核

#vim   /etc/grub.conf        :修改启动项。

10行  default=0    ##使之重起更换内核。使用刚才修改过后的内核。

如果需要获取客户端的ip时,则也需要更改real-server的内核,对real-server的内核进行打toa补丁,动态加载toa模块,从而使得realserver可以获得客户端的ip地址

-i  :TUN模式

-b  :FULLNAT模式

-m  :NAT模式

-g   :DR模式

VS上安装ipvsadm工具,使其支持fullnat  也就是-b模式。

#安装ipvsadm工具,使得它支持fullnat模式,

#cd   rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/lvs-fullnat-synproxy/

#cp   lvs-tools.tar.gz   ~

#tar  zxf lvs-tools.tar.gz

#keepalived的编译。

#cd   keepalived/

#yum  install  -y  openssl-devel

#yum  install  -y  popt-devel     :解决安装ipvsadm的依赖性问题。

#./configure --with-kernel-dir="/lib/modules/`uname -r`/build"

#make   --->    make install

Ipvsadm编译

#cd    ipvsadm/

#make    --> #make install

#ipvsadm  --help  :查看是否有fullnat模式支持。如果有支持fullnat模式的,这说明从新安装的ipvsadm可用。

注意:必须要先编译安装keepalived过后,才能安装ipvsadm命令。

时间: 2024-10-15 22:07:12

LVS - FULLNAT内核编译方法的相关文章

在阿里云中编译Linux4.5.0内核 - Ubuntu内核编译教程

实验环境:Ubnuntu 64位(推荐使用14.04)+Xshell 阿里云现在提供的云服务器很好用的,用来编译内核性能也不错.本文介绍最基本的内核编译方法,为了方便,所有操作均在root用户下进行. 如果不是root用户可以使用su命令切换到root用户. 注:使用xshell的时候最好把这一项给关闭了(工具——选项——高级) 一.环境准备 1.准备linux源码和补丁,可以在官网(http://www.kernel.org)上下载,这里我们下载4.5版本. 不过阿里提供了http://mir

Linux内核编译及系统裁剪之一

Linux内核编译方法详解及系统裁剪之一详解 我们的内核是由两部分组成的: 1,内核核心 核心文件的路径是/boot/vmlinuz-内核版本号 如下图-> 2,内核模块(ko:kernel object,内核对象) ko文件的路径是/lib/modules/内核版本号/下的所有文件 如下图-> 我们的内核有两种设计风格: 1,单内核设计风格 Linux的内核就属于是单内核设计风格的,不过Linux的单内核设计风格采用了微内核设计风格的模块化设计思想,所以使得我们的Linux内核的核心可以被设

linux内核编译与开发

一.Linux内核简介linux kernel map: linux 系统体系结构: linux kernel体系结构: arm有7种工作模式,x86也实现了4个不同级别RING0-RING3,RING0级别最高, 这样linux用户代码运行在RING3下,内核运行在RING0,这样系统本身就得到了 充分的保护 用户空间(用户模式)转到内核空间(系统模式)方法: ·系统调用 ·硬件中断 linux kernel 体系结构: 虚拟文件系统VFS: VFS(虚拟文件系统)隐藏各种文件系统的具体细节,

内核编译安装

以下讲的是内核基础.内核管理.安装编译内核.安装程序anaconda.kickstart. 1.内核基础 对于内核,现在有单内核和微内核设计,现在的内核多采用单内核和高度模块化设计,对于模块化设计,可以进行动态装卸载. 内核一般由三部分组成:内核核心文件.内核对象.ramdisk.内核核心文件,一般为bzImage,经过压缩处理的镜像文件,通常内核核心文件保存在/boot目录下,名称为vmlinuz-VERSION-release.内核对象,即内核额外的功能模块,该类文件放置于/lib/modu

Linux入门之CentOS7内核编译三部曲(1)

Linux入门之CentOS7内核编译三部曲(1) 我们知道,一个Linux系统的主要组成是由liunx内核核心和一些支持模块组合而成的.但是在某些场合中,需要某项功能,而当前内核的核心或者模块不支持此功能,那么就需要对内核进行一个升级或者重新编译内核添加相应的功能,以此提供了对此功能的支持. 编译前的准备 认识kernel 所为kernel,就是一种操作系统的核心,当然也是一个文件,而这种核心提供了对一些硬件的支持,一般来说其中包含了一些对常见硬件核心驱动的核心代码.启动系统时会通过加载MBR

Linux入门之CentOS7内核编译三部曲(2)

Linux入门之CentOS7内核编译三部曲(2) 在linux系统中,编译完了内核,得到了所需的功能,并不能表示就已经能完美完成我们的所需.因为内核只是做一个核心的硬件及核心代码的支持,而注意的模块支持任然是对应版本的内核模块文件.这些文件决定着平时能否使用哪些功能.这次不会介绍如果添加给上次编译的新内核模块功能,主要介绍模块的功能和作用以及其加载和卸载. 查看当前系统以及加载的内核模块命令:lsmod  modinfo lsmod 命令 lsmod - program to show the

Linux内核编译

一.背景介绍 编译内核虽然在实际工作中用到的几率不大,但作为一个Linux运维人员,还是要对编译内核有初步的了解,以下就来介绍下编译内核的方法 二.操作步骤 1.检查开发环境 以CentOS6为例,确认Server Platform Development和Development tools这两个包组已安装. yum grouplist | grep "Development" 2.下载内核源码 此处以3.10.105版本为例,下载到root用户的家目录下并解压到指定目录,同时创建一个

Linux 2.6、4.3内核编译过程感受与总结

之前编译过2.4.10版本的内核,很好编译,中间曾经漏下了SCSI low-level drivers下的BusLogic SCSI support选项导致没法启动系统,后来打开该选项后就行了,随手关闭一些没用的选项后编译速度非常快,30秒之内完成编译.当初以为内核编译也不过如此,直到这四天开始编译更新的内核才让我吃了大亏. 我起初的想法是编译一个极其简洁的内核,去掉网络.USB.光驱.等等所有没必要的东西,只留下核心功能,越精简越好,于是在1月21号我就下载了linux-2.6.34.tar.

Linux入门之CentOS7内核编译三部曲(3)

Linux入门之CentOS7内核编译三部曲(3) 在上篇通过一些简单的例子和使用介绍了linux系统中模块的功能和作用.那么每次系统启动完成之后,又是怎么去自动加载所需要的模块,那么回过头来看还是要连续模块加载具体在系统启动中的哪个阶段开始触发的.同时模块的加载是依据内核本身的预定程序,还是linux文件系统中的相应配置文件呢? 默认安装的模块文件路径:/lib/modules/$(uname -r)/kernel,如: #查看内核模块列表目录 [[email protected] ~]# l