首页 > 代码库 > heartbeat httpd nfs 实现高可用web集群

heartbeat httpd nfs 实现高可用web集群

一 环境准备

二 拓扑结构

三 前提条件

四 安装相关软件

五 配置heartbeat

六 测试web集群

七 问题汇总

八 共享存储

一 环境准备

操作系统

centos 6.4 x86_64 最小化安装

如使用yum 安装的方式 centos5.5 安装的是V2.X ,centos 6.4 安装的是V3.X

YUM 安装 Vim man ntp “development tools” “server platform development” “desktop platform development”

配置 epel YUM 源

关闭 防火墙 selinux

二 拓扑结构

image_thumb1

三 前提条件(两个节点都有配置)

1 节点之间主机名可以互相解析

web1 ,web2

[root@web1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.200.132  web1.daphne.com  web1
192.168.200.133  web2.daphne.com  web2

2 节点之间时间同步

[root@web1 ~]# ntpdate ntp.api.bz

3 节点之间配置SSH互信

[root@web1 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘
[root@web1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@web2.daphne.com
[root@web1 ~]# ssh web2
[root@web2 ~]# 
 
[root@web2 ~]# ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ‘‘
[root@web2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@web1.daphne.com
[root@web2 ~]# ssh web1
[root@web2 ~]# 

四 安装相关软件

1 heartbeat 组件说明

  • heartbeat 核心组件
  • heartbeat-gui 图形管理接口
  • heartbeat-ldirectord 为lvs高可用提供规则自动生成及后端realserver健康状态检查组件
  • heartbeat-pils 装载库插件接口
  • heartbeat-stonith

2 安装heartbeat

heartbeat-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm
heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-stonith-2.1.4-12.el6.x86_64.rpm

yum install PyXML libnet pygtk2-libglade net-snmp-libs
yum install libtool-ltd( 注  要从源库安装 ,不可以epel)
lyum install  libnet
rpm -ivh heartbeat-*

3 安装httpd

[root@web1 ~]# yum install httpd
[root@web1 ~]# cd /var/www/html/
[root@web1 html]# vim index.html 
web1
[root@web1 ~]# service httpd start

测试

image_thumb11

测试完毕 关闭服务 使其开机不要启动

[root@web1 ~]# serivce httpd off
[root@web1 ~]# chkconfig httpd of
[root@web1 ~]# chkconfig --list httpd
httpd          	0:off	1:off	2:off	3:off	4:off	5:off	6:off

以上操作在两个节点都要做

五 配置heartbeat

1配置文件说明

[root@web1 ~]# cd /etc/ha.d/
[root@web1 ha.d]# ls
authkeys  harc         rc.d           resource.d
ha.cf     haresources  README.config  shellfuncs

说明 安装好的heartbeat 默认没有配置文件,但提供了配置文件样本

[root@web1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/
[root@web1 heartbeat-2.1.4]# ls 
apphbd.cf         faqntips.html        haresources         Requirements.html
authkeys          faqntips.txt         hb_report.html      Requirements.txt
AUTHORS           GettingStarted.html  hb_report.txt       rsync.html
ChangeLog         GettingStarted.txt   heartbeat_api.html  rsync.txt
COPYING           ha.cf                heartbeat_api.txt   startstop
COPYING.LGPL      HardwareGuide.html   logd.cf
DirectoryMap.txt  HardwareGuide.txt    README
我们需要  authkeys ha.cf haresources 三个配置文件
[root@web1 heartbeat-2.1.4]# cp authkeys ha.cf haresources /etc/ha.d/

2 配置authkeys

[root@web1 ha.d]# openssl rand -hex 8 >> authkeys 
[root@web1 ha.d]# vim authkeys 
auth 2
#1 crc
#2 sha1 HI!
#3 md5 Hello!
2 sha1 7c0f241959ee845d
[root@web1 ha.d]# chmod 600 authkeys 

3 配置ha.cf文件

[root@web1 ha.d]# vim ha.cf 

修改心跳信息的传播方式 可以采用 组播 广播 单播

bcast  eth0

配置集群中的节点数

node web1.daphne.com
node web2.daphne.com

4 配置haresources

[root@web1 ha.d]# vim haresources 
web1.daphne.com 192.168.200.10/24/eth0 httpd

5 复制以上三个文件到web2上

[root@web1 ha.d]# scp authkeys ha.cf haresources web2:/etc/ha.d/

6 启动web1与web2

先启动备份节点

[root@web2 ~]# service heartbeat  start
[root@web1 ~]# service heartbeat  start

六 测试web集群

查看IP

[root@web1 ha.d]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:7D:C1:D7  
          inet addr:192.168.200.132  Bcast:192.168.200.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe7d:c1d7/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:9069 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9159 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1707993 (1.6 MiB)  TX bytes:1846141 (1.7 MiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:7D:C1:D7  
          inet addr:192.168.200.10  Bcast:192.168.200.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
image_thumb12
故障演示
关闭web1上的heartbeat
[root@web1 ~]# service heartbeat stop
Stopping High-Availability services: 
Done.

查看web2上的IP

ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:61:E4:6B  
          inet addr:192.168.200.133  Bcast:192.168.200.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe61:e46b/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:8230 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8164 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1698974 (1.6 MiB)  TX bytes:1680369 (1.6 MiB)

eth0:0    Link encap:Ethernet  HWaddr 00:0C:29:61:E4:6B  
          inet addr:192.168.200.10  Bcast:192.168.200.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1


lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

测试

image_thumb15

 

七 问题汇总

节点间的文件同步

1Rsync+Inotify组合方案来解决节点之间的同步问题

2共享存储方案

八 共享存储

1 配置NFS服务器

[root@bogon ~]# yum install nfs*

[root@bogon ~]# mkdir -pv /web/html/
[root@bogon ~]# vim /web/html/index.html 

[root@bogon ~]# vim /etc/exports 
/web/html/ 192.168.200.0/24(rw,async)

[root@bogon ~]# service rpcbind start
[root@bogon ~]# service nfs start

节点测试 挂载

web1

[root@web1 ~]# mount -t nfs 192.168.200.138:/web/html /mnt
[root@web1 ~]# cd /mnt
[root@web1 mnt]# ls
index.html
[root@web1 ~]# umount /mnt

修改haresource文件

[root@web1 ha.d]# vim /etc/ha.d/haresources
web1.daphne.com 192.168.200.10/24/eth0 Filesystem::192.168.200.138:/web/html::/var/www/html::nfs  httpd

同步haresource配置文件

[root@web1 ha.d]# cd /etc/ha.d/
[root@web1 ha.d]# scp haresources web2:/etc/ha.d/

重启heartbeat

[root@web2 ~]# service heartbeat restart
[root@web1 ~]# service heartbeat restart

测试web服务

image_thumb17