1. 环境介绍

我这里弄了2个虚拟机,信息如下:

node1:192.168.168.201

node2:192.168.168.202

2.配置主机名

[root@node1 ~]# vim /etc/sysconfig/network           #编辑节点1主机名配置文件
#编辑
HOSTNAME=node1.linuxpanda.com
[root@node1 ~]# hostname node1.linuxpanda.com #主机名立即生效 [root@node2 ~]# vim /etc/sysconfig/network #编辑节点2主机名配置文件
#编辑
HOSTNAME=node2.linuxpanda.com
[root@node2 ~]# hostname node2.linuxpanda.com #主机名立即生效

2.主机互信

具体可以参见我的上一篇博客:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_023_sshgenkey.html

[root@node1 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa         #生成rsa
[root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.168.202 #复制公钥 [root@node2 ~]# ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa #生成rsa
[root@node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub root@192.168.168.201 #复制公钥
[root@node1 ~]# ssh 192.168.168.202 'ip addr show dev eth0 '    #测试node1 ssh node2
[root@node2 ~]# ssh 192.168.168.201 'ip addr show dev eth0 '    #测试node2 ssh node1
 

3.host文件配置

host配置文件配置主要用于名称解析, 我们不建议使用dns解析,否则dns无法解析就会导致集群服务的崩溃。

[root@node1 ~]# vim /etc/hosts
#添加如下2行
192.168.168.201 node1.linuxpanda.com node1
192.168.168.202 node2.linuxpanda.com node2
[root@node1 ~]# scp /etc/hosts root@node2:/etc/hosts #host文件复制一份到node2中去
[root@node1 ~]# ping node2 -c 1 #node1 ping node2
[root@node2 ~]# ping node1 -c 1 #node2 ping node1

4.防火墙和selinux设置

[root@node1 ~]# service iptables stop                     #关闭node防火墙
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@node1 ~]# ssh node2 'service iptables stop' #关闭node2防火墙
iptables: Flushing firewall rules: [ OK ]
iptables: Setting chains to policy ACCEPT: filter [ OK ]
iptables: Unloading modules: [ OK ]
[root@node1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config  #修改node1selinux设置
[root@node1 ~]# setenforce 0 #立马生效
[root@node1 ~]# ssh node2 "sed -i '/SELINUX/s/enforcing/disabled/' #修改node1selinux设置
[root@node1 ~]# ssh node2 " setenforce 0' #立马生效

5.时间同步

具体参见我的另一篇博客:http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_linux_022_ntp.html

6.安装heartbeat

[root@node1 ~]#  yum  install heartbeat heartbeat-devel heartbeat-lib
[root@node2 ~]# ssh node2 'yum  install heartbeat heartbeat-devel heartbeat-lib'

7.编辑配置文件

[root@node1 ha.d]# cd /etc/ha.d/
[root@node1 ha.d]# cp /usr/share/doc/heartbeat-3.0./{authkeys,ha.cf,haresources} -p .
[root@node1 ha.d]# vim authkeys
#添加以下两行
auth
md5 oracle
[root@node1 ha.d]# mv ha.cf ha.cf.bak
[root@node1 ha.d]# vim ha.cf
#添加如下行
logfile    /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
bcast    eth0        # Linux
auto_failback on
node    node1.linuxpanda.com
node    node2.linuxpanda.com
ping 192.168.168.1
[root@node1 ha.d]# vim haresources
#添加如下行
node1.linuxpanda.com IPaddr::192.168.168.200//eth0 httpd
[root@node1 ha.d]# scp -p authkeys haresources ha.cf node2:/etc/ha.d/

8.安装httpd服务

[root@node1 ha.d]# yum install httpd
[root@node1 ha.d]# service httpd start
Starting httpd: [ OK ]
[root@node1 ha.d]# echo "node1" > /var/www/html/index.html
[root@node1 ha.d]# elinks node1 -source [root@node2 ha.d]# yum install httpd
[root@node2 ha.d]# service httpd start
Starting httpd: [ OK ]
[root@node2 ha.d]# echo "node2" > /var/www/html/index.html
[root@node2 ha.d]# elinks node2 -source
[root@node1 ha.d]# for i in {..};do  ssh node$i 'service httpd stop';ssh node$i 'chkconfig httpd off' ; done;

9.启动heartbeat

[root@node1 ha.d]# for i in {..} ; do ssh node$i 'service heartbeat start' ; done;

10.测试

我们使用宿主机测试下:

[root@node1 ha.d]# ip addr show dev eth0                       #确认node1的ip信息,发现200ip资源在node1上分配的。
: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu qdisc pfifo_fast state UP qlen
link/ether :0c::c9:: brd ff:ff:ff:ff:ff:ff
inet 192.168.168.201/ brd 192.168.168.255 scope global eth0
inet 192.168.168.200/ brd 192.168.168.255 scope global secondary eth0
inet6 fe80::20c:29ff:fec9:/ scope link
valid_lft forever preferred_lft forever
[root@node2 ha.d]# ip addr show dev eth0 #查看node2的ip信息
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:3f:42:13 brd ff:ff:ff:ff:ff:ff
    inet 192.168.168.202/24 brd 192.168.168.255 scope global eth0
    inet6 fe80::250:56ff:fe3f:4213/64 scope link
       valid_lft forever preferred_lft forever

我们使用hb_standby脚本将node1转为standby,当然也是可以断点处理。

[root@node1 heartbeat]# /usr/share/heartbeat/hb_standby
Going standby [all].

查看日志信息:

[root@node1 heartbeat]# tail - /var/log/ha-log

May  :: node1.linuxpanda.com heartbeat: []: info: node1.linuxpanda.com wants to go standby [all]
May :: node1.linuxpanda.com heartbeat: []: info: standby: node2.linuxpanda.com can take our all resources
May :: node1.linuxpanda.com heartbeat: []: info: give up all HA resources (standby).
ResourceManager(default)[]: //11_12:: info: Releasing resource group: node1.linuxpanda.com IPaddr::192.168.168.200//eth0 httpd
ResourceManager(default)[]: //11_12:: info: Running /etc/init.d/httpd stop
ResourceManager(default)[]: //11_12:: info: Running /etc/ha.d/resource.d/IPaddr 192.168.168.200//eth0 stop
IPaddr(IPaddr_192.168.168.)[]: //11_12:: INFO: IP status = ok, IP_CIP=
/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.168.200)[9196]: 2017/05/11_12:39:46 INFO: Success
May :: node1.linuxpanda.com heartbeat: []: info: all HA resource release completed (standby).
May :: node1.linuxpanda.com heartbeat: []: info: Local standby process completed [all].
May :: node1.linuxpanda.com heartbeat: []: WARN: lost packet(s) for [node2.linuxpanda.com] [:]
May :: node1.linuxpanda.com heartbeat: []: info: remote resource transition completed.
May :: node1.linuxpanda.com heartbeat: []: info: No pkts missing from node2.linuxpanda.com!
May :: node1.linuxpanda.com heartbeat: []: info: Other node completed standby takeover of all resources.

测试成功。

创建简单WEB高可用集群的更多相关文章

  1. Corosync+Pacemaker+crmsh构建Web高可用集群

    一.概述: 1.1 AIS和OpenAIS简介 AIS应用接口规范,是用来定义应用程序接口(API)的开放性规范的集合,这些应用程序作为中间件为应用服务提供一种开放.高移植性的程序接口.是在实现高可用 ...

  2. RHCS配置web高可用集群

    基本条件三台主机 10.37.129.5 web1.xzdz.hk web1 10.37.129.6 web2.xzdz.hk web2 10.37.129.4 luci.xzdz.hk luci 其 ...

  3. Redis总结(五)缓存雪崩和缓存穿透等问题 Web API系列(三)统一异常处理 C#总结(一)AutoResetEvent的使用介绍(用AutoResetEvent实现同步) C#总结(二)事件Event 介绍总结 C#总结(三)DataGridView增加全选列 Web API系列(二)接口安全和参数校验 RabbitMQ学习系列(六): RabbitMQ 高可用集群

    Redis总结(五)缓存雪崩和缓存穿透等问题   前面讲过一些redis 缓存的使用和数据持久化.感兴趣的朋友可以看看之前的文章,http://www.cnblogs.com/zhangweizhon ...

  4. Redis创建高可用集群教程【Windows环境】

    模仿的过程中,加入自己的思考和理解,也会有进步和收获. 在这个互联网时代,在高并发和高流量可能随时爆发的情况下,单机版的系统或者单机版的应用已经无法生存,越来越多的应用开始支持集群,支持分布式部署了. ...

  5. Java高可用集群架构与微服务架构简单分析

    序 可能大部分读者都在想,为什么在这以 dubbo.spring cloud 为代表的微服务时代,我要还要整理这种已经"过时"高可用集群架构? 本人工作上大部分团队都是7-15人编 ...

  6. Apache httpd和JBoss构建高可用集群环境

    1. 前言 集群是指把不同的服务器集中在一起,组成一个服务器集合,这个集合给客户端提供一个虚拟的平台,使客户端在不知道服务器集合结构的情况下对这一服务器集合进行部署应用.获取服务等操作.集群是企业应用 ...

  7. Hadoop 3.1.2(HA)+Zookeeper3.4.13+Hbase1.4.9(HA)+Hive2.3.4+Spark2.4.0(HA)高可用集群搭建

    目录 目录 1.前言 1.1.什么是 Hadoop? 1.1.1.什么是 YARN? 1.2.什么是 Zookeeper? 1.3.什么是 Hbase? 1.4.什么是 Hive 1.5.什么是 Sp ...

  8. RHCS高可用集群配置(luci+ricci+fence)

    一.什么是RHCS    RHCS是Red Hat Cluster Suite的缩写,也就是红帽集群套件,RHCS是一个能够提供高可用性.高可靠性.负载均衡.存储共享且经济廉价的集群工具集合,它将集群 ...

  9. (十)RabbitMQ消息队列-高可用集群部署实战

    原文:(十)RabbitMQ消息队列-高可用集群部署实战 前几章讲到RabbitMQ单主机模式的搭建和使用,我们在实际生产环境中出于对性能还有可用性的考虑会采用集群的模式来部署RabbitMQ. Ra ...

随机推荐

  1. 解决win10搜索框不能使用的问题

    1.首先,打开管理员命令窗口,win+x,可以看到弹出一个窗口,打开windows Powershell(管理员) 2,输入 Get-AppXPackage -Name Microsoft.Windo ...

  2. Markdown初使用

    Markdown是一种纯文本格式的标记语言.通过简单的标记语法,它可以使普通文本内容具有一定的格式. 相比WYSIWYG编辑器 优点:1.因为是纯文本,所以只要支持Markdown的地方都能获得一样的 ...

  3. docker遇到超时

    1. 直接通过docker拉取镜像遇到的问题:熟悉的timeout!!! [root@localhost ~]# docker search mysql INDEX NAME DESCRIPTION ...

  4. PeopleSoft OLE Automation error in Workbooks.Open: ObjectDoMethod: Microsoft Excel 不能访问文件

    os: WinServer 2012 R2 64位 问题描述:PeopleSoft Web端运行AE 报上图错误,AD工具直接Test正常 解决方案: 运行> dcomcnfg 这将打开组件服务 ...

  5. 1、初识Java

    1.计算机发展过程 2.Java简史 lSUN公司是一家什么样的公司? 美国SUN(Stanford University Network)公司 在中国大陆的正式中文名为“太阳计算机系统(中国)有限公 ...

  6. ubuntu解压时中文出现乱码

    一.乱码类似这样的:╫╩┴╧╖┤╤▌▓т╒╛╦┘╢╚│ 今天遇到需要上传十几G的图片,在wins上压缩成zip格式,在上传到服务器上,结果出现乱码.然后各种百度心塞. 最初查到原因: 这个主要是因为z ...

  7. idea远程打断点

    (1)用如下方式启动jar java -Xdebug -Xrunjdwp:transport=dt_socket,address=5005,server=y,suspend=y -jar durati ...

  8. FCC(ES6写法)Pairwise

    举个例子:有一个能力数组[7,9,11,13,15],按照最佳组合值为20来计算,只有7+13和9+11两种组合.而7在数组的索引为0,13在数组的索引为3,9在数组的索引为1,11在数组的索引为2. ...

  9. .NET Core多平台开发体验[3]: Linux (Windows Linux子系统)

    如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像R ...

  10. 【Nim游戏】高僧斗法

    先来看看Nim定理: // 若干堆硬币,二人轮流取,从一堆硬币中取几个 直到某个人不能取硬币 那这个人就输了 // 3 4 5 // 3 3 把硬币变成相同的 那么你就赢了 因为你可以跟着另一个人一样 ...