构建高可用Linux服务器(txt+pdf+epub+mobi电子书下载)


发布时间:2020-07-24 01:54:00

点击下载

作者:余洪春

出版社:机械工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

构建高可用Linux服务器

构建高可用Linux服务器试读:

前言

我的系统管理员之路

2002年我初识Linux,那会儿刚毕业,在一家大型国营公司值守Windows Server 2000服务器,当时“震荡波”和“冲击波”这两种病毒很是猖狂,没有打补丁的机器无一幸免。我所值守的服务器也未能例外,虽然我们在防毒方面投入了大量的精力和金钱(当时购买的都是正版Windows 2000系统和正版瑞星杀毒软件)。有一次去朋友公司(省太平洋寿险下面的一个分支机构)参观,我发现他们的服务器和终端系统都很奇怪,一问才知道是BSD系统,因为运行机制不一样,所以Windows下的病毒丝毫影响不了它们,而且这些服务器很稳定,基本上不宕机。当时很是羡慕,心想要是哪一天我们的服务器也要换成BSD系统,这样“冲击波”和“震荡波”就奈何不了我们,而且也不会蓝屏,那该多好啊。

后来有幸到北京一家大型广告公司上班,公司所用服务器基本上都是Centos和FreeBSD,内部用的文件服务器是Samba,Web服务器是Apache和Nginx,公司的NAT路由器是iptables,核心业务是CDN系统,几乎全部装的都是Cenotos5.1 x86_64,仅有一台装的是Windows Server 2003,供程序员开发.NET程序之用。公司的这套CDN系统要负责处理所有的流量,即使在高峰期并发量特别大的时候,网站也非常稳定。

我当时也对Linux产生了浓厚的兴趣,尝试改掉自己多年使用Windows的习惯,换成了纯字符操作,并且尝试用SHELL完成自动化工作,用vim+sed处理文档。后来,我发现自己越来越喜欢Linux了。公司有一台vsftpd服务器,3年没有重启了,这很让我吃惊,所以多次与人聊起。后来我又得知一位朋友所在的公司有一台很老的RH8服务器,因为负责的是公司的核心业务,已经9年没有重启了,当时更加感到震撼,这更加坚定了我要学好Linux的决心。

在做项目实施工程师期间,有些客户的核心网站的并发量并不是太大,但比较重要,所以他们都要求部署Linux集群,有时指定要部署LVS或HAProxy。在项目实施的过程中,我发现LVS/HAProxy的负载均衡确实非常强大,可以与硬件级的F5负载均衡器的能力相媲美。很快我就被Linux集群这门艺术迷住了,我自己曾研究了Nginx+Keepalived这种负载均衡高可用架构,并且在许多项目中成功实施,客户反映效果也不错。

现阶段我的工作主要是维护“一拍网”和另外一个大型电子商务网站,相对于CDN系统而言,它没有节点冗余,所以对Linux集群技术的要求更高。我负责的网站基本都做了双机高HA,LVS+Keepalived和Nginx+Keepalived,还有DRBD+Heartbeat及MySQL的replication复制。另外,由于电子商务网站涉及钱的问题,所以对安全性的要求也很高,我们平时都会从网络安全(硬件防火墙)、系统安全、代码安全和数据库安全这些方面着手,尽力避免一切影响网站安全的行为。工作虽然辛苦,但看着自己架构的网站顺利稳定地运行,心里还是很有成就感的,这也是我的工作动力的主要源泉。写作本书的目的

从事系统管理和系统集成方面的工作已有七八年了,在工作期间,我曾经担任了一段时间的红帽RHCE讲师,到东北大学等高校推广红帽Linux及FreeBSD等开源系统。在教学过程中我发现,很多学生在进入企业后都无法胜任自己的工作,更谈不上正确地规划自己的职业道路了。一方面因为企业的生产环境具有一定的复杂性;另一方面市场上入门书居多,缺乏能真正指导读者解决实际问题的书籍。例如,很多书都只是通过VMware ESXi或XenServer虚拟出了VM系统,对于线上环境,根本没有涉及并发、PV和数据库压力等相关话题。

之所以写这本书,一方面是想对自己这些年的工作经验和心得进行一次系统的梳理和总结;另一方面是想将自己的经验分享给大家,希望能帮助大家少走弯路。通过本书中的项目实践(包括Linux集群、OpenVPN、邮件系统和iptables防火墙)和线上环境的SHELL脚本,大家能迅速进入工作状态。书中专门用了一个章节来向大家介绍目前应用得比较多的FreeBSD8.1 x86_64系统(市场上目前无相关书籍介绍)。书中所提供的SHELL脚本和iptables脚本均来自于线上的生产服务器,大家均可以直接拿来用。关于Linux集群的项目实践,大家也可以根据实际项目的需求直接采用,以此来设计自己公司的网站架构。

希望大家能通过本书掌握Linux的精髓,轻松而愉快地工作,从而提高自己的技术水平,这是我非常希望看到的,这也是我写此书的初衷。读者对象

本书适合以下几类读者:

系统管理员和系统工程师

网络管理员和企业网管

项目实施工程师

开发人员

计算机相关专业的学生如何阅读本书

本书的内容是对实际工作经验的总结,涉及大量的知识点和专业术语,建议经验还不是很丰富的读者先了解第1章和第2章的内容,这两章比较基础,如果大家在学习过程中根据这两章的讲解进行操作,定会达到事半功倍的效果。

系统管理员和系统工程师们则可以重点关注第3章的(Linux服务器虚拟化)、第6章(Linux集群)及第8章(iptables防火墙及系统安全)的内容,这些都与我们的日常工作息息相关,建议大家多花些精力和时间,抱着一切从线上环境去考虑的态度去学习。

对于网络管理员和企业网管来说,如果基础不是太扎实,建议先学习第1章的内容,然后将重点放在第7章(VPN在企业中的部署应用)和第8章上。

对于项目实施工程师而言,由于大多数都是从事系统集成相关工作的,因此建议顺序学习全书的内容,重心可以放在本书的第6章上面。

对于开发人员来说,由于其只需对系统有一个大概的了解,重点可以放在第1章、第2章和第5章(生产环境下的SHELL脚本)上。

大家可以根据自己的职业发展和工作需要选择不同的阅读顺序和侧重点,同时也可以对其他相关的知识点有一定的了解。致谢

感谢我的家人,她们在生活上对我无微不至的照顾,让我更有精力和动力去工作和创作。

感谢东北大学信息技术学院的付冲教授,感谢您在我人生最穷困潦倒的时候伸出援手。

感谢北京总公司的技术总监唐老师,他对iptables防火墙相关的内容提出了许多指导性的建议,并且在CDN系统维护方面教会了我许多。

感谢老男孩前辈在网站架构设计方面给出的指导性意见,他的经验和专业知识让我受益匪浅。

感谢和我一起从事系统运维工作的朋友:曹亚孟、胡安伟和崔晓辉。曹亚孟为本书中与Linux虚拟化相关的内容提供了宝贵的资料,这是他几年来从事XEN虚拟化工作的经验总结;胡安伟为本书提供了许多精美的插图,并就Linux集群相关的内容提出了许多宝贵的意见;崔晓辉为本书提供了大量的线上SHELL脚本。另外,还要对我的同事ritto表示衷心的感谢!

感谢朋友刘鑫,和我一起花了大量时间研究和调试HAproxy+Keepalived。

感谢51cto.com的编辑们,尤其是赵克衡、杨赛、王文文、张浩和邵程程,正是有了你们的信任和帮助,此书才得以问世。

感谢Linux高级群中的深夜的蚊子、结冰的西瓜、jack、狠希耐等朋友,感谢你们对我的支持,没有你们的相伴,我能否坚持到今天,可能还是个未知数。

感谢我的朋友三宝,感谢他这么多年来对我的信任和支持,在我苦闷的时候陪我聊天。

感谢在工作和生活中给予过我帮助的所有人,感谢你们,正是因为有了你们,才有了本书的问世。关于勘误

尽管我花了大量时间和精力去核对书中的文字、代码和图片,但因为时间仓促和水平有限,书中仍难免会有一些错误和纰漏,如果大家发现问题,恳请反馈给我,相关信息可发到我的邮箱yuhongchun027@gmail.com。尽管我无法保证每一个问题都会有正确的答案,但我肯定会努力回答并指出一个正确的方向。

如果大家对本书有任何疑问或想与我探讨Linux技术,可以访问我的个人博客,地址为:http://andrewyu.blog.51cto.com,我的微博地址为:http://weibo.com/yuhongchun027。另外,我在51cto和ChinaUnix社区的ID均为“抚琴煮酒”,大家也可以直接通过此ID在社区中与我在线交流。余洪春(抚琴煮酒)2011年8月第1章 Linux服务器构建基础

1.1 Linux服务器的安装方法

1.2 全面了解Linux服务器

1.3 Linux服务器的网络配置

1.4 Linux服务器的日志管理

1.5 Linux服务器的优化

1.6 用开源工具Nagios监控Linux服务器

1.7 项目实施中应该注意的事项

1.8 小结

作为一名系统工程师和项目实施工程师,我的工作内容主要有电子商务网站的运维、内网开发环境的部署、公司外包项目的实施等。在这些工作中,我用到的系统绝大多数是免费开源的Centos系列,它的稳定和高效让我印象深刻。本章将以64位的Centos5.5的生产服务器为平台,逐步介绍它的安装方法、网络配置、日志分析、性能及状态监控,以及它的优化及虚拟化等内容。这些都是构建高性能及高可用Linux系统的基础,希望对大家有所帮助。另外,Centos5.5的安装过程和步骤,同样适合其他的Linux系统,如RHEL系列、SUSE Linux Enterprise、Ubuntu Server。在本章和以后章节中演示所用的所有系统均是64位的,如64位的Centos5.5(对于它有两种表示方法,一种是64bit Centos5.5;另外一种也为大家所接受,即Centos5.5 x86_64。其他Linux系统的表示法与此类似)。1.1 Linux服务器的安装方法

Centos5.5 x86_64的安装方法很多,最常见的有光盘安装、无人值守安装以及U盘安装,还有ISO硬盘安装等。我们在实际工作中通常以光盘安装和无人值守安装为主,所以这里主要介绍这两种安装方法。1.1.1 光盘安装Centos5.5 x86_64

先说说准备工作。为了截图方便,我在笔记本上安装了VMware Console Client,同时在家用服务器上安装了Windows 2003 R2 x86_64+VMware Server1.01。VMwaer Server1.01很稳定,所以我将它用在了生产环境下的客户演示系统中,对此感兴趣的朋友也可以关注一下。我将虚拟机的硬盘设定为10GB,分区情况如下:

/2048M

/boot 128M

swap 512M

/data 7552M(即剩余的所有硬盘空间)

如果是线上的服务器,假设它是2TB的SATA硬盘、8GB内存,那么建议按如下方式进行分区:

/20480M

/boot 128M

swap 10240M

/data 2016152M(即剩余的所有硬盘空间)

为了便于演示,我将VMware Server中的Centos5.5 x86_64虚拟机的硬件按图1-1所示的情况进行了分配。图 1-1 Centos5.5虚拟机的硬件分配

另外,我在笔记本上安装了VMware Server Console,要连接服务器的VMware Server也很简单。运行此程序后输入Windows 2003所在机器的IP地址和Administor的相应密码即可进入,这样就会像操作本地的VMware Server一样方便了,如图1-2和图1-3所示。图 1-2 安装VMware Server Console图 1-3 利用VMware Server Console进入VMware Server

启动了VMware Server后,即进入了Centos5.5的安装界面,如图1-4所示。图 1-4 Centos5.5的安装界面

接下来会让你选择是否检测光盘媒体是否存在着问题,Skip表示选择略过。我们在机房安装系统时,常会选择Skip以略过检查过程,节约安装时间,如图1-5所示。图 1-5 系统提示是否检测光盘媒体

接下来让你选择系统的语言,比如是简体中文、繁体中文,还是英文或其他语言,如图1-6所示。根据线上工作的经验,英文是最稳定的。图 1-6 选择系统安装的语言

图1-7显示的是选择安装哪种键盘,一般选择U.S.English(即美式的)。图 1-7 选择安装哪种键盘

图1-8所示表示系统发现了一块10 237MB的设备,它在向你请示是否需要安装这块硬盘并清空所有数据,这里选择YES(当然了,如果在实际工作中进行选择就要小心了,它会删除所有的硬盘数据)。图 1-8 是否选择删除所有的数据

图1-9所示是选择分区方式,建议不用Centos5.5自带的Disk Druid将硬盘的所有分区都分成LVM(逻辑磁盘卷),虽然LVM可以在生产系统上直接在线扩展硬盘的分区,但一般应用的机器都没有此需求(有此特殊应用需求的机器除外),所以这里选择自定义分区。在机房安装Centos时,一般是没有鼠标的,大家可以用Alt+快捷键来操作,免得用Tab键一步步切换,以节约时间(此快捷键在重装系统删除分区时非常管用,另一个快捷键也非常管用,即Shift键加上Tab键,它会回退一步,这个操作可以简化我们的工作。它们在Windows系统上一样适用)。图 1-9 选择硬盘的分区方式

Centos5.5 x86_64的/boot比较小,我们一般选择100MB左右即可,也可以根据实际环境来选择,最好不超过10GB,如图1-10所示。图 1-10 对/和/boot进行分区

关于swap分区,我们一般选择内存的1.5~2倍,超过2倍就没有什么意义了。我这里的内存只有384MB,所以我选择512这个数值。如果是8GB内存的机器,那就适合用12 000MB,如图1-11所示。图 1-11 对swap和/data进行分区

Centos5.5的GRUB(Grand Unified Boot Loader)启动引导器将安装在/dev/sda2硬盘上,如图1-12所示。如果是生产环境下的服务器,并且有特殊安全需求,可以配置GRUB密码,一般的应用服务器可以省略此步操作。图 1-12 GRUB的安装位置以及是否配置GRUB密码

配置系统的网卡时,记得选上“Active on Boot”,如图1-13所示。如果不选择,会直接导致系统在启动时网卡分配不了IP,这也是我们经常易犯的错误之一。图 1-13 选择是否在系统启动时引导网卡

接下来,就进入了网卡配置界面。每个系统的网络配置大同小异,一般就是IP地址、子网掩码、网关及主从DNS服务器等。Centos5.5的网卡配置也比较直观,如图1-14所示。图 1-14 网卡配置界面

图1-15所示是进行系统时区的选择,一般选择“亚洲/上海”。大家稍微注意看一下,这里有一个“System clock uses UTC”,这个选项中的UTC是什么意思呢?这里简单解释一下。图 1-15 为Centos系统选择时区

UTC表示世界协调时间(Universal Time Coordinated)。GPS系统中有两种时间区分,一为UTC,另一为CST(地方时)。两者的区别在于时区不同,UTC指的是0时区的时间,地方时为本地时间,如北京为早上8点(东八区),UTC时间就为零点,时间比北京时间晚8个小时,以此推算即可。这里建议大家勾选此项。

接下来就该设置Root的密码了,如图1-16所示。图 1-16 Root密码设置

然后安装系统的软件包。这里提醒一下大家,我们在安装线上环境的系统时,要牢记一个原则,软件包越少的系统越稳定。这里我们仅仅选择Server,即最小化安装,如图1-17所示。不过,如果服务器有特殊用途,则另当别论了。选择好后就进入了图1-18所示的Centos5.5准备安装界面。图 1-17 选择系统的软件包图 1-18 准备安装Centos系统界面

系统安装完成后重启。接着就要选择系统的安全及网络配置了,这里我们主要关注“Firewall configuration”这个选项,其他选项默认即可,如图1-19所示。图 1-19 系统的安全及网络配置

暂时先关闭iptables和SELinux,如果有需求再打开,如图1-20所示。图 1-20 系统的iptables和SELinux配置

这一步完成之后,就表示Centos5.5安装成功了,如图1-21所示是Centos5.5成功安装后的界面。图 1-21 Centos5.5成功安装后的界面

在机房里安装64位的Centos5.5时可以发现,现在Centos5.5对硬件的支持越来越好了,它能很轻松地辨认和安装许多服务器的RAID卡和网卡,而且通过yum安装基础库和软件也非常方便。即使是用于线上环境,我建议大家也使用64位的Centos5.5系统,因为它的稳定性更好,并且向下兼容32位程序。1.1.2 使用PXE+DHCP+Apache+KickStart无人值守安装RHEL

因为工作中有批量安装系统的需要,所以我尝试使用RHEL5+PXE+DHCP+Apache+KickStart安装了RHCE实验室环境,并取得了成功,但过程比较漫长。我特地记录下了KickStart的无人值守安装过程。现阶段,此方法主要用于在公司内批量安装大量的新服务器系统,然后上架到公网IDC机房,这极大地简化了用光盘重复安装Centos5.5的过程,提高了工作效率。以下安装方法在32位的RHEL 5.1/5.2/5.3下也可以通过,当然同样适用于32位和64位的Centos5.5系列了。

首先,我们来介绍一下与之相关的原理和概念。

1.什么是PXE

严格来说,PXE并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是在要安装的计算机中必须包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client。PXE(Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的ROM中。当计算机引导时,BIOS把PXE Client调入内存中执行,然后由PXE Client将放置在远端的文件通过网络下载到本地运行。运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器会给PXE Client(将要安装系统的主机)分配一个IP地址,由于是给PXE Client分配IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置。此外,在PXE Client的ROM中,已经存在了TFTP Client,那么它就可以通过TFTP协议到TFTP Server上下载所需的文件了。

2.什么是KickStart

KickStart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成KickStart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找KickStart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果KickStart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。

3.PXE+KickStart的安装条件和详细步骤

执行PXE+KickStart安装需要的设备为:

DHCP服务器

TFTP服务器

KickStart所生成的ks.cfg配置文件

一台存放系统安装文件的服务器,如NFS、HTTP或FTP服务器

一个带有PXE支持网卡的主机

安装的具体步骤如下。

1)安装httpd,代码如下所示:

yum-y install httpd*

2)挂载RHEL5.1的DVD光盘,并复制光盘下的所有内容(文件和文件夹)到/var/www/html下。无论是RHEL还是Centos的光盘,如果是最小化安装,基本上第一张DVD光盘就足够了,挂载及复制的代码如下所示:

mount/dev/cdrom/mnt

cp-rf/mnt/*/var/www/html

3)安装tftp-server,并启用tftp服务,同时启动xinetd进程,代码如下所示:

1.rpm-ivh tftp-server-0.39-1.i386.rpm

2.vi/etc/xinetd.d/tftp

#default:off

#description:The tftp server serves files using the trivial file transfer\

#protocol.The tftp protocol is often used to boot diskless\

#workstations,download configuration files to network-aware printers,\

#and to start the installation process for some operating systems.

service tftp

{

socket_type=dgram

protocol=udp

wait=yes

user=root

server=/usr/sbin/in.tftpd

server_args=-s/tftpboot

disable=no#disable的值由yes变为no

per_source=11

cps=100 2

flags=IPv4

}

3.service xinetd restart

4)配置支持PXE的启动程序(注意:前面已经把第一张光盘的内容复制到/var/www/html目录中了,所以需要文件时只要从/var/www/html目录中复制就行了。但是在这里描述的时候,我还是标明了文件的真实位置,比如在DVD光盘的哪个文件中,便于大家理解)。

建立tftpboot文件夹,如下所示(若该文件夹已经存在则不用建立):

mkdir-p tftpboot

复制pxelinux.0文件至tftpboot文件夹中,如下所示:

cp/usr/lib/syslinux/pxelinux.0/tftpboot

把Linux第一张安装光盘上的/image/pxeboot/initrd.img和vmlinux复制到/tftpboot/中,如下所示:

cp/var/ftp/image/pxeboot/initrd.img/tftpboot

cp/var/ftp/image/pxeboot/vmlinux/tftpboot

复制第一张安装光盘上的isolinux/*.msg到/tftpboot目录下,如下所示:

cp/var/ftp/isolinux/*.msg/tftpboot

在tftpboot中新建一个pxelinux.cfg目录如下:

mkdir pxelinux.cfg

把第一张安装光盘上isolinux目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default,代码如下:

cd pxelinux.cfg

cp/var/ftp/isolinux/isolinux.cfg/tftpboot/pxelinux.cfg/default

在上一个步骤中,暂时不要修改default文件,进行到这一步时,虽然已经可以通过网络来引导并手动安装KickStart了,但是由于这里讨论的是无人值守安装,所以先不修改这个default文件。

5)安装DHCP服务,同时修改如下配置:

rpm-ivh dhcp-3.0.1-12_EL.i386.rpm

然后复制配置模板文件到指定的目录中,并重新命名:

cp/usr/share/doc/dhcp-3.0.1/dhcpd.conf.sample/etc/dhcpd.conf

接着修改配置文件,添加一行:filename"/pxelinux.0"(注意写入的位置,不然会导致安装失败,切记!)。其他的修改大家可以根据如下代码完成:

[root@localhost isolinux]#vim/etc/dhcpd.conf

ddns-update-style interim;

ignore client-updates;

next-server 192.168.1.14;#PXE服务器IP地址

filename"/pxelinux.0";

subnet 192.168.1.0 netmask 255.255.255.0{

#--default gateway

option routers 192.168.1.254;

option subnet-mask 255.255.255.0;

option nis-domain"example.com";

option domain-name"example.com";

option domain-name-servers 192.168.1.254;

option time-offset-18000;#Eastern Standard Time

#option ntp-servers 192.168.1.1;

#option netbios-name-servers 192.168.1.1;

#--Selects point-to-point node(default is hybrid).Don't change this unless

#--you understand Netbios very well

#option netbios-node-type 2;

range dynamic-bootp 192.168.1.128 192.168.1.254;

default-lease-time 21600;

max-lease-time 43200;

#we want the nameserver to appear at a fixed address

#host ns{

#next-server marvin.redhat.com;

#hardware ethernet 12:34:56:78:AB:CD;

#fixed-address 192.168.1.110;

#}

}

最后启动DHCP服务如下:

service dhcpd start

6)安装KickStart,同时配置KickStart。

首先需要安装KickStart这个工具包,在RHEL最小化安装系统时,此软件包并没有默认安装。命令如下所示:

rpm-ivh system-config-kickstart-2.5.16-2.noarch.rpm

在gnome环境下配置KickStart。命令如下所示:

system-config-kickstart

运行上面的命令后可以对系统的一些基本配置进行设置,例如选择时区、设置Root的密码等。

接下来便要进行安装了,建议选择httpd安装,在安装过程中,根据引导选择安装选项,不需要做更改。

KickStart会让我们选择需要批量安装的RHEL分区信息,按照上一节所介绍的Centos5.5 x86_64的安装方法,我们创建4个分区,即/、/boot、/data和swap分区。

在进行网络配置时,我使用的是静态分配地址(动态同样如此),这里跟前面进行光盘安装是一样的。

设置显示配置时可以按照我们的习惯选择。

关于软件包的选择,大家可以根据实际的工作需求来选择自己需要的软件包,尽量不要同时安装Kernel Development和Development Tools,不然的话在安装的时候很容易出错。

其他都选择默认设置,不需要修改。

最后将生成的文件ks.cfg保存到/var/www/html下。

7)修改/tftpboot/pxelinux.cfg/default文件,指定读取ks.cfg的方法(ks=http://192.168.1.40/ks.cfg)。

8)vim/var/www/html/ks.cfg,代码如下所示:

auth--useshadow--enablemd5

key--skip#一定要有这一行,用来跳过注册码输入,不然安装会失败

bootloader--location=mbr

clearpart--all--initlabel

text

firewall--disabled

firstboot--disable

keyboard us

lang en_US

logging--level=info

url--url=http://192.168.1.14/

network--bootproto=dhcp--device=eth0--onboot=on

reboot

rootpw--iscrypted$1$HEJKfwF9$r1l0JoPz74ToF9NbE3Qs1

selinux--disabled

timezone--isUtc Asia/Shanghai

intall

xconfig--defaultdesktop=GNOME-depth=8--resolution=640x480

part swap--bytes-per-inode=4096--fstype="swap"--size=512

part/boot--bytes-per-inode=4096--fstype-"ext3"--size=200

part/--bytes-per-inode=4096--fstype="ext3"--grow--size=1

%packages

@cluster-storage

@mysql

@development-libs

@editors

@text-internet

@x-software-development

@virtualization

@legacy-network-server

@dns-server

@gnome-desktop

@dialup

@core

@base

@ftp-server

@network-server

@clustering

@java-development

@base-x

@chinese-support

@web-server

@smb-server

@printing

@admin-tools

@development-tools

@graphical-internet

kmod-gnbd-XEN

kmod-gfs-XEN

perl-Convert-ASN1

perl-Crypt-SSLeay

mesa-libGLU-devel

tftp-server

kexec-tools

bridge-utils

device-mapper-multipath

ypserv

openldap-servers

vnc-server

dhcp

xorg-x11-server-Xnest

xort-x11-server-Xvfb

imake

gcc-objc

expect

9)重新引导安装,问题解决了,最终安装成功。

以上是我的配置步骤,如果完全照此操作,是一定可以成功安装的!本节内容我在自己的博客里也有发表过,很多朋友按照此方法配置成功了。他们也提出许多宝贵的意见,本节内容也是在此基础上修改而成的。1.1.3 Linux的其他安装方法

Linux的安装方法还有许多,比如说通过ISO硬盘安装。还有许多系统管理员非常喜欢用U盘在服务器上自动安装系统,不过所用的原理与上述原理基本相同。但这些方法没有前面介绍的两种方法通用。在实际工作中,光盘安装和网络无人值守安装属于主流安装方法,特别是网络无人值守安装方式,适合大规模部署集群环境的服务器。大家可根据公司的需求来安装系统,怎么方便怎么来,毕竟高效率也是我们追求的目标之一。1.2 全面了解Linux服务器

作为一名项目实施工程师,我经常要到客户的机房或托管的IDC从事相关的系统工作,里面的Linux服务器少则十几台,多则上百台。为了便于工作,通常这时候我就会非常想清楚地了解服务器的硬件配置。但是客户往往并不能提供详细的硬件配置清单,仅仅能提供系统管理员的密码。所以我总结了一些查看服务器情况的命令,它们可以很清楚地反映Linux服务器的状态、性能等详细信息。以下内容完全出自项目的实践总结,也希望大家能够熟练掌握,以方便自己工作。1.2.1 查看Linux服务器的CPU详细情况

判断Linux服务器CPU情况的依据如下:

具有相同core id的CPU是同一个core的超线程。(Any cpu with the same core id are hyper-threads in the same core.)

具有相同physical id的CPU是同一个CPU封装的线程或核心。(Any cpu with the same physical id are threads or cores in the same physical socket.)

下面以笔者自己的PowerEdge 2850为例进一步进行说明。

物理CPU个数如下所示:

[root@localhost~]#cat/proc/cpuinfo|grep"physical id"|sort|uniq|wc-l

2

每个物理CPU中core的个数(即核数)如下所示:

[root@localhost~]#cat/proc/cpuinfo|grep"cpu cores"|uniq

cpu cores:1

逻辑CPU的个数如下所示:

[root@localhost~]#cat/proc/cpuinfo|grep"processor"|wc-l

4

另外,在Windows 2003中,逻辑CPU的个数可以通过任务管理器(调出命令是taskmgr)“性能”下的“CPU使用”情况看出。如图1-22所示是我的AMD双核速龙5500+的“CPU使用”情况。图 1-22 Windows 2003下的任务管理器

其实大家从这里就可以看出来,按理说物理CPU个数×核数就应该等于逻辑CPU的个数,如果不相等的话,则表示你的服务器CPU支持超线程技术。我们在配置服务器的应用时,应以服务器的逻辑CPU的个数为准。1.2.2 查看Linux服务器的内存使用情况

查看Linux服务器下的内存使用情况,可以使用命令free-m。注意此命令只在Linux下有效,在FreeBSD中没有此命令。命令如下所示:

total:内存总数

used:已经使用的内存数

free:空闲的内存数

shared:多个进程共享的内存总额

-buffers/cache:(已用)的内存数,即used-buffers-cached

+buffers/cache:(可用)的内存数,即free+buffers+cached

得出结论:

可用内存的计算公式为:

可用内存=free+buffers+cached,即2551MB+268MB+917MB=3737MB

很久以前在笔记本上用Ubuntu8.04时就觉得Linux管理内存的机制非常优秀,简而言之:Linux的内存是拿来用的,而不是拿来看的。我与一个朋友探讨Linux的使用情况时,他问我为什么Linux使用的内存这么高。他机器上1GB的内存free才232MB,而Windows XP才用了200MB不到的样子。这其实是被Linux的free命令之表象迷惑了,Linux的内存使用是很有讲究的。还是举例说明,如下的free命令所显示的是当前内存的使用情况,-m的意思是用M个字节来显示内容,我们来一起看看。

#free-m

total used free shared buffers cached

Mem:1002 769 232 0 62 421

-/+buffers/cache:286 715

Swap:1153 0 1153

在第一部分Mem行中有如下参数。

total:内存总数,即1002MB

used:已经使用的内存数,即769MB

free:空闲的内存数,即232MB

shared:当前已经废弃不用,总是0

buffers Buffer:缓冲内存数,即62MB

cached Page:缓存内存数,即421MB

其中,内存总数与已使用内存数和空闲内存数的关系是:

total(1002M)=used(769M)+free(232M)

在第二部分内容(-/+buffers/cache)中各参数如下所示。(-buffers/cache):used内存数,即286MB(指的是第一部分Mem行中的used-buffers-cached)。(+buffers/cache):free内存数,即715MB(指的是第一部分Mem行中的free+buffers+cached)。

可见-buffers/cache反映的是被程序实实在在用掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换(swap)分区,大家应该都明白,这里就不再讲了。

有可能大家看了上面的解释还是不太明白。比如:第一部分(Mem)与第二部分(-/+buffers/cache)的结果有关,used和free为什么这么奇怪?其实我们可以从两个方面来分析。对操作系统来讲这两项是Mem的参数,buffers/cached都属于被使用,所以它认为free只有232MB;对应用程序来讲+buffers/cached等同于可用的内存,因为buffer/cached可提高程序执行的性能,当程序使用内存时,buffer/cached很快就会被使用。所以从应用的角度来看,应以(-/+buffers/cache)的free和used为主,即我们主要看与它相关的free和used就可以了。另外告诉大家一些常识,为了提高磁盘和内存的存取效率,对Linux做了很多精心的设计,除了对dentry进行缓存(用于VFS、加速文件路径名到inode的转换)外,还采取了两种主要Cache方式:Buffer Cache和Page Cache。前者用于针对磁盘块的读写,后者用于针对文件inode的读写。这些Cache能有效地缩短I/O系统调用(比如read、write、getdents)的时间。

在Linux中,内存是拿来用的,不是拿来看的。而在Windows中,无论你的真实物理内存有多少,它都会用硬盘交换文件来读,即使是内存还有一大部分。这也就是Windows常常提示虚拟空间不足的原因。可以想见,硬盘怎么会快过内存,所以我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不用担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了。这也是在Linux服务器上看内存是否够用的标准。1.2.3 查看Linux服务器的硬盘使用情况

想要了解Linux服务器的硬盘使用情况,可以根据以下步骤来查看。

1)查看硬盘及分区信息,如下所示:

以上表明这是一块0.15TB的服务器硬盘。

2)检查文件系统的磁盘空间占用情况,如下所示:

[root@localhost~]#df-h

3)查看硬盘的I/O性能,如下所示:

[root@localhost~]#iostat-d-x-k 1 10

其中,iostat是含在套装sysstat中的,在Centos5.5下可以用命令yum-y install sysstat来安装,我们可以通过如下命令查看iostat的返回结果:

参数说明:

rrqm/s:每秒进行merge的读操作数目,即delta(rmerge)/s。

wrqm/s:每秒进行merge的写操作数目,即delta(wmerge)/s。

r/s:每秒完成的读I/O设备的次数,即delta(rio)/s。

w/s:每秒完成的写I/O设备的次数,即delta(wio)/s。

rsec/s:每秒读扇区数,即delta(rsect)/s。

wsec/s:每秒写扇区数,即delta(wsect)/s。

rkB/s:每秒读K字节数。是rsect/s的一半,因为每扇区大小为512字节。

wkB/s:每秒写K字节数。是wsect/s的一半。

avgrq-sz:平均每次设备I/O操作的数据大小(即扇区),即delta(rsect+wsect)/delta(rio+wio)。

avgqu-sz:平均I/O队列的长度,即delta(aveq)/s/1000(除以1000是因为aveq的单位为毫秒)。

await:平均每次设备I/O操作的等待时间(单位:毫秒),即delta(ruse+wuse)/delta(rio+wio)。

svctm:平均每次设备I/O操作的服务时间(单位:毫秒),即delta(use)/delta(rio+wio)。

%util:一秒中有百分之多少的时间用于I/O操作,或者说一秒中有多少时间I/O队列是非空的,即delta(use)/s/1000(因为use的单位为毫秒)。

大家看着这些参数和名词解释可能不太明白,其实在工作中我们只关注以下几个方面即可:

如果%util接近100%,说明产生的I/O请求太多,I/O系统已经满负荷,该磁盘可能存在瓶颈。

如果idle小于70%,I/O的压力就比较大了,说明读取进程中有较多的wait。同时还可以结合vmstat查看b参数(等待资源的进程数)和wa参数(I/O等待所占用的CPU时间的百分比,高过30%时I/O的压力就比较高了),帮助了解I/O的负荷情况。

另外还可以参考如下一些情况:svctm应小于await,因为同时等待请求的等待时间被重复计算了。一般来说,svctm的大小和磁盘性能有关,CPU/内存的负荷也会对其有一定的影响,请求过多就会间接导致svctm增加。

await的大小一般取决于服务时间(svctm)以及I/O队列的长度和I/O请求的发出模式。如果svctm比较接近await,说明I/O几乎没有等待时间;如果await远大于svctm,说明I/O队列太长,应用得到的响应时间也变长。如果响应时间超过了用户允许的范围,这时就可以考虑更换更快的磁盘、调整内核elevator的算法、优化应用或者升级CPU。

队列长度(avgqu-sz)也可作为衡量系统I/O负荷的指标,但由于avgqu-sz是按照单位时间计算出来的平均值,所以不能反映瞬间的I/O洪水。

4)查看Linux系统中某目录的大小,这在工作中经常会遇到。我们可以用命令:du-sh目录名来查看,如下所示:

[root@localhost/]#du-sh/root

1.2M/root

检查是否有分区使用率(Use%)过高(比如超过90%)的情况,如发现某个分区空间接近用完,可以进入该分区的挂载点,用以下命令找出占用空间最多的文件或目录,然后按照从大到小的顺序,找出系统中占用最多空间的前10个文件或目录。

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载