heartbeatV1+nfs实现高可用httpd

    随着互联网技术的不断发展,Web应用也越来越普遍,Web服务器的无故障工作时间就显得尤重要,但由于各种各样的原因,一台服务器并不能保证永远不出问题的运行,此时就需要一种机制来实现多台服务器共同为相同的来务功能提供服务,以确保任意一台服务器宕机后,不会影响其所承载的业务的访问。  

    下面演示使用HA工具heartbeatV1来实现Web应用的高可用性。

    注:由于条件所限,只能以一台NFS服务器做为后端的存储设备,其实这本身就一个单点故障风险点,在生产环境中应该有更加完善的存储解决方案。

    一、拓扑图

blob.png

    二、环境准备

        1、设置/etc/hosts

            为保证能够正常的解决到各节点的主机名,需要设置/etc/hosts文件,当然也可以设置DNS。

1.png            另外两台节点也做同样的设置。

        2、设置节点间的相互信任,即ssh密钥

2.png

        将密钥复制到另外两个节点:

3.png

        在另外node2和node3上做同样操作。

        3、同步各节点的时间

        4、下载heartbeat程序包 

            可以到下面的地址进行下载:http://down.51cto.com/data/1872114

     三、安装heartbeat程序

        安装heartbeat程序前需要先安装一些依赖的软件,请先自行配置好epel源及base yum源。

4.png

        hearbeat程序需要安装如下图所示的三个RPM包即可。

5.png

        在另外两个节点上做同样的操作。

    四、配置heartbeat

        将配置文件的模块复制到/etc/ha.d目录中。

5.png

        1、配置ha.cf文件

6.png

        ha.cf配置文件部分参数说明:

            autojoin none:集群中的节点不会自动加入;

            logfile /var/log/ha-log:heartbeat的日志存放位置;

            keepalive 2:指定心跳使用间隔时间为2秒(即每两秒钟发送一次广播);

            deadtime 30:指定备用节点在30秒内没有收到主节点的心跳信号后,则立即接管主节点的服务资源;

            warntime 10:指定心跳延迟的时间为十秒。当10秒钟内备份节点不能接收到主节点的心跳信号时,就会往日志中写入一个警告日志,但此时不会切换服务;

            initdead 120:在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为deadtime的两倍;

            udpport 694:设置广播通信使用的端口,694为默认使用的端口号。

            baud    19200:设置串行通信的波特率       

            bcast   eth0:Linux  指明心跳使用以太网广播方式,并且是在eth0接口上进行广播;

            mcast eth0 225.0.0.1 694 1 0:采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用;        ucast eth0 192.168.1.2:采用网卡eth0的udp单播来组织心跳,后面跟的IP地址应为双机对方的IP地址; 

                bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。

            auto_failback on:用来定义当主节点恢复后,是否将服务自动切回;

            stonith baytech /etc/ha.d/conf/stonith.baytech:stonith的主要作用是使出现问题的节点从集群环境中脱离,进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全性和完整性;

            watchdog /dev/watchdog:该选项是可选配置,是通过Heartbeat来监控系统的运行状态;

            ping 192.168.2.1:选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接;

            ping_group group1 192.168.12.120 192.168.12.237:类似于ping,ping一组ip地址。

        2、配置authkeys文件

            此文件用于配置认证相关的信息,文件权限必须为600。

            先生成一个随机码:

1.png

            在/etc/ha.d/authkeys文件中添加如下内容:

2.png

            注意两行中的数字1是相对应的,如果修改为其它数字,两行要同时修改。

            修改文件的权限:

3.png

        3、在haresources文件中添加资源

1.png

           注意:node1.test.com必须与uname -n所显示内容相同,192.168.2.100为VIP,即客户端访问的IP地址,httpd即指明高可用所针对的服务。

        4、将上面配置的三个文件复制到node2和node3上的相同目录中

2.png

3.png

        5、在三个节点分别安装httpd服务,并且在分别建立三个主页,主页内容分别为三个节点的主机名,并且启动httpd服务,测试是否可以访问页面的内容;主要是为了用于测试故障转移的效果,此操作就不做演示了。

        6、停止httpd服务,启动heartbeat服务

4.png

6.png

        7、验证

            查看VIP是否启动

7.png

8.png

9.png

        测试Web应用 

10.png

        将node1下线后,自动切换到node2节点上

11.png

        将node1与node2同时下线,node3就顶替了下来;

12.png

        ha.cf中的默认设置在node1上线后会自动恢复主节点的身份,请自行验证。

    五、设置NFS共享目录

        经过上面的设置,heartbeat已经可以正常工作了,下面我们来使用NFS共享来为httpd服务提供主页面。

        1、配置NFS服务器

            如果服务器上没有nfs软件请先安装nfs-utils软件。

            修改配置文件:

1.png

            启动nfs服务:

2.png

            本地验证:

3.png

        2、在共享目录中提供主页

4.png        3、在节点服务器上停止heartbeat服务,并启动httpd服务

5.png

        4、挂载NFS共享目录,并访问测试

6.png

            由于是最小化安装,在挂载nfs时会报上面的错误,安装showmount命令后即可解决。

7.png

            使用curl命令来测试,可以访问,如下图所示:

8.png

            在其它节点上也可以按照上面的操作进行测试,确保nfs共享目录可以被挂载。

    六、修改haresources配置文件

        修改haresources配置文件,使heartbeat能够自动挂载nfs共享目录。

7.png

    七、停止httpd服务、卸载nfs共享目录并且启动heartbeat服务

        service httpd stop 

        umount /var/www/html

        service heartbeat start

        下面是heartbeat启动后的结果,可以看到nfs目录已经被自动挂载了。

8.png1.png

    八、将haresources文件复制到其它节点服务器上

2.png

    九、验证

        访问192.168.2.100可以访问到共享目录中创建的页面,并且即使有节点服务器宕机了,也不会影响页面的访问,请自行验证。

4.png

原创文章,作者:petmaster,如若转载,请注明出处:http://www.178linux.com/5565

(0)
petmasterpetmaster
上一篇 2015-06-25
下一篇 2015-06-26

相关推荐

  • 文本编辑器:vim 基础篇

       VI:Visual Interface,是一种文本编辑器,还是全屏编辑器。   VIM:Vi IMproved,vi的增强版,vim是模式化的编辑。 VIM的三种模式:        编辑模式(命令模式,默认模式)       插入模…

    Linux干货 2016-08-18
  • shll函数作业

    扫描/etc/passwd文件每一行,如发现GECOS字段为空,则填充用户名和单位电话为62985600,并提示该用户的GECOS信息修改成功。 [root@localhost sh.log]# cat whileGECOS.sh  #!/bin/bash #author:DYW #扫描/etc/passwd文件每一行…

    Linux干货 2016-08-24
  • M20 – 1- 第三周博客:Linux中的权限以及特殊权限

    上一篇讲到了用户与用户组,相信大家都明白了Linux中用户与用户组的含义和用处,那接下来讲的就是Linux中设置用户与用户组有使用权限。 Linux用户权限 何为权限,权限(privilege)是指某个特定的用户具有特定的系统资源使用权力,而权限又有哪几种呢。 Linux用户中主要针对三类着三种权限:读、写、执行,而Linux中存在着目录与文件,而目录的权限…

    Linux干货 2016-08-08
  • 计算机相关简介和linux相关简介

    一、计算机相关简介与linux的一些概念 计算机系统 由硬件(Hardware)系统和软件(Software)系统两大部分构成: 硬件系统 :CPU(控制器、运算器),内存储器(RAM、ROM),外存储器(硬盘等),输入设备(键盘、鼠标等),输出设备(显示器等),其他设备相关设备。  软件系统 :系统软件(操作系统,数…

    Linux干货 2017-02-18
  • web服务及常见配置

    一次HTTP请求过程1、建立连接:接收或拒绝连接请求2、接收请求:接收客户端请求报文中对某资源的一次请求的过程Web访问响应模型(Web I/O)单进程I/O模型:启动一个进程处理用户请求,而且一次只处理一个,多个请求被串行响应多进程I/O模型:并行启动多个进程,每个进程响应一个连接请求复用I/O结构:启动一个进程,同时响应N个连接请求实现方法:多线程模型和…

    Linux干货 2017-10-09
  • 【招聘】北京/互联网/运维工程师/7-15K/双休,五险一金

    岗位职责:   1、负责服务器的规划、调试优化、日常监控、故障处理、数据备份、日志分析等工作;   2、参与运维流程制定,确保任何突发情况都能高效响应;  3、负责服务器部署,对服务器构架和网络进行优化和改进;  4、负责运维相关数据的收集、分析和总结;  5、负责技术运维相关的文档、手册…

    Linux干货 2016-04-16