分类: LINUX
2010-03-19 23:04:33
Linux服务器集群的配置
一、计算机集群简介
计算机集群简称集群是一种计算机系统, 它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。
二、集群的分类
群分为同构与异构两种,它们的区别在于:组成集群系统的计算机之间的体系结构是否相同。集群计算机按功能和结构可以分成以下几类:
集群 High-availability (HA) clusters
集群 Load balancing clusters
集群 High-performance (HPC) clusters
计算 Grid computing
高可用性集群
一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。
负载均衡集群
负载均衡集群运行时一般通过一个或者多个前端负载均衡器将工作负载分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群有时也被称为服务器群(Server Farm)。 一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。
Linux虚拟服务器(LVS)项目在Linux操作系统上提供了最常用的负载均衡软件。
高性能计算集群
高性能计算集群采用将计算任务分配到集群的不同计算节点而提高计算能力,因而主要应用在科学计算领域。比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPC cluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。
HPC集群特别适合于在计算中各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。
网格计算
网格计算或网格集群是一种与集群计算非常相关的技术。网格与传统集群的主要差别是网格是连接一组相关并不信任的计算机,它的运作更像一个计算公共设施而不是一个独立的计算机。还有,网格通常比集群支持更多不同类型的计算机集合。
网格计算是针对有许多独立作业的工作任务作优化,在计算过程中作业间无需共享数据。网格主要服务于管理在独立执行工作的计算机间的作业分配。资源如存储可以被所有结点共享,但作业的中间结果不会影响在其他网格结点上作业的进展。
三、linux集群的详细配置
下面就以WEB服务为例,采用高可用集群和负载均衡集群相结合。
1、系统准备:
准备四台安装Redhat Enterprise Linux 5的机器,其他node1和node2分别为两台WEB服务器,master作为集群分配服务器,slave作为master的备份服务器。
所需软件包(依赖包没有列出):
httpd-
heartbeat-
heartbeat-ldirectord-
libnet-
heartbeat-devel-
heartbeat-pils-
perl-MailTools-1.77-1.el5.noarch.rpm
heartbeat-gui-
heartbeat-stonith-
2、IP地址以及主机名如下:
192.168.0.181 master.example.com
192.168.0.182 slave.example.com
192.168.0.184 node1.example.com
192.168.0.185 node2.example.com
3、编辑各自的hosts和network文件
master
# vim /etc/hosts 添加以下两行
192.168.0.181 master.example.com
192.168.0.182 slave.example.com
# vim /etc/sysconfig/network
HOSTNAME=master.example.com
slave
# vim /etc/hosts 添加以下两行
192.168.0.181 master.example.com
192.168.0.182 slave.example.com
# vim /etc/sysconfig/network
HOSTNAME=slave.example.com
node1
# vim /etc/hosts 添加以下两行
192.168.0.184 node1.example.com
192.168.0.185 node2.example.com
# vim /etc/sysconfig/network
HOSTNAME=node1.example.com
node2
# vim /etc/hosts 添加以下两行
192.168.0.184 node1.example.com
192.168.0.185 node2.example.com
# vim /etc/sysconfig/network
HOSTNAME=node2.example.com
注:为了实验过程的顺利,请务必确保network文件中的主机名和hostname命令显示的主机名保持一致,由于没有假设DNS服务器,故在hosts文件中添加记录。
4、架设WEB服务,并隐藏ARP
node1
# yum install httpd
# vim /var/www/html/index.html
添加如下信息:
This is node1.
# service httpd start
# elinks node1.example.com
访问测试,正确显示
隐藏ARP,配置如下
# echo 1 >> /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 1 >> /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 >> /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 2 >> /proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0 192.168.0.183 netmask 255.255.255.255 broadcast 192.168.0.183 up
# route add -host 192.168.0.183 dev lo:0
node2
# yum install httpd
# vim /var/www/html/index.html
添加如下信息:
This is node2.
# service httpd start
# elinks node2.example.com
访问测试,正确显示
隐藏ARP,配置如下
# echo 1 >> /proc/sys/net/ipv4/conf/lo/arp_ignore
# echo 1 >> /proc/sys/net/ipv4/conf/all/arp_ignore
# echo 2 >> /proc/sys/net/ipv4/conf/lo/arp_announce
# echo 2 >> /proc/sys/net/ipv4/conf/all/arp_announce
# ifconfig lo:0 192.168.0.183 netmask 255.255.255.255 broadcast 192.168.0.183 up
# route add -host 192.168.0.183 dev lo:0
master
# vim /var/www/html/index.html
添加如下内容:
The service is bad.
# service httpd start
slave
# vim /var/www/html/index.html
添加如下内容:
The service is bad.
# service httpd start
5、配置负载均衡集群以及高可用集群
小提示:使用rpm命令安装需要解决依赖性这一烦人的问题,可把以上文件放在同一目录下,用下面这条命令安装以上所有rpm包:
# yum --nogpgcheck -y localinstall *.rpm
master
# cd /usr/share/doc/heartbeat-
# cp ha.cf haresources authkeys /etc/ha.d
# cd /usr/share/doc/heartbeat-ldirectord-
# cp ldirectord.cf /etc
# cd /etc
# vim ha.cf
开启并修改以下选项:
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 30
udpport 694
bcast eth0
增加以下两项:
node master.example.com
node slave.example.com
# vim haresources
增加以下选项:
master.example.com 192.168.0.181 ldirectord::/etc/ldirectord.cf
为/etc/authkeys文件添加内容
# echo -ne "auth 1\n1 sha1 "(注意此处的空格) >> /etc/ha.d/authkeys
# dd if=/dev/urandom bs=512 count=1 | openssl md5 >> /etc/ha.d/authkeys
更改key文件的权限
# chmod 600 /etc/ha.d/authkeys
# vim /etc/ldirectord.cf
修改如下图所示:
slave
注:由于slave的配置跟master配置都是一样的可以用下面的命令直接复制过来,当然想要再练习的朋友可以自己手动再配置一边。
# scp /etc/ha.d
输入192.168.0.181的root密码
# scp /etc
输入192.168.0.181的root密码
6、启动heartbeat服务并测试
master & slave
# service heartbeat start
这里我就我的物理机作为客户端来访问WEB服务,打开IE浏览器(这里使用IE浏览器测试,并不是本人喜欢IE,而是发现用google浏览器测试,得出的结果不一样,具体可能跟两者的内核架构有关),输入,按F5刷新,可以看到三次是2,一次是1,循环出现。
7、停止主服务器,再测试其访问情况
master
# ifdown eth0
再次访问,可以看到,服务器依然能够访问。