部署方案

1.1 方案设计

1.2 方案描述

如上图所示,我们要有三个可用的IP地址(切记不能与网络中其他机器IP重复),针对我使用的三个IP地址做如下说明:

10.16.252.10 //这个IP地址是心跳对外提供服务的IP地址,如果心跳检查绑定的应用程序的Apache,那这个地址就是外部访问Apache的地址;

10.16.252.6 //这个是主机(我用的是虚拟机)A的物理地址,绑定的网卡地址为eth0;

10.16.252.7 //这个是主机(我用的是虚拟机)B的物理地址,绑定的网卡地址为eth0;

为什么要强调绑定的网卡地址:应该心跳检查会通过绑定的网卡地址进行心跳信息的广播。

主机名说明:

主机(我用的是虚拟机)A的主机名:apache11

主机(我用的是虚拟机)B的主机名:apache12

在安装ubnutu的过程中会让你指定系统的主机名,可以随意指定的。如果安装的时候没有指定或是不知道主机名是什么,可以用linux命令:[uname –n]查看。也可以通过命令来修改主机名,ubnutu下主要修改/etc/hostname文件。

为什么强调主机名:因为在心跳组件heartbeat的配置过程中,需要指定主备节点的主机名。

2 环境配置

2.1 版本列表

功能模块

版本

下载

Apache

Apache2.2.22

http://httpd.apache.org/download.cgi

Heartbeat

 

sudo apt-get install heartbeat

Linux

ubuntu-11.10-dvd-i386.iso

 

VMware

VMware-workstation-full-7.1.1-282343.exe

 

说明: heartbeat心跳组件没有自己下载安装,而是采用ubnutu的apt-get 命令,这样的好处是它能够帮我们下载heartbeat所有依赖的主键,而且不需要我们去关注版本。

2.2 详细配置

2.2.1 具体配置

1) 编辑主机A的/etc/hosts文件

10.16.252.6 apache11 //主服务主机名

2) 编辑主机B的/etc/hosts文件

10.16.252.7 apache12 //备服务主机名

3) 在主机A和主机B上安装apache 并将apache设置为系统服务

例如:cp /usr/local/apache/bin/apachectl /etc/init.d/httpd

chkconfig --add httpd

chkconfig --level 2345 httpd on

4) 在主机A和主机B上修改Apache端口,位置apache安装目录下的httpd.conf配置文件中

将Listen地址改为 虚拟IP:80, 我这里的虚拟IP为10.16.252.10

Listen 10.16.252.10:80

5) 在主机A和主机B上安装linux心跳组件heartbeat,在各自的linux命令窗口执行以下命令

sudo apt-get install heartbeat

6) 在主机A和主机B上对heartbeat做如下配置

描述:heartbeat的配置有3个文件,分别是authkeys, ha.cf 和 haresources,而且这3个文件必须放在/etc/ha.d/文件夹下,在完成第5步后,我们可以通过以下命令得到并放置这3个配置文件:

sudo cp /usr/share/doc/heartbeat/authkeys /etc/ha.d/

sudo sh -c "zcat /usr/share/doc/heartbeat/ha.cf.gz > /etc/ha.d/ha.cf"

sudo sh -c "zcat /usr/share/doc/heartbeat/haresources.gz > /etc/ha.d/haresources"

配置:

(一)配置authkeys文件注意:这个配置文件在主机A和主机B上的配置必须是相同的

该文件的原始内容如下:

将红色箭头所在行的#去掉,并将auth 1 该为 auth 3,修改后内容如下

这个配置文件的权限必须的0600,要执行以下命令修改权限

chmod 0600 authkeys

(二)配置haresources 注意:这个配置文件在主机A和主机B上的配置必须是相同的

(主节点名称) (集群对外公布IP地址) (需要高可用的服务(httpd)需要将这个服务配置为系统服务)

(三)配置ha.cf文件

以上这些属性在ha.cf文件中有的默认是打开的,有的默认是关闭的(即前面有#注释),找到这些配置属性,去掉对应属性前面的#号(默认打开则不做变动),注意node 属性要做变动,我这里有两台linux服务节点,所以配置了2个nodo属性,node配置规则:

node 服务主机名 如: node apache11 //服务主机名在前文及步骤1中都有强调说明,可使用 uname –n 查看当前系统的服务主机名

这对整个配置文件,在主机A和主机B上的其他属性的配置可以相同也可以不同,但node属性的配置必须相同。

在以上的属性配置中,有一个udpport 的端口配置,要注意主机A和主机B的防火墙是否对694端口做了限制,可以执行以下命名让防火墙开放该端口,或者禁掉防火墙。

sudo iptables -I INPUT 2 -p udp --dport 694 -j ACCEPT

7) 心跳测试

因为我们在haresources配置文件中配置的主节点名称是apache11,所以我们先后启动apache11(主机A)主服务和apache12(主机B)备服务两台机器上的heartbeat组件:

sudo /etc/init.d/heartbeat start

两个主机上的heartbeat都启动成功后,通过集群对外公布IP地址访问Apache服务:http://10.16.252.10:80

如果能够访问Apache主页,说明heartbeat已经将集群对外公布IP绑定到了Apache服务上了。

接下来停止主服务器(主机A)上的heartbeat组件:

sudo /etc/init.d/heartbeat stop

然后再次访问http://10.16.252.10:80,如果依然能够访问该地址,说明心跳组件监测到了主服务的dead状态,并将Apache托管给了备服务器并对外提供服务。

2.2.2 参考资料

1.http://barkingiguana.com/2008/06/24/high-availability-apache-on-ubuntu-804/

2.http://blog.csdn.net/kobeyan/article/details/7587926

3. https://docs.google.com/document/pub?id=1WXq86ZVm6YdLZ0BCG5EB9dKA6CTM3uoXOaIv8m-hbaM

4. http://blog.csdn.net/edward852/article/details/6043185

我主要是参考1、2两份资料进行测试部署的。

Apache双机热备的更多相关文章

  1. HA(High available)--Heartbeat高可用性集群(双机热备)菜鸟入门级

    HA(High available)--Heartbeat高可用性集群(双机热备)   1.理解:两台服务器A和B ,当A提供服务,B闲置待命,当A服务宕机,会自动切换至B机器继续提供服务.当主机恢复 ...

  2. Nginx 反向代理、负载均衡、页面缓存、URL重写、读写分离及简单双机热备详解

    大纲 一.前言 二.环境准备 三.安装与配置Nginx  (windows下nginx安装.配置与使用) 四.Nginx之反向代理 五.Nginx之负载均衡  (负载均衡算法:nginx负载算法 up ...

  3. tomcate+keepalived配置双机热备

    环境清单: 应用1:192.168.51.101 应用2:192.168.51.75 虚拟IP:192.168.51.179 一.安装Tomcat(参照其他文档): 二.部署应用,并修改响应的端口(9 ...

  4. keepalived+nginx双机热备+负载均衡

    Reference: http://blog.csdn.net/e421083458/article/details/30092795 keepalived+nginx双机热备+负载均衡 最近因业务扩 ...

  5. 基于RHCS的web双机热备集群搭建

    基于RHCS的web双机热备集群搭建 RHCS集群执行原理及功能介绍 1. 分布式集群管理器(CMAN)  Cluster Manager.简称CMAN.是一个分布式集群管理工具.它执行在集群的各个节 ...

  6. Pacemaker实现双机热备

    在互联网高速发展的今天,尤其在电子商务的发展,要求服务器能够提供不间断服务.在电子商务中,如果服务器宕机,造成的损失是不可估量的.要保证服务器不间断服务,就需要对服务器实现冗余.在众多的实现服务器冗余 ...

  7. CentOS系统MySQL双机热备配置

    1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...

  8. MySQL 5.6 双机热备windows7

    MySQL 5.6 双机热备 目录: 1.说明 2.数据手工同步 3.修改主数据库配置文件 4.修改从数据库配置文件 5.主数据库添加备份用户 6.从数据库设置为Slave 7.验证 1.说明 1)数 ...

  9. Keepalived双机热备

    一,Keepalived双机热备的应用场景 1,网站流量不高,压力不大,但是对服务器的可靠性要求极其高,例如实时在线OA系统,政府部门网站系统,医院实时报医系统,公安局在线报案系统,股市后台网站系统等 ...

随机推荐

  1. 聊聊Java中的拆箱和装箱操作

    在刷谷歌面试题的过程中,发现一道有意思的题目,以前没有特别注意,忽略了一些东西,特此记录. 题目要求输出以下代码的结果: public class MyTest { public static voi ...

  2. PCL滤波介绍(2)

    (1)使用statisticalOutlierRemoval滤波器移除离群点 使用统计分析技术,从一个点云数据中集中移除测量噪声点(也就是离群点)比如:激光扫描通常会产生密度不均匀的点云数据集,另外测 ...

  3. 实现JTextfield 的右键 复制、剪切、粘贴功能。

    http://leagion.iteye.com/blog/572730 ——————————————————————————————————————————————————————————————— ...

  4. javascript验证键盘keycode

    document.onkeyup = function(event){ var event = event || window.event; alert(event.keyCode); }

  5. 25个顶级的jQuery表格插件

    jQuery 表格插件可以让你创建各种各样的表格布局,表格布局是报纸和杂志中最常见的布局,现在的网站中也很常见,在这篇文章中,我向大家推荐25个jQuery 的表格插件,你可以任意控制表格的行和列,用 ...

  6. 解决jar包乱码 in 创新实训 智能自然语言交流系统

    今天用eclipse的fat jar插件,打成jar包.之后再命令行运行...程序的功能是切分大的文件...结果是切分的很正确,但是里面的中文都变成了乱码. 最开始以为是在Eclipse中的编码设置有 ...

  7. 关于Unity中拖尾渲染器的使用

    拖尾渲染器 是一个组件,能够帮我们绘制出拖尾的效果. 就是跟在运动物体后面的东西,前进的过程中,末尾的不断消失,前面的不断生成,有一个长度.长度是以时间计算的,从末尾到头有多少秒的时间就是拖尾的长度. ...

  8. mysql insert exists || mysql 判断数据是否存在

    情景如下: "今日前端忽然说句, 我需要做个判断, 不能重复收藏, 我犹如颈有寒冰不寒而栗, 于是思考我该怎么做?为什么她都思考到了我没有思考到这是我的工作啊" 思考后得到三种解决 ...

  9. Tornado + Celery + RabbitMQ

    声明:代码是从项目中截取的, 为进行测试 使用Celery任务队列,Celery 只是一个任务队列,需要一个broker媒介,将耗时的任务传递给Celery任务队列执行,执行完毕将结果通过broker ...

  10. 【转】【Python】装饰器

    1.闭包 >>> def outer(): ... x = 1 ... def inner(): ... ... return inner >>> foo = ou ...