从u盘安装centos 5.3到服务器

On 2009年10月19日, in 未分类, by admin
20

作者:田逸(sery@163.com)  如需转载请注明出处及署名,否则追究责任。

前几天,买服务器,供货商赠送1个8G的U盘,于是我就想拿这个U盘来做一个centos的安装盘。这样做的好处主要有3点:保存较长的时间(dvd盘放置一段时间就脏了,再拿来装系统很不容易成功。曾经有惨痛的教训啊!)、安装速度快、省事(相对与网络安装,不需要弄tftp、nfs等)。

基本想法

1、所有需要的东西都在u盘,如镜像文件、引导系统所需的文件等。这样做的目的就是不再需要借助其他资源来完成安装。

2、安装自动进行。分区、软件包的选择等都是自动完成,大大加快了安装的速度。

3、centos被安装到服务器的硬盘而不是u盘。网上有不少文章,是把系统安装到u盘的,这种方法,不是服务器所需要的。

U盘安装系统时磁盘的命名规则

服务器自己的硬盘被当成sda,u盘被当成sdb。这个要弄清楚。

安装前的处理

安装本身是很容易的事情,更何况是自动安装。而安装前所需要做的工作,才是比较费事和容易出问题的了,因此这里用较多的篇幅来叙述这个过程。

(一)准备所需要的软件。它包括Centos镜像(DVD)文件和windows版的syslinux.exe文件。当然可以直接用linux系统自带的syslinux,不过linux的syslinux做引导处理有点麻烦,所以改用windows版的syslinux.exe.麻烦在哪里?执行完syslinux -s /dev/sda1 后还要来个dd 操作。

(二)准备两个操作系统,一个windows,一个linux.windows用来做引导–写mbr和生成ldlinux.sys;linux用来创建分区、拷贝文件等。

(三)先在linux系统上进行如下操作:

1、下载centos镜像文件。这个文件很大,网上有完整的dvd镜像下载(一个文件这种),可用的下载地址为: http://mirrors.rit.edu/centos/5.3/isos/i386/CentOS-5.3-i386-bin-DVD.iso .我把它用wget下载到/root目录。

2、挂接这个镜像文件,以便我们可以使用镜像文件里的目录。mount -o loop /root/CentOS-5.3-i386-bin-DVD.iso  /mnt/ios 执行命令 cd /mnt/iso,可以像浏览dvd光盘一样查看目录及其里面的文件。

3、把U盘插入linux服务器,然后执行fdisk -l检查是否被识别。在我的系统里,它被识别为/dev/sdb.

(1)创建2个分区,使用的命令是#fdisk /dev/sdb , 以菜单的方式创建 /dev/sdb1和/dev/sdb2两个分区。其中/dev/sdb1给512M的空间,其余的留给/dev/sdb2.一定需要两个分区么?不是的。我这样干的目的是我对/dev/sdb1进行操作的时候,不会把镜像文件弄丢了(镜像文件3.8G,拷贝起来还是很费时间的)。

(2)创建好分区后,需要在上面创建文件系统,这个不难,其命令无非 #mkfs.msdos  /dev/sdb1 ;mkfs.ext2 /dev/sdb2,执行成功后,就产生一个dos分区和一个ext2分区。请注意,这里是ext2文件系统而不是ext3,因为syslinux好像只跟dos和ext2文件系统友好。

(3)把这个两个分区挂接到linux系统,我使用的挂接目录是/mnt/usb1和/mnt/usb2.

(4)复制目录及文件。需要复制的目录是/mnt/iso/isolinux,需要复制的文件是/root/anaconda-ks.cfg.文件/root/anaconda-ks.cfg不是必须的,为了能自动安装centos,所以使用了这个文件。

1)      拷贝isolinux目录(注意改了目录的名称,以便syslinux能正常工作)cp –a /mnt/iso/isolinux /mnt/usb1/syslinux 2)      拷贝anaconda-ks.cfg文件(任何安装完成的centos系统都会在/root目录自动生成这个文件)cp /root/anaconda-ks.cfg  /mnt/usb1

3)      拷贝dvd镜像文件

cp /root/CentOS-5.3-i386-bin-DVD.iso /mnt/usb2

4)改文件名 /mnt/usb1/syslinux/isolinux.cfg为/mnt/usb1/syslinux/syslinux.cfg

mv /mnt/usb1/syslinux/isolinux.cfg /mnt/usb1/syslinux/syslinux.cfg

 

 4、修改文件 /mnt/usb1/syslinux/syslinux.cfg,其修改后的内容如下:

default linux

prompt 1

timeout 600

display boot.msg

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label linux

  kernel vmlinuz

  append initrd=initrd.img

label text

  kernel vmlinuz

  append initrd=initrd.img text

label ks

  kernel vmlinuz

  append ks=hd:sdb1:/anaconda-ks.cfg initrd=initrd.img

label local

  localboot 1

label memtest86

  kernel memtest

  append -

 

 “append ks=hd:sdb1:/anaconda-ks.cfg initrd=initrd.img”这一行是做了修改的,其作用是以硬盘方式(u盘也被认为是硬盘)引导系统,其所需的centos镜像文件在u盘的第二个分区,并且使用kickstart自动安装,指定kickstart配置文件的路径为/anaconda-ks.cfg,即u盘第一个分区的根目录下。

5、修改文件/mnt/usb1/anaconda-ks.cfg,使其内容如下:

# Kickstart file automatically generated by anaconda.

install

harddrive –partition=sdb2 –dir=

lang en_US.UTF-8

keyboard us

text

rootpw  123456

firewall –enabled –port=22:tcp

authconfig –enableshadow –enablemd5

selinux –enforcing

timezone –utc America/New_York

bootloader –location=partition –driveorder=sda

# The following is the partition information you requested

# Note that any partitions you deleted are not expressed

# here so unless you clear all partitions first, this is

# not guaranteed to work

clearpart –linux

part / –fstype ext3 –size=20000

part /var –fstype ext3 –size=20000

part /usr –fstype ext3 –size=20000

part /data –fstype ext3 –size=1 –grow

part swap –size=4096

%packages

@development-libs

@system-tools

@core

@base

@network-server

@admin-tools

@development-tools

audit

kexec-tools

device-mapper-multipath

imake 

 

 6、拔出u盘,把它插在windows系统的机器上,然后执行命令 syslinux.exe  -a -m  i: 就开始写mbr和生成文件ldlinux.sys文件。注意u盘在linux下分了2个区,在windows下只能识别被格式化成的dos的那个分区(/dev/sdb1)。到这一步,前期的处理基本完成了。

开始安装

把处理好的u盘插如欲安装系统的服务器,然后开机,把引导设备改成u盘。无误后,片刻出现centos 的安装界面,这个界面会有一个syslinux.cfg关键字错误的提示,不用理会,直接输入 ks 回车,安装自动开始,2-3分钟就自动安装完毕。

需要注意一点,以我这个anaconda-ks.cfg的设置来安装系统的话,硬盘的分区将重新格式化。我们可以根据自己的需要来编写这个文件,使之符合我们的实际需求。

Tagged with:
 

hadoop-0.20.1部署手记

On 2009年10月15日, in 云计算, by admin
10

作者:田逸(sery@163.com)  如需转载请注明出处及署名,否则追究责任。

因为需要分析大量的访问日志,现有的分析方式(单机)不能满足需求,因此需要部署hadoop来解决这个问题。在我做分布式文件系统之前,曾经部署测试过hadoop,使用的版本为hadoop-0.19.0,记得当时配置起来很快就成功了。这次测试,我使用的是最新版本hadoop-0.20.1,在部署过程中,花了不少时间才做成功(2天)。为备忘,特记录之。
(全文 …)

Tagged with:
 

lvs负载均衡

On 2009年10月13日, in 未分类, by admin
21

 第六章  负载均衡及服务器集群(lvs)

 作者:田逸(sery@163.com

在互连网应用技术里,负载均衡一直是热门话题,本书讨论的负载均衡技术,包括但不限于负载均衡本身。使用负载均衡技术主要的目的包括如下几点:

◆     系统高可用性。组成系统的某些设备或部件失效,并不会影响正常的服务。

◆     系统可扩展性。用户的增加,引起访问数乃至流量的增加,这种情形下,需要对系统进行扩容,以应对这种快速增长。对于提供高可用服务的互联网网站,其对可扩展的基本要求就是在保持系统服务不终止的情况下,透明的扩充容量,即用户不知道扩容的存在,或者说是扩容不对现有的服务产生任何负面作用。这些扩展主要包括:带宽扩展、服务器扩展、存储容量扩展、数据库扩展等,当然也包括主机增加内存等方面的扩展。

◆     负载均衡能力。一个应用或服务由数个物理服务器提供,并且每个物理服务器运行的应用或服务是相同的,我们可以让用户的访问通过某种控制策略,把负载分摊到不同的物理服务器,从而保持每个物理服务器有比较合理的负载。当整个系统的负载趋于饱和时,通过增加物理服务器和扩充物理带宽来解决这个麻烦。增加物理服务器以后,系统的负载情况将重新在所有集群的物理服务器之间按照指定的算法重新达到新的均衡。

 

一个完整的负载均衡项目,一般由虚拟服务器、故障隔离及失败切换3个功能框架所组成。

  (全文 …)

论坛升级/迁移实录

On 2009年10月5日, in 未分类, by admin
5

作者:田逸(sery@163.com)  如需转载请注明出处及署名,否则追究责任。

一、目标:

论坛由discuz6升级为discuz7.理由是安全问题(同事的看法)。

二、升级前的状况

(一)论坛逻辑结构

本论坛由3层结构所组成,包括负载均衡器(lvs+keepalived)、应用服务器(php+apache)以及共享文件系统(nfs)和mysql数据库。

1、负载均衡器由2个物理服务器充当,它的作用包括负载均衡、故障隔离和失败切换(failover).负载均衡负责把用户的访问按指定的算法分摊到多个应用服务器;故障隔离是当某个应用服务器出现故障后,负载均衡器将其从转发队列清理出去,从而使用户的访问不受影响;失败切换发生在负载均衡器之间,当主负载均衡器出故障时,备份负载均衡器智能地接替它的所有工作。

2、应用服务器由4个物理服务器组成,每个服务器的软件配置是一样的,即安装apache+php,它们的安装位置为/usr/local/apache及/usr/local/php。apache以虚拟机的方式发布站点(除了bbs外,还有其他站点),这种方式,对apache的主配置文件修改较少,操作起来比较安全省事。bbs的根文档位置统一为/data/html/bbs,目录/data为单独的磁盘分区。由于是服务器集群,discuz需要共享2个目录:attachments(附件存放)和forumdata(缓存目录),这2个目录通过一个nfs服务器或其他方式来共享。

3、 共享服务器(nfs)及数据库服务器。4个应用服务器通过nfs客户端形式挂接共享,共享出来的目录2个:attachments及forumdata。挂接的共享点为/data,attachments及forumdata为其子目录。数据库服务器2个,mysql主从复制。discuz使用的数据库名称为bbs.

论坛层次图

discuz1

(二)验证方式

验证方式为自己的passport服务器,而不是discuz的验证中心。

 

三、升级论坛容易出问题的地方或需要特别小心的地方

1、共享目录forumdata.因为discuz6与discuz7的生存的文件是不一样的,如果2个版本使用同一个forumdata共享目录,将出现意外。

2、数据库。discuz7的数据库由discuz6升级而来,与discuz6的数据库相比较,表的数量增加了,同名的表的字段数也有很多变化。

 

四、升级准备

1、准备一个维护页面,上面的内容为“论坛维护中。。。”

2、从集群中取出2个服务器,使这2个服务器的默认页面为维护页面–用户打开论坛,显示“论坛维护中。。。”

3、负载均衡器的配置文件keepalived.conf注释掉要升级的两个服务器的ip。

4、完成上述3步以后,数据库将不再有数据写入了。这时执行mysql命令 mysqldump  bbs -ppassword | mysql  discuz -ppassword  就复制数据库bbs到新的数据库discuz.升级过程,我们使用数据库discuz,就不会对原始数据造成危害。玩意升级不成功,还可以用bbs这个库回退到原来的discuz6。

 

五、开始升级

1、停掉欲升级discuz服务器的apache,备份原网站的目录 cd /data/html; mv bbs  bbs_d6 。然后上传或复制discuz7的目录和文件到/data/html,并命名为bbs.注意目录的权限。

2、在nfs服务器上的共享目录/opt/store创建目录/opt/store/bbs.mx/forumdata_d7(旧版本用的共享目录为/opt/store/bbs.mx/forumdata),然后创建链接文件  ln -s /opt/store/bbs.mx/forumdata_d7  /data/html/bbs/forumdata (注:nfs挂接目录为/opt/store/);查看/data/html/bbs/formudata目录的cache是否存在,并给777权限。再创建一个链接文件 ln -s /opt/store/bbs/attachments  /data/html/bbs/attachments ,以便使用 discuz6的附件。

3、修改discuz7的配置文件 /data/html/bbs/config.inc.php,指定数据库为discuz(数据由bbs库复制而来),用户名为mx_discuz,还有正确的输入数据库连接密码。

4、在数据库服务器上创建用户mx_discuz,并正确授权。mysql> grant all on discuz.*  to ‘mx_discuz’@’192.168.%’ identified by ‘password’; 创建完成后,在升级的服务器上用mysql -h mysql_ip  -u mx_discuz -p手动连接一下数据库,看是否成功。

5、启动升级discuz服务器的apache服务,然后查看服务是否正常运行。无误后在浏览器中输入 http://服务器ip/d60to70.php,然后等待漫长的升级。这个过程很长,大概4-5小时,因为它要修改表结构。可以通过对比数据库bbs和discuz来确定这些变化–discuz库增加了很多表。

6、第5步完成后,登入后台设置一下。

7、绑定域名,访问 http://bbs.maxthon.cn 看是否正常。

 

六、测试

1、发动qq群里的用户直接访问测试,看是否正常(第一次升级过程因为discuz6的首页插件,导致大量的数据库锁定,从而升级失败)。

2、压力测试。使用web压力测试工具,有专门的测试人员进行。

 

七、善后工作

1、在第2个服务器上重复第“五”节的“1、2(只需要创建链接文件),3,7“几步。

2、修改负载均衡器的配置文件keepalived.conf,取消提供维护页服务的服务器ip,而把刚升级完的两个服务器ip启用。完成重启keepalived ,用户访问到的即是升级到discuz7的论坛。等几天访问都没问题后,再把其它两个服务器也升级加入集群。

Tagged with:
 

xen 虚拟环境测试

On 2009年10月3日, in 未分类, by admin
6

作者:田逸(sery@163.com)  如需转载请注明出处及署名,否则追究责任。

一、术语

母机:安装虚拟机的宿主环境,xen称demain-0

二、测试环境

1、母机系统

[root@sdwf-2 ~]# more /etc/issue
CentOS release 5.2 (Final)

2、母机支持pae

[root@sdwf-2 ~]# uname -r
2.6.18-164.el5PAE

三、测试过程

(1)在母机安装xen相关组件

[root@sdwf-2 ~]#yum install xen  kernel-xen xen-lib virt-manager python-virtinst

安装完毕,会在/etc下生成目录/etc/xen,其他一些地方也会复制文件过去,如:/usr/sbin/xm等。还有一个重要的文件被修改,它就是 /boot/grub/grub.conf,其增加的文本块如下:

title CentOS (2.6.18-164.el5xen)
root (hd0,0)
kernel /boot/xen.gz-2.6.18-164.el5
module /boot/vmlinuz-2.6.18-164.el5xen ro root=LABEL=/
module /boot/initrd-2.6.18-164.el5xen.img

这是自动生成的哟!要使母机系统开机支持xen,则需在这里顺便修改这个文件第10行,使“default=0”。

(2)母机上启动nfs客户端

service portmap start

service nfslock start

我要使用nfs服务器来安装虚拟机的操作系统,因此必须启用nfs客户端相关服务。

注:鸟哥的文章还有一个创建2个咚咚:创建大文件”dd if=/dev/zero of=xen.img bs=1M count=5000“ 以及手动新增一行”co:2345:respawn:/sbin/agetty xvc0 9600 vt100-nav“到文件inittab ,在本实验中,均不需要。

(3)准备nfs服务器:最好是单独的物理服务器

1、下载centos dvd iso文件。

2、创建目录 /mnt/mycentos ,然后挂载iso镜像

[root@test-173 ~]#mount -o loop /root/CentOS-5.3-i386-bin-DVD.iso /mnt/mycentos

进入目录 /mnt/mycentos执行ls 等查看一下是否正常。

3、配置nfs输出。修改空文件/etc/exports,新增一行如下:

/mnt/mycentos   *(ro)

保存后,启动nfs相关服务,包括:

service  portmap start

service  nfs   start

service nfslock start

然后在母机(前面描述的那个机器)上执行 showmount -e 192.168.1.173 看输出是否正常。

(4)母机上安装系统:


[root@sdwf-2 xen1]#virt-install -n centos5_virt1 -r 2048 -f /data/xen1/centos5.virt1.img –nographics -l nfs:192.168.1.173:/mnt/mycentos

按回车后,会提示输入使用空间的大小,即本例中“/data/xen1/centos5.virt1.img”的大小,单位是G,莫吝啬,给它10G无妨。特别要注意的是选项”-r”  指定内存大小,如果有多个虚拟机,必须事先规划,如要安装3个虚拟机,每个虚拟机2g内存,则物理内存至少要8G。如果这步正确执行,则进入与真实物理机安装centos操作系统相似的情形,不再赘述。安装结束,自动生成 /etc/xen/centos5_virt1配置文件,可以进去翘一眼,顺便对比一下鸟哥的文档http://linux.vbird.org/linux_enterprise/xen.php,将有更深的理解。

(5)检查

安装完系统后,如果没有异常,虚拟机会自动运行起来。问了用xm管理虚拟机,需要启用xend服务。值得注意的是, xend关闭后,虚拟机依然正常运行。执行 xm list查看虚拟机的情况。奇怪的是,当输出为:

[root@sdwf-2 xen]# xm list
Name                                      ID Mem(MiB) VCPUs State   Time(s)
Domain-0                                   0      457     4 r—–   1767.9
centos5_virt                              24     2045     2 -b—-      8.8
centos5_virt1                             25     1279     1 -b—-     13.2
centos5_virt2                             29      255     1 -b—-     12.9

stat 是b(block), 但居然能正常访问,不知为何?

四、虚拟机随母机自动重启

把安装过程中生成的配置文件,如本例中的”centos5_virt1“ 等复制到目录 /etc/xen/auto即可

Tagged with: