2_6内核上一步一步配置LVS(Linux Virtual Server)

2_6内核上一步一步配置LVS(Linux Virtual Server)
2_6内核上一步一步配置LVS(Linux Virtual Server)

2.6内核上一步一步配置LVS(Linux Virtual Server) 收藏

Linux Virtual Server(LVS)的配置方法,网上虽然是能搜到很多,但无外外乎是那几个

版本。这些版本大都只是写了如何这样配置,而没有为什么这样配置,还有很多基础性的

东西是默认读者已知了,就没有讲明白。

最近成功在学校机房配置了一台调度器(Director)、两台服务器(Real Server)的集群

服务器,用一台客户机来访问。我的配置有比较高的可实现性,所有计算机都在同一个局

域网内,不用配置网关。如果这样的LVS配置成功了,之后配置更有有实用性的集群也不难了。

本文参考了LVS中文站点上的《LVS在Fedora Core5上的配置指南(以Linux、FreeB SD、Solaris系统为RealServer)》(https://www.360docs.net/doc/cd4836765.html,/node/272),原文是一篇HOW TO性质的文章,并没有对一些原理进行阐述。本文在此基础上对一些

细节的部分进行了说明(甚至是很基础的地方,这些地方对于理解整个LVS系统有着重要的作用),并进行了一些改动,使得更具可实现性(所有机器都在同一网段),文中亦会

说明要如何将其改为可真正派上用场的集群服务。

我假设你在此之前已经读过了LVS的基本介绍,知道其用途和基本原理。如果你还没有看过,请看一下LVS的官方站点(https://www.360docs.net/doc/cd4836765.html,,http://zh.linuxvi https://www.360docs.net/doc/cd4836765.html,)。本文所述采用的是通过直接路由实现虚拟服务器(VS/DR)的方法,

这里先引述官方站点对此的介绍,并标出重点、加上注释。

引用:

跟VS/TUN方法相同,VS/DR利用大多数Internet服务的非对称特点,负载调度器中只负责调度请求,而服务器直接将响应返回给客户,可以极大地提高整个集群系统的吞吐量。该方法与IBM的NetDispatcher产品中使用的方法类似,但IBM的NetDispatcher是非常昂贵的商品化产品,我们也

不知道它内部所使用的机制,其中有些是IBM的专利。

VS/DR的体系结构如图3.6所示:调度器和服务器组都必须在物理上有一个网卡通过不分断的局域网相连,如通过交换机或者高速的HUB相连。VIP地址为调度器和服务器组共享,调度器配置的VIP地址是

对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的,只是用于处理目标地址为VIP的网络请求。(请看注释1)

图3.6:VS/DR的体系结构

VS/DR的工作流程如图3.7所示:它的连接调度和管理与VS/NAT和VS/TUN中的一样,它的报文转发方法又有不同,将报文直接路由给目标服务器。在VS/DR中,调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧在与服务器组的局域网上发送。(请看注释2)因为数据帧的MAC地址是选出的服务器,所以服务器肯定可以收到这个数据帧,从中可以获得该IP报文。当服务器发现报文的目标地址VIP是在本地的网络设备上,服务器处理这个报文,然后根据路由表将响应报文直接返回给客户。

图3.7:VS/DR的工作流程

在VS/DR中,请求报文的目标地址为VIP,响应报文的源地址也为VIP,所以响应报文不需要作任何修改,可以直接返回给客户,客户认为得到正常的服务,而不会知道是哪一台服务器处理的。

VS/DR负载调度器也只处于从客户到服务器的半连接中,按照半连接的TCP有限状态机进行状态迁移。

注释1:VIP地址为调度器和服务器(RealServer)把共享,那会不会引起IP冲突?答案是:不会。正因为后面所说的,“调度器配置的VIP地址是对外可见的,用于接收虚拟服务的请求报文;所有的服务器把VIP地址配置在各自的Non-ARP网络设备上,它对外面是不可见的”。在调度器上,VIP与其局域网内IP对外都是可见的;在服务器上,对外可见的是其在局域网上的IP(调度器调度的时候使用的IP),而在服务器上,VIP的性质就像是平常我们所熟知的127.0.0.1的性质一样,它是一个loopback device,他只在网络层之上可见(包括网络层),这样的loopback device用来模拟网络适配器的行为。就算没有装网卡,127.0.0.1与VIP的这样IP都是可用的。

那为什么要在服务器上还放上一个VIP呢?

因为当只修改了MAC地址的链路层帧发到服务器的链路层时(详情请见注释2),要想再向上提交到应用层去让HTTP等服务器程序处理,必须再经过网络层、传输层等,而要通过这些层是要经过目标IP的检测的。

就像你要去参加一个婚礼,到门口,接待人员问你要参加谁的婚礼,人家这里明明举行的是李湘跟王老五的婚礼,你说你要参加谢霆锋跟张柏芝的婚礼,接待人员一定是不让你进去的。

那我就是又要说我要参加谢霆锋跟张柏芝的婚礼,以要进入李湘跟王老五的婚礼现场,怎么办?那就在李湘跟王老五的婚礼现场里安排一个自己人,你到时候对他说:“我要参加谢霆锋跟张柏芝的婚礼”,他会意地笑一声,就会帮你在李湘跟王老五的婚礼现场安排座位,让你在里面享受各种服务。

服务器里的VIP就有这个自己人的性质,他对外不可见,当请求包到达网络层以上的部分里,就可以看到VIP,从而一路上去,到达应用层,享用HTTP等服务。

原理如图(IPVS有没有到网络层?)

注释2:在这里可能有人会产生疑问,修改MAC地址就能让请求包发往Real Server上吗,不用改目标IP地址?答案是:是的。因为交换机是一个链路层的设备,链路层的传送单位是帧,他可不管网络层的包里放的是什么IP地址(网络层的ipv4包已经被封装在帧里)。当Direcotr把存有客户机的请求包的那帧的MAC地址改成某台Real Server的之后,就发出去,到交换机之后,交换机查找MAC地址与端口的对应表(端口MAC地址对应拥有些MAC地址的计算机),将这一帧发往与帧上MAC地址对应的端口,之后就发到计算机的链路层,如果MAC地址与网卡上的匹配,再向上层发送,直至应用层。

现在俺们来一步一步地在局域网内配置LVS。

四台计算机按如上方式插在交换机上,分别按如下的方式配置四台计算机。

Client

代码:

ifconfig eth0 192.168.11.1 netmask 255.255.255.0 broadcast 192.168.11.255

当重启时,上面的配置将会失效。如果要长期保留这个配置,请更改/etc/syscon?g/net work-scripts/ifcfg-eth0文件。具体步骤请参考DIRECTOR的配置。

Director

首先安装IPVSADM,就是LVS的管理工具。REDHAT的用户可以到https://www.360docs.net/doc/cd4836765.html, 上搜索ipvsadm,找到和自己系统对应的安装包,在安装文件夹里执行如下命令:

代码:

rpm ivh *.rpm

*.rpm代表rpm安装包的文件名。

当IPVSADM安装完成后,就可以配置DIRECTOR了,使用如下命令:

代码:

ipvsadm –C

ipvsadm -A -t 192.168.11.200:80 -s wlc

ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.21 -g

ipvsadm -a -t 192.168.11.200:80 -r 192.168.11.22 -g

ipvsadm -Ln

每一行的命令信息可以查看IPVSADM的MAN。如果是要配置流媒体的服务器的话,应该打开UDP的包转发。

下面配置网卡:

首先新建配置文件/etc/syscon?g/network-scripts/ifcfg-eth0:0如下:

代码:

DEVICE=e th 0 : 0

ONBOOT=y e s

BOOTPROTO= s t a t i c

IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

BROADCAST= 1 9 2 . 1 6 8 . 11 . 255

上面配置的是DIRECTOR的虚拟IP。

配置文件/etc/syscon?g/network-scripts/ifcfg-eth0如下:

代码:

DEVICE=e th 0

ONBOOT=y e s

BOOTPROTO= s t a t i c

IPADDR= 1 9 2 . 1 6 8 . 11 .10

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

BROADCAST= 1 9 2 . 1 6 8 . 11 . 255

上面配置的是DIRECTOR的真实IP。

再执行下面的命令以使上面对网络的配置生效

代码:

/etc/rc.d/init.d/network restart

RS1(RealServer1)的配置

Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下

代码:

#f o r i p v s

n e t . ip v 4 . c o n f . l o . a r p i g n o r e = 1

n e t . ip v 4 . c o n f . l o . a rp announ c e = 2

n e t . ip v 4 . c o n f . a l l . a r p i g n o r e = 1

n e t . ip v 4 . c o n f . a l l . a rp announ c e = 2

n e t . ip v 4 . c o n f . d e f a u l t . r p f i l t e r = 1

#end o f i p v s

在/etc/syscon?g/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。

代码:

DEVICE=e th 0

ONBOOT=y e s

BOOTPROTO= s t a t i c

IPADDR= 1 9 2 . 1 6 8 . 11 . 21

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 0

BROADCAST= 1 9 2 . 1 6 8 . 11. 2 5 5

新建VIP 的网卡配置文件为/etc/syscon?g/network-scripts/ifcfg-lo:0。

代码:

DEVICE=l o : 0

ONBOOT=y e s

IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

再执行下面的命令以使上面对网络的配置生效

代码:

/etc/rc.d/init.d/network restart

RS2(RealServer2)的配置

Linux Realserver 配置的关键之一在于关闭 arp,这要配置/etc/sysctl.conf如下

代码:

#f o r i p v s

n e t . ip v 4 . c o n f . l o . a r p i g n o r e = 1

n e t . ip v 4 . c o n f . l o . a rp announ c e = 2

n e t . ip v 4 . c o n f . a l l . a r p i g n o r e = 1

n e t . ip v 4 . c o n f . a l l . a rp announ c e = 2

n e t . ip v 4 . c o n f . d e f a u l t . r p f i l t e r = 1

#end o f i p v s

在/etc/syscon?g/network-scripts/ifcfg-eth0 中配置 ip 地址和网关。

代码:

DEVICE=e th 0

ONBOOT=y e s

BOOTPROTO= s t a t i c

IPADDR= 1 9 2 . 1 6 8 . 11 . 22

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 0

BROADCAST= 1 9 2 . 1 6 8 . 11. 2 5 5

新建VIP 的网卡配置文件为/etc/syscon?g/network-scripts/ifcfg-lo:0。

代码:

DEVICE=l o : 0

ONBOOT=y e s

IPADDR= 1 9 2 . 1 6 8 . 11 . 2 0 0

NETMASK= 2 5 5 . 2 5 5 . 2 5 5 . 2 5 5

再执行下面的命令以使上面对网络的配置生效

代码:

/etc/rc.d/init.d/network restart

至此,一个LVS就配置好了,我们只要分别在Director,RS1,RS2的/var/www/html/文件夹下分别放入三个内容不同的名为index.htm的文件,然后在Client的浏览器中输入http://192.168.11.200,回车,不停的刷新,就会发现,有时看到的是放在RS1上的index.htm,有时看到的是RS2上的index.htm,而不会看到director上的index.h tml。因为发现198.168.11.200的80端口的http请求报文都被转发到到rs1或rs2上。

大功告成!

Linux内核修改与编译图文教程

Linux 内核修改与编译图文教程 1

1、实验目的 针对Ubuntu10.04中,通过下载新的内核版本,并且修改新版本内核中的系统调用看,然后,在其系统中编译,加载新内核。 2、任务概述 2.1 下载新内核 https://www.360docs.net/doc/cd4836765.html,/ 2.2 修改新内核系统调用 添加新的系统调用函数,用来判断输入数据的奇偶性。 2.3 进行新内核编译 通过修改新版内核后,进行加载编译。最后通过编写测试程序进行测试 3、实验步骤 3.1 准备工作 查看系统先前内核版本: (终端下)使用命令:uname -r 2

3.2 下载最新内核 我这里使用的内核版本是 3.3 解压新版内核 将新版内核复制到“/usr/src”目录下 在终端下用命令:cd /usr/src进入到该文件目录 解压内核:linux-2.6.36.tar.bz2,在终端进入cd /usr/src目录输入一下命令: bzip2 -d linux-2.6.36.tar.bz2 tar -xvf linux-2.6.36.tar 文件将解压到/usr/src/linux目录中 3

使用命令: ln -s linux-2.6.36 linux 在终端下输入一下命令: sudo apt-get install build-essential kernel-package libncurses5-dev fakeroot sudo aptitude install libqt3-headers libqt3-mt-dev libqt3-compat-headers libqt3-mt 4

实验四 linux-2.6.35内核的编译和配置

实验四 linux-2.6.35内核的编译和配置 【实验目的】 了解内核的编译过程及配置选项的内容 【实验环境】 1、 Ubuntu 10.10发行版 2、 u-boot-2010.03 3、 FS2410平台 4、 交叉编译器 arm-none-linux-gnueabi-gcc-4.3.2 【实验步骤】 实验步骤中的1-4,已经做过就不要重复了 1、 将实验代码中的rootfs.tar.bz2解压到/source 下,已经做过就不要重复了 $ tar xvf rootfs.tar.bz2 –C /source 2、 解压内核并进入内核目录 $ tar xvf linux-2.6.35.tar.bz2 $ cd linux-2.6.35 3、 修改Makefile 修改linux-2.6.35 目录下的Makefile ,找到 ARCH ?= $(SUBARCH) CROSS_COMPILE ?= 改为 ARCH ?= arm CROSS_COMPILE ?= arm-none-linux-gnueabi- 4、 配置内核 设置平台 设置编译工具

make menuconfig Kernel Features ---> [*] Use the ARM EABI to compile the kernel [*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL) 5、添加驱动文件 将实验代码2410GPIO_TEST_26/2410GPIO_TEST_drv.c拷贝到drivers/char下 6、修改对应Kconfig 修改drivers/char/Kconfig,在menu "Character devices"下面 加入如下内容: config 2410GPIO_TEST_DRV tristate "S3C2410 test drv Device Support" depends on ARCH_S3C2410 ---help--- support led test device driver on FS2410 develop board 7、修改对应Makefile 在drivers/char/Makefile 中 找到在obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o , 在其下一行添加: obj-$(CONFIG_2410GPIO_TEST_DRV) += 2410GPIO_TEST_drv.o 8、静态编译内核 ?配置内核时按“空格”选择,配置完成后保存退出 $ make menuconfig Device Drivers ---> Character devices ---> <*> S3C2410 test drv Device Support ?重新编译内核并把内核拷贝到tftpboot下 $ make zImage

内核参数的修改方法

Linux内核参数修改方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。但是,当系统重新启动后,原来设置的参数值就会丢失,而系统每次启动时都会自动去/etc/sysctl.conf文件中读取内核参数,因此将内核的参数配置写入这个文件中,是一个比较好的选择。 首先打开/etc/sysctl.conf文件,查看如下两行的设置值,这里是: kernel.shmall = 2097152 kernel.shmmax = 4294967295 如果系统默认的配置比这里给出的值大,就不要修改原有配置。同时在/etc/sysctl.conf文件最后,添加以下内容: fs.file-max = 6553600 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default = 4194304 net.core.rmem_max = 4194304 net.core.wmem_default = 262144 net.core.wmem_max = 262144 这里的“fs.file-max = 6553600”其实是由“fs.file-max = 512 * PROCESSES”得到的,我们指定PROCESSES的值为12800,即为“fs.file-max =512 *12800”。 sysctl.conf文件修改完毕后,接着执行“sysctl -p”使设置生效。 [root@localhost ~]# sysctl -p 常用的内核参数的含义如下。 kernel.shmmax:表示单个共享内存段的最大值,以字节为单位,此值一般为物理内存的一半,不过大一点也没关系,这里设定的为4GB,即 “4294967295/1024/1024/1024=4G”。 kernel.shmmni:表示单个共享内存段的最小值,一般为4kB,即4096bit. kernel.shmall:表示可用共享内存的总量,单位是页,在32位系统上一页等于4kB,也就是4096字节。 fs.file-max:表示文件句柄的最大数量。文件句柄表示在Linux系统中可以打开的文件数量。 ip_local_port_range:表示端口的范围,为指定的内容。 kernel.sem:表示设置的信号量,这4个参数内容大小固定。 net.core.rmem_default:表示接收套接字缓冲区大小的缺省值(以字节为单位)。 net.core.rmem_max :表示接收套接字缓冲区大小的最大值(以字节为单位) net.core.wmem_default:表示发送套接字缓冲区大小的缺省值(以字节为单位)。 net.core.wmem_max:表示发送套接字缓冲区大小的最大值(以字节为单位)。

linux内核的网络配置

文章来源 https://www.360docs.net/doc/cd4836765.html,/p/2088592067 第9节, Networking support 关于网络支持 上图 讲解; RF switch subsystem support 这个一般是要的,因为有些无线和蓝牙放在一张卡上 选m,wireless(无线)里面的一些选项随之会自动选m,上图 注意: cfg80211 wireless extensions compatibility 这个兼容选项要选择,3.7默认是没有选择

如果没有选择,iwconfig会报告没有扩展 Bluetooth subsystem support 蓝牙,可以自己选择,如果有m就行 还有子选项自己看下 如果还有红外线,无线电,对应选择,这个设备应该是很少networking option最上面的,全局网络选项,上图

Packet socket和Unix domain sockets 备必,而且不能成模块,不然udev会报一段信息给你 Transformation user configuration interface 选m,其实也很少用,像ipsec,下面的ipsec也可以选成模块 TCP/IP networking 要的,要的,子选项大部分不用,你也可以选上 IP: multicasting 多播 IP: advanced router 高级路由 你需要选上 IP: TCP syncookie support ~~sync flooding,同时还必须。。。个人没什么意义Large Receive Offload提高网络的东西,这个Y,如果你觉得现在不用,先m TCP: advanced congestion control这个你也可以Y The IPv6 protocol 很多要用到,虽然在兲现在没用,像systemd就要了 Security Marking和Network packet filtering framework (Netfilter) 个人没什么意义,你可以试下

操作系统实验1(编译内核)实验指导书

实验一虚拟机平台下的Linux内核编译 步骤一、实验准备:将windows下的Linux-2.4.32内核复制到虚拟机中。 一般有三种方法可以实现:虚拟磁盘、文件共享、网络设置。 下面介绍的是虚拟磁盘的方法: 我们已经将Linux-2.4.32内核源代码的压缩文件放入虚拟磁盘,并在FTP上共享。 1.请从FTP服务器上将实验指导书以及虚拟磁盘拷贝到E盘根目录下。 2. windows平台下启动虚拟机VMware, VMWare中安装虚拟硬盘: 1)安装前建议先把内存调大一些,这样后面编译的速度会快一些。(Memory,调到512M) 2)点击Add 3)点击Next

上述步骤完成后点击Finish 。 观察发现:虚拟机中将出现两个磁盘,一个是原有的磁盘,另一个是虚拟磁盘,相当于对本机外接了一个磁盘。(请将设置完成后的虚拟机中出现两个磁盘的界面截图,一个是6G ,另一个106M )。

4.启动Linux操作系统 在启动过程中可以见到当前只有一个可选择内核,内核版本是Linux2.4.20。我们本次实验的目的是在虚拟机下重新编译一个新的内核,内核版本是Linux2.4.32.完成本实验后,重启虚拟机将出现两个可选择内核。 5.将虚拟磁盘安装到/mnt/mydisk目录下.(mount命令),如图: 1)先用fdisk –l命令查看虚拟磁盘是否“连接”成功。记下虚拟磁盘名称(/dev/sdb)。 2)进入到mnt目录下创建mydisk目录,该目录作为访问虚拟磁盘的入口,此时该目录为空。 3)返回根目录root,并安装虚拟磁盘:mount /dev/sdb /mnt/mydisk

linux 内核参数修改

linux 内核参数修改 配置 Linux 内核参数(2种方法),修改后不用重启动更新: /sbin/sysctl -p 第一种:打开/etc/sysctl.conf 复制如下内容 kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=262144 net.core.wmem_max=262144 第二种:打开终端 cat >> /etc/sysctl.conf< kernel.shmall = 2097152 kernel.shmmax = 2147483648 kernel.shmmni = 4096 kernel.sem = 250 32000 100 128 fs.file-max = 65536 net.ipv4.ip_local_port_range = 1024 65000 net.core.rmem_default=262144 net.core.wmem_default=262144 net.core.rmem_max=262144 net.core.wmem_max=262144 EOF 这里,对每个参数值做个简要的解释和说明。 (1)shmmax:该参数定义了共享内存段的最大尺寸(以字节为单位)。缺省为32M,对于oracle来说,该缺省值太低了,通常将其设置为2G。(2)shmmni:这个内核参数用于设置系统范围内共享内存段的最大数量。该参数的默认值是 4096 。通常不需要更改。 (3)shmall:该参数表示系统一次可以使用的共享内存总量(以页为单位)。缺省值就是2097152,通常不需要修改。(共享内存段的数量,以页为主,每个页是4K) (4)sem:该参数表示设置的信号量。一般大于maxproc的一点就行了。 (5)file-max:该参数表示文件句柄的最大数量。文件句柄设置表示在linux系统中可以打开的文件数量。 修改好内核以后,执行下面的命令使新的配置生效。 [root @linux1 /root]# /sbin/sysctl -p 以 root 用户身份运行以下命令来验证您的设置: /sbin/sysctl -a | grep shm /sbin/sysctl -a | grep sem /sbin/sysctl -a | grep file-max /sbin/sysctl -a | grep ip_local_port_range 例如: # /sbin/sysctl -a | grep shm kernel.shmmni = 4096 kernel.shmall = 2097152 kernel.shmmax = 2147483648

Websphere for Linux集群安装和配置

前言 目前天安保险的WAS环境中有5台服务器,每台服务器配成一个node,每个node上配置了2个application server,组成了一个ND的环境。前台有一台F5做负载均衡,后面连接了1套oracle RAC的数据库。但5个node之间没有做成集群。为了保证Websphere系统高可用性,提高系统性能和负载均衡,考虑配置成集群,下面说明创建、配置集群的整个过程与注意事项。 1. 集群系统架构 操作系统:Linux version 2.6.18-8.el5 Websphere版本:WAS6.1ND 根据天安的环境,可使用如下拓扑: 其中cisapp1~cisapp5表示5台WebSphere,cisCluster表示5台做成一个cluster,dmgr一般是5台中的一台。

2. 创建集群(含session复制) (截图为我本机测试截图,只是示意图,与天安保险的节点名和集群名不符) 在DMGR控制台中,选择集群,然后新建。 注意:先创建一个空的集群,然后我们再向该集群中添加成员即可。 这里还要注意勾选“配置HTTP会话内存到内存复制”,这样就能使session 在集群内共享,比如用户登录,加入被集群分配给node1来处理,用户的登录信息就会被保存在session中,如果此时node1宕机了,用户就会被分配到其他节点来处理而不会要求重新登录。 如果在创建集群时没有勾选此选项,也可按如下方式操作: 配置会话复制 服务器 --> 应用程序服务器 --> 选择集群成员 --> 容器设置:会话管理--> 其他属性:分布式环境设置 --> 确认分布式会话选择的是内存到内存复制,其他属性:定制调整参数 --> 调整级别: 低(故障转移优化) 写频率 servlet服务结束

如何安装Linux内核源代码

如何获取Linux内核源代码 下载Linux内核当然要去官方网站了,网站提供了两种文件下载,一种是完整的Linux 内核,另一种是内核增量补丁,它们都是tar归档压缩包。除非你有特别的原因需要使用旧版本的Linux内核,否则你应该总是升级到最新版本。 使用Git 由Linus领头的内核开发队伍从几年前就开始使用Git版本控制系统管理Linux内核了(参考阅读:什么是Git?),而Git项目本身也是由Linus创建的,它和传统的CVS不一样,Git是分布式的,因此它的用法和工作流程很多开发人员可能会感到很陌生,但我强烈建议使用Git下载和管理Linux内核源代码。 你可以使用下面的Git命令获取Linus内核代码树的最新“推送”版本: $ git clone git://https://www.360docs.net/doc/cd4836765.html,/pub/scm/linux/kernel/git/torvalds/linux-2.6.git 然后使用下面的命令将你的代码树与Linus的代码树最新状态同步: $ git pull 安装内核源代码 内核包有GNU zip(gzip)和bzip2格式。Bzip2是默认和首选格式,因为它的压缩比通常比gzip更好,bzip2格式的Linux内核包一般采用linux-x.y.z.tar.bz2形式的文件名,这里的x.y.z是内核源代码的具体版本号,下载到源代码包后,解压和抽取就很简单了,如果你下载的是bzip2包,运行: $ tar xvjf linux-x.y.z.tar.bz2 如果你下载的是gzip包,则运行: $ tar xvzf linux-x.y.z.tar.gz 无论执行上面哪一个命令,最后都会将源代码解压和抽取到linux-x.y.z目录下,如果你使用Git下载和管理内核源代码,你不需要下载tar包,只需要运行git clone命令,它就会自动下载和解压。 内核源代码通常都会安装到/usr/src/linux下,但在开发的时候最好不要使用这个源代码树,因为针对你的C库编译的内核版本通常也链接到这里的。 应用补丁

编译内核实验报告

实验一编译Linux内核 实验时间 6小时 实验目的 认识Linux内核的组成,掌握配置、编译、安装Linux内核的步骤。 实验目标 下载2.6.19或更新的Linux内核,配置该内核使其支持NTFS,并在新的内核中修改其版本为Linux NameTestKernel x.x.x,其中,Name是你的名字(汉语拼音);x.x.x是新内核的版本号,最后在你的机器上编译安装这个新内核。 背景知识 参见《Red Hat Enterprise Linux 4入门与提高》第20章。 实验步骤 1.验证gcc的可用:在你自己的工作目录下,编译链接运行Hello World程序。 2.在https://www.360docs.net/doc/cd4836765.html,上下载指定的内核,或者查找更新的稳定版内核并 下载之。 3.准备相关工具。 提示:如当前运行的Linux内核是基于2.4版本的,则需要更新以下软件: module-init-tools和mkinitrd。具体更新信息可参见下载内核源代码中的 Documentation/Changes这个文件。 4.把源代码解压缩至/usr/src中,最终形成/usr/src/linux x.x.x/目录(x.x.x是新 内核的版本号)。 提示:这里的注意点是路径的选择,一般要放在/usr/src/linux x.x.x/目录下面,以满足Makefile对路径设置的初始要求。 5.进入源代码的根目录,找到合适自己的内核配置方法,并按照实验目标对其 进行配置。

6.修改/usr/src/linux x.x.x/linux/include/linux/verson.h文件中的版本信息。 7.编译内核。 8.安装模块文件。 9.安装内核文件。 10.重新启动新内核。 实验结果 1.实验步骤1中,编译链接运行程序你下达了哪些命令? 2.实验步骤2中,你下载了哪个版本的内核文件? 3.实验步骤3中,你是否安装了相关工具?如安装,则写出安装过程。 4.实验步骤4中,你是用哪些命令解压缩内核文件的? 5.实验步骤5中,你用了哪种内核配置的方法? 6.你对实验步骤6中涉及的文件做了怎样的修改? 7.实验步骤7-9的过程,是否出现错误?如有,你是如何解决的? 8.观察你机器中GRUB的配置文件,它在安装完新内核后发生了哪些变化? 9.新内核启动过程是否成功?如有错误,是哪些错误?你是如何消错的?

内核配置与裁剪

内核配置与裁剪 1. Linux内核配置 内核配置的方法很多,make config、make xconfig、make menuconfig、make oldconfig 等等,它们的功能都是一样的。这里用的是make menuconfig。 过去基于2.x的内核为用户提供了四种基本的内核设置编辑器: ?. config 服务于内核设置的一个冗长的命令行界面; ?. oldconfig 一个文本模式的界面,主要包含一个已有设置文件,对用户所发现的内核资 源中的设置变量进行排序; ?. menuconfig 一个基于光标控制库的终端导向编辑器,可提供文本模式的图形用户界 面; ?. xconfig 一个图形内核设置编辑器,需要安装X-Window系统。 前三种编辑器在设置2.6内核时仍可使用,在运行“make xconfig”后,原有的界面被两个新的图形设置编辑器所代替。这需要具体的图形库和X-Window系统的支持。另外,用户还可以通过“make defconfig”命令,利用所有内核设置变量的缺省值自动建立一个内核设置文件。 下面具体介绍Linux内核配置选项: . 代码成熟度选项 Code maturity level options ---> [*] Prompt for development and/or incomplete code/drivers [*] Select only drivers expected to compile cleanly 在内核中包含了一些不成熟的代码和功能,如果我们想使用这些功能,想打开相关的配置选项,就必需打开这一选项。 . 通用设置选项 General setup ---> () Local version - append to kernel release [*] Automatically append version information to the version string [*] Support for paging of anonymous memory (swap)

was8.5.5 linux集群部署

概述 linux集群部署,记录关键的几个步骤如下: 1.做两个InstallationManager安装工具,一个控制平台(79),一个HIS(78),两个node 2.服务器获取文件,sftp root@10.224.130.18p@ssw0rd 3.get /opt/software/IBM/agent.zip /opt/software/IBM/ exit 安装InstallationManager # 78、79上安装InstallationManager cd /opt/software mkdir agent unzip -q agent.zip -d agent cdagent /tools ./imcl install com.ibm.cic.agent -repositories ../repository.config -acceptLicense 安装WAS AS 8.5.5 #两个服务器都安装WAS mkdir WAS_ND_V8.5.5_3 unzip -q -d WAS_ND_V8.5.5_3 WAS_ND_V8.5.5_1_OF_3.zip unzip -q -d WAS_ND_V8.5.5_3 WAS_ND_V8.5.5_2_OF_3.zip unzip -q -d WAS_ND_V8.5.5_3 WAS_ND_V8.5.5_3_OF_3.zip cd /opt/IBM/InstallationManager/eclipse/tools/ ./imcllistAvailablePackages -repositories /opt/software/IBM/WAS_ND_V8.5.5_3 ./imcl install com.ibm.websphere.ND.v85_8.5.5000.20130514_1044 -repositories /opt/software/IBM/WAS_ND_V8.5.5_3 -acceptLicense 安装HIS #78 安装HIS mkdirWAS_V8.5.5_SUPPL unzip -q -d WAS_V8.5.5_SUPPLWAS_V8.5.5_SUPPL_1_OF_3.zip unzip -q -d WAS_V8.5.5_SUPPLWAS_V8.5.5_SUPPL_2_OF_3.zip

Linux设置内核参数的方法

Linux设置内核参数的方法 1内核参数的查看方法 使用“sysctl -a”命令可以查看所有正在使用的内核参数。内核参数比较多(一般多达500项),按照前缀主要分为以下几大类:net.ipv4、net.ipv6、net.core、vm、fs、dev.parport、dev.cdrom 、dev.raid、kernel等等。相同的linux,安装的组件和使用的方式不一样,正在使用的内核参数是不一样的。 所有的内核参数的说明文档是放到/usr/src/linux/Documentation/sysctl中的,如果想知道对内核参数的说明,可以到该目录下查看相应的说明文档。 2内核参数的的设置方法 由于Linux的内核参数信息都存在内存中,因此可以通过命令直接修改,并且修改后直接生效。也可以通过文件的方式进行设置。下面就介绍这两种修改方法。 2.1命令设置的方式 可以用两种方法实现。 1、使用“sysctl -w 参数名=值”的方式 假设我们把net.ipv4.ip_forward的值修改为1,使用命令“sysctl -w net.ipv4.ip_forward=1”。 2、修改内核参数对应的proc文件 内核参数位于/proc/sys/之下,参数名称是以文件所在的路径,并将“/”以“.”来取代。举例来说,/proc/sys/net/ip_forward的参数名称为net.ipv4.ip_forward。 同样把net.ipv4.ip_forward的值修改为1,使用命令“echo “1”> /proc/sys/net/ipv4/ip_forward”。 注意,这里proc文件跟普通的文件不一样。一般一个文件用echo写入内容之后,会变成一个文本文件,但echo修改proc文件之后还是个空文件。 2.2文件设置的方式 更改的内核参数默认保存在/etc/sysctl.conf文件中。修改的时候可以直接用vi编辑sysctl.conf文件,增加要修改的内核参数内容,修改的格式为:参数名=值。例如,把net.ipv4.ip_forward的值修改为1,在sysctl.conf中增加下面这行内容:net.ipv4.ip_forward=1 文件修改好后,进行保存。然后使用“sysctl -p 配置文件名”来使配置生效,如果配置文件是默认的,可以不用输配置文件名,即使用“sysctl -p”。 通过文件设置的方式修改的内核参数是在系统重启后将失效(我之前认为修改后的内核参数放在文件中,系统启动的时候会读这个文件,重启后设置应该不会失效。但经过验证,一般会失效,但如果把将默认的boot.sysctl服务打开,所以系统启动时就会执行这个文件的设置)。把我们修改参数的命令写入启动执行脚本文件里/etc/rc.local,这样系统重启后配置就不会失效。 文件方式的好处是内核参数设置的值可以用文件保留下来,调用“sysctl -p”可以使文

Linux 2.6.19.x内核编译配置选项简介(2)

Linux 2.6.19.x内核编译配置选项简介(2) Security Marking 对网络包进行安全标记,类似于nfmark,但主要是为安全目的而设计,如果你不明白的话就别选 Network packet filtering (replaces ipchains) Netfilter可以对数据包进行过滤和修改,可以作为防火墙("packet filter"或"proxy-based")或网关(NAT)或代理(proxy)或网桥使用.选中此选项后必须将"Fast switching"关闭,否则将前功尽弃 Network packet filtering debugging 仅供开发者调试Netfilter使用 Bridged IP/ARP packets filtering 如果你希望使用一个针对桥接的防火墙就打开它 Core Netfilter Configuration 核心Netfilter配置(当包流过Chain时如果match某个规则那么将由该规则的target来处理,否则将由同一个Chain中的下一个规则进行匹配,若不match所有规则那么最终将由该Chain的policy进行处理) Netfilter netlink interface 允许Netfilter在与用户空间通信时使用新的netlink接口.netlink Socket是Linux用户态与内核态交流的主要方法之一,且越来越被重视 Netfilter NFQUEUE over NFNETLINK interface 通过NFNETLINK接口对包进行排队 Netfilter LOG over NFNETLINK interface 通过NFNETLINK接口对包记录.该选项废弃了ipt_ULOG和ebg_ulog机制,并打算在将来废弃基于syslog 的ipt_LOG和ip6t_LOG模块 Layer 3 Independent Connection tracking 独立于第三层的链接跟踪,通过广义化的ip_conntrack支持其它非IP协议的第三层协议 Netfilter Xtables support 如果你打算使用ip_tables,ip6_tables,arp_tables之一就必须选上 "CLASSIFY" target support 允许为包设置优先级,一些排队规则(atm,cbq,dsmark,pfifo_fast,htb,prio)需要使用它 "CONNMARK" target support 类似于"MARK",但影响的是连接标记的值 "DSCP" target support 允许对ip包头部的DSCP(Differentiated Services Codepoint)字段进行修改,该字段常用于Qos "MARK" target support 允许对包进行标记(通常配合ip命令使用),这样就可以改变路由策略或者被其它子系统用来改变其行为"NFQUEUE" target Support 用于替代老旧的QUEUE(iptables内建的target之一),因为NFQUEUE能支持最多65535个队列,而QUEUE 只能支持一个 "NOTRACK" target support 允许规则指定哪些包不进入链接跟踪/NA T子系统 "SECMARK" target support

LINUX中使用IPVSADM配置LVS集群的基本方法

LVS集群有DR、TUN、NAT三种配置模式,可以对www服务、FTP服务、MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置。 一、 Director Server的配置 在Director Server上配置LVS负载均衡集群,有两种方法: a. 通过ipvsadm命令行进行配置 b. 通过Redhat提供的工具piranha来配置LVS 通过ipvsadm命令行方式配置LVS 安装IPVS后,就可以配置LVS集群了,首先在Director Server上绑定一个虚拟IP(也叫VIP),此IP用于对外提供服务,执行如下命令: 复制代码 代码如下: [root@localhost ~]#ifconfig eth0:0 192.168.60.200 broadcast 192.168.60.200 netmask 255.255.255.255 up 此处在eth0设备上绑定了一个虚拟设备eth0:0,同时设置了一个虚拟IP是192.168.60.200,也就是上面我们规划的IP地址,然后指定广播地址也为192.168.60.200,需要特别注意的是,这里的子网掩码为255.255.255.255。 然后给设备eth0:0指定一条路由,执行如下指令: 代码如下: [root@localhost ~]#route add -host 192.168.60.200 dev eth0:0 接着启用系统的包转发功能,从而使系统充当路由器,执行如下指令: 代码如下: [root@localhost ~]#echo 1 ;/proc/sys/net/ipv4/ip_forward 指令中,参数值为1时启用ip转发,为0时禁止ip转发。其实在DR模式中,开启系统的包转发功能不是必须的,而在NAT模式下此操作是必须的。 然后开始配置ipvs,执行如下操作:

史上最全linux内核配置详解

对于每一个配置选项,用户可以回答"y"、"m"或"n"。其中"y"表示将相应特性的支持或设备驱动程序编译进内核;"m"表示将相应特性的支持或设备驱动程序编译成可加载模块,在需要时,可由系统或用户自行加入到内核中去;"n"表示内核不提供相应特性或驱动程序的支持。只有<>才能选择M 1. General setup(通用选项) [*]Prompt for development and/or incomplete code/drivers,设置界面中显示还在开发或者还没有完成的代码与驱动,最好选上,许多设备都需要它才能配置。 [ ]Cross-compiler tool prefix,交叉编译工具前缀,如果你要使用交叉编译工具的话输入相关前缀。默认不使用。嵌入式linux更不需要。 [ ]Local version - append to kernel release,自定义版本,也就是uname -r可以看到的版本,可以自行修改,没多大意义。 [ ]Automatically append version information to the version string,自动生成版本信息。这个选项会自动探测你的内核并且生成相应的版本,使之不会和原先的重复。这需要Perl的支持。由于在编译的命令make-kpkg 中我们会加入- –append-to-version 选项来生成自定义版本,所以这里选N。 Kernel compression mode (LZMA),选择压缩方式。 [ ]Support for paging of anonymous memory (swap),交换分区支持,也就是虚拟内存支持,嵌入式不需要。 [*]System V IPC,为进程提供通信机制,这将使系统中各进程间有交换信息与保持同步的能力。有些程序只有在选Y的情况下才能运行,所以不用考虑,这里一定要选。 [*]POSIX Message Queues,这是POSIX的消息队列,它同样是一种IPC(进程间通讯)。建议你最好将它选上。 [*]BSD Process Accounting,允许进程访问内核,将账户信息写入文件中,主要包括进程的创建时间/创建者/内存占用等信息。可以选上,无所谓。 [*]BSD Process Accounting version 3 file format,选用的话统计信息将会以新的格式(V3)写入,注意这个格式和以前的v0/v1/v2 格式不兼容,选不选无所谓。 [ ]Export task/process statistics through netlink (EXPERIMENTAL),通过通用的网络输出工作/进程的相应数据,和BSD不同的是,这些数据在进程运行的时候就可以通过相关命令访问。和BSD类似,数据将在进程结束时送入用户空间。如果不清楚,选N(实验阶段功能,下同)。 [ ]Auditing support,审计功能,某些内核模块需要它(SELINUX),如果不知道,不用选。 [ ]RCU Subsystem,一个高性能的锁机制RCU 子系统,不懂不了解,按默认就行。 [ ]Kernel .config support,将.config配置信息保存在内核中,选上它及它的子项使得其它用户能从/proc/ config.gz中得到内核的配置,选上,重新配置内核时可以利用已有配置Enable access to .config through /proc/config.gz,上一项的子项,可以通过/proc/ config.gz访问.config配置,上一个选的话,建议选上。 (16)Kernel log buffer size (16 => 64KB, 17 => 128KB) ,内核日志缓存的大小,使用默认值即可。12 => 4 KB,13 => 8 KB,14 => 16 KB单处理器,15 => 32 KB多处理器,16 => 64 KB,17 => 128 KB。 [ ]Control Group support(有子项),使用默认即可,不清楚可以不选。 Example debug cgroup subsystem,cgroup子系统调试例子 Namespace cgroup subsystem,cgroup子系统命名空间 Device controller for cgroups,cgroups设备控制器

Linux 内核编译配置选项简介

General setup常规设置 Local versio n - append to kernel release 在内核版本后面加上自定义的版本字符串(小于64字符),可以用"uname -a"命 令看到 Automatically append version information to the versio n string 自动在版本字符串后面添加版本信息,编译时需要有perl以及git仓库支持 Support for paging of anonymous memory (swap) 使用交换分区或者交换文件来做为虚拟内存 System V IPC System V进程间通信(IPC)支持,许多程序需要这个功能.必选,除非你知道自己 在做什么 POSIX Message Queues POSIX消息队列,这是POSIX IPC中的一部分 BSD Process Accounting 将进程的统计信息写入文件的用户级系统调用,主要包括进程的创建时间/创建者/ 内存占用等信息 Export task/process statistics through netlink 通过netlink接口向用户空间导出任务/进程的统计信息,与BSD Process Accounting的不同之处在于这些统计信息在整个任务/进程生存期都是可用的 UTS Namespaces UTS名字空间支持,不确定可以不选 Auditing support 审计支持,某些内核模块(例如SELinux)需要它,只有同时选择其子项才能对系统 调用进行审计 Kernel .config support 把内核的配置信息编译进内核中,以后可以通过scripts/extract-ikconfig脚本来 提取这些信息 Cpuset support 只有含有大量CPU(大于16个)的SMP系统或NUMA(非一致内存访问)系统才需 要它 Kernel->user space relay support (formerly relayfs) 在某些文件系统上(比如debugfs)提供从内核空间向用户空间传递大量数据的接 口

linux内核配置模块编译安装

Linux内核配置编译和加载 Linux内核模块 Linux内核结构非常庞大,包含的组件也非常多,想要把我们需要的部分添加到内核中,有两个方法:直接编译进内核和模块机制 由于直接编译进内核有两个缺点,一是生成的内核过大,二是每次修改内核中功能,就必须重新编译内核,浪费时间。因此我们一般采用模块机制,模块本身不被编译进内核映像,只有在加载之后才会成为内核的一部分,方便了修改调试,节省了编译时间。 配置内核 (1)在drivers目录下创建hello目录存放hello.c源文件 (2)在hello目录下新建Makefile文件和Kconfig文件 Makefile文件内容: obj-y += hello.o //要将hello.c编译得到的hello.o连接进内核 Kconfig文件内容: 允许编译成模块,因此使用了tristate (3)在hello目录的上级目录的Kconfig文件中增加关于新源代码对应项目的编译配置选项 修改即driver目录下的Kconfig文件,添加

source "drivers/hello/Kconfig" //使hello目录下的Kconfig起作用 (4)在hello目录的上级目录的Makefile文件中增加对新源代码的编译条目 修改driver目录下的Makefile文件,添加 obj-$(CONFIG_HELLO_FOR_TEST) += hello/ //使能够被编译命令作用到 (5)命令行输入“make menuconfig”,找到driver device,选择select,发现test menu 已经在配置菜单界面显示出来 (6)选择test menu进入具体的配置,可以选择Y/N/M,这里我选择编译为M,即模块化 (7)保存退出后出现 (8)进入kernels目录中使用“ls -a”查看隐藏文件,发现多出.config隐藏文件,查看.config 文件

DM7集群部署方案之数据共享集群Linux(2节点)

DM7集群部署方案之数据共享集群 Linux(2节点) 武汉达梦数据库有限公司 2019年9月

版本历史

目录 1 前期准备工作 (1) 1.1硬件准备 (1) 1.2网络架构 (1) 1.3硬件环境建议 (1) 1.4硬件环境环境验证 (2) 1.5集群规划 (2) 1.6修改主机名 (2) 1.7关闭防火墙 (3) 1.8网卡自启 (3) 1.9修改系统参数 (3) 2 创建目录并安装数据库 (3) 2.1A机器 (3) 2.2B机器 (4) 3 存储准备 (4) 3.1划存储 (4) 3.2挂存储方法1:直接挂 (4) 3.3挂存储方法2:多路径绑定 (5) 4 搭建DSC (6) 4.1配置DMDCR_CFG.INI (6) 4.2初始化磁盘组 (7) 4.3配置DMASVRMAL.INI (7) 4.4配置DMDCR.INI (7) 4.5启动CSS、ASM服务 (8) 4.6创建DMASM磁盘组 (9) 4.7配置DMINIT.INI (9) 4.8初始化数据库 (9) 4.9配置DMARCH.INI (10)

4.10启动DMSERVER服务 (10) 4.11设置后台启动脚本 (11) 4.12启停集群 (12) 5 配置监视器 (13) 5.1配置DMCSSM.INI (13) 5.2启动监视器 (13) 6配置DM_SVC.CONF文件 (13) 6.1 DM_SVC.CONF配置内容 (13) 6.2应用连接 (14) 7附加操作 (14) 7.1操作系统/数据库调优 (14) 7.2数据库备份 (14) 7.3项目管理维护 (14)

相关文档
最新文档