如何实现Linux服务集群的高可用性(Heartbeat)

在服务器集群中还有一项就是服务的高可用性,为了保证我们的服务不被成为单点故障,为此我们使用heartbeat来解决这一点,简单点说,就是当我们的主服务器掉线的时候,我们的辅助节点服务器能够快速接管主节点服务器的服务,这样就保证了我们的服务不会出现单点故障了。(当然我们一下做的只是针对单点故障做的一个小实验而已,具体到应用的时候,心跳通信通道不会只有一条,还有服务器通常还会有共享存储设备,好了,不多说了,开始准备一下实验环境吧)

我们需要准备三台虚拟机:一台客户机,两台heartbeat服务器,其中这两个服务器先配置一个,另外一个根据以下步骤再配置)

实验拓扑图如下:

 

如何实现Linux服务集群的高可用性(Heartbeat)

 

 

实验步骤:

1先配置一下主节点:主机名设为:node1.example.com 

#vim  /etc/hosts

192.168.0.165.   node1.example.com  node1

192.168.0.166   node2.example.cm    node2

#vim  /etc/sysconfig/network

HOSTNAME=node1.example.com

#hostname  node1.example.com

#uname  –n (查看一下现在的主机名)

1.      配置一下ip地址

外网为192.168.0.165                               

心跳通道地址192.168.10.20                          

2.      安装并配置httpd服务

#yum  install  httpd.conf

#vim   /var/www/html/index.html

#service  httpd  start

#elinks  192.168.0.220

(测试一下www服务)

3.      开始配置heartbeat了:

先安装八个包:

libnet-1.4.3-el5.i386

heartbeat-2.1.4-9.el5.i386

heartbeat-devel-2.1.4.9.el5.i386

heartbeat-gui-2.1.4-9.el5.i386

heartbeat-ldirectord-2.1.4-9.el5.i386

heartbeat-pils-2.1.4.-10.el5.i386

heartbeat-stonith-2.1.4-10.el5.i386

perl-MailTools-1.77-1.el5.noarch

 

#yum  - -nogpgcheck install  *.rpm  可以将这几个包一起安装  (使用rpm来安装的话会有好多依赖关系要解决,建议还是使用yum来安装)

4.

#cd   /etc/ha.d/    (接下来拷贝几个重要的文件到该目录下)

#cp  /usr/share/doc/heartbeat-2.1.4/ha.cf       ./

#cp  /usr/share/doc/heartbeat-2.1.4/haresources  ./

#cp  /usr/share/doc/heartbeat-2.1.4/authkeys    ./

#ls  (查看一下是否复制完全)

#vim  authkeys

在最后添加两行

auth  1

1        sha1

(以上也可以使用以下命令来配置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

                (追加密钥)

#cat   authkeys   (查看一下,看密钥是否追加上了,密钥要跟1 sha1在同一行)

#chmod  0600  authkeys  (修改一下权限)

#vim  ha.cf

确保以下几行没有被注释掉

debugfile  /var/log/ha-debug

logfacility   local0

keepalive  2

deadtime   30

warntime   10

initdead   120

udpport   694

auto_failback  on

bcast  eth1

接着在最后添加以下两行

node  node1.example.com

node  node2.example.com

 

#vim   haresources  (设置浮动的ip和服务)

在文件中添加一下一行信息:

node1.example.com   192.168.0.169  httpd

#cd  /etc/ha.d  ( 将我们的httpd服务添加软连接到resource.d中:)

#ln  -s  /etc/init.d/httpd    /etc/ha.d/resource.d/

#cd  resource.d/

#ls (查看一下链接创建成功了没)

 

 

(为了让我们的实验简化,我们克隆一个虚拟机来做backup server辅节点吧。)

将主节点关机,然后克隆一个辅节点,不过我们要对辅节点修改一下,具体修改如下:

修改它的主机名

#vim  /etc/hosts

#vim  /etc/sysconfig/network

#hostname  node2.example.com

#uname  -n

修改它的ip地址

设置外网ip地址为192.168.0.166

内网心跳通信地址为192.168.10.30

#service  network   restart

测试一下整个网络的联通性:

#ping  192.168.0.165

#ping  192.168.0.166

#ping  192.168.10.20

#ping  192.168.10.30

 

最好在主节点和辅节点上都测试一下,看80服务开了没,

#netstat  -tnlp  | grep 80  

这个时候主节点和辅节点80端口应该都是没有开的

 

在主节点和辅节点上开启心跳服务

#service   heartbeat  start

#ifconfig  (在主节点上看一下,eth0:0这个浮动ip地址已经出现了)

 

 

 

 

如何实现Linux服务集群的高可用性(Heartbeat)

 

 

在主节点上查看80端口现在已经是开启的了

 

 

 

如何实现Linux服务集群的高可用性(Heartbeat)

 

 

 

这个时候在客户机上访问来测试一下

 

 

在主节点上

#cd   /usr/lib/heartbeat 

#./hb_standby将节点停掉,这样httpd服务就转移到辅节点了

 

在辅节点上查看:

 

 

 

如何实现Linux服务集群的高可用性(Heartbeat)

 

 

在客户机上访问一下192.168.0.169


 

(呵呵,辅节点就顺利的接替了主节点的资源)

 

使用抓包工具来测试一下:了解一下它们的心跳

#tcpdump  -i  eth1  udp   port  694

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywyjj.html