centos   HA高可用集群  heartbeat搭建 heartbeat测试  主上停止heartbeat服务  测试脑裂  两边都禁用ping仲裁  第三十二节课

heartbeat是Linux-ha项目中的一个组件

http://linux-ha.org/wiki/Main_Page

一般服务器都有两个网卡或者都有串口,一个网卡专门心跳,或者用串口线 做心跳线 ,COM口串口不能设置ip

上半节课

heartbeat搭建

下半节课

heartbeat测试
主上停止heartbeat服务
测试脑裂 
两边都禁用ping仲裁

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务。 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置
当A宕机或服务宕掉,会切换至B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。

下面我们使用heartbeat来做HA集群,并且把nginx服务作为HA对应的服务。

试验准备:

eth0:业务网卡
eth1:心跳网卡

主服务器有两个资源 1、nginx服务  2、VIP

三个机器, 都是centos6.5,两个业务网卡eth0 ip如下:

aming :192.168.31.166
aming1 :192.168.31.100
仲裁 192.168.21.1

VIP:192.168.31.110

两个心跳eth1 ip如下,要能够互相ping通:
aming :192.168.21.166
aming1: 192.168.21.100

如何添加心跳网卡:复制eth0 -》eth1
然后uuid删除掉,mac地址删除掉,只配ip就行和掩码就行

心跳网卡不需要设置网关,因为它不需要上网

eth1配置

启动网卡
ifup eth1

下面操作1-5都是在两个机器上操作

1. hostname 设置好,分别为aming 和 aming1

2. 关闭防火墙 iptables -F;
关闭selinux: setenforce 0

3. vi /etc/hosts // 增加内容如下:
192.168.31.166 aming
192.168.31.100 aming1

4. 两个机器都安装epel扩展源:

yum install -y epel-release
#rpm -ivh 'http://www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm'

5. 两个机器都安装heartbeat / libnet

同时还需要安装libnet工具包,libnet是一个高层次的API工具(https://sourceforge.net/projects/libnet-dev/)
yum install -y heartbeat* libnet nginx

6. 主上(aming)配置
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources  /etc/ha.d/
cd /etc/ha.d
vi authkeys //加入

//验证加密方式,两台HA机器之间的暗号
auth
# crc
# sha1 HI! //sha1更安全
md5 Hello!

chmod 600 authkeys

vi haresources //加入

aming 192.168.31.110//eth0:   nginx  //指定虚拟vip 网段 虚拟网卡 aming这台机上的eth0已经有ip了,需要新建一个eth0:0  和承载HA的应用服务 ,注意要确保nginx已经在/etc/init.d/下,否则heartbeat会找不到nginx

vi ha.cf //改为如下内容:

debugfile /var/log/ha-debug    //高可用服务例如nginx 切换不了 启动不起来的调试信息
logfile /var/log/ha-log //日志
logfacility local0 //日志级别
keepalive //心跳检测间隔 单位:秒
deadtime //认为死掉的时间 单位:秒
warntime //不确定是否死掉 先发警告
initdead //再次检测是否死掉 可以判断机器是否是重启的状况
udpport //使用udp方式检测 udp端口号
ucast eth1 192.168.21.100 //ucast ip单播的形式只发送到指定ip,bcast 广播形式发送到所有机器 注意要写对方的ip和网卡
auto_failback on //主节点起来之后是否自动failback回去
node aming //主节点 写hosts是因为在ha.cf里只能写主机名不能写ip,主备都需要绑定hosts文件
node aming1 //从节点
ping 192.168.21.1 // 192.168.21.1为仲裁节点
respawn hacluster /usr/lib/heartbeat/ipfail //当启动heartbeat时同时启动ipfail来检测心跳 注意:要ls /usr/lib/heartbeat/ipfail 看一下是否有这个文件,还要注意如果是64位系统,可能在/usr/lib64/heartbeat/ipfail ,hacluster为启动heartbeat时的用户 ,也就是说ipfail和heartbeat都是用hacluster这个用户来运行

7. 把主上的三个配置拷贝到从上:
cd /etc/ha.d/
scp authkeys ha.cf haresources   aming1:/etc/ha.d/

8. 到从上(aming1) 编辑ha.cf
vi /etc/ha.d/ha.cf //只需要更改一个地方
ucast eth1 192.168.21.100 改为 ucast eth1 192.168.21.166

9. 启动heartbeat :
先stop nginx ,因为heartbeat 带动nginx启动 ,先主,后从(这里主上启动heartbeat会有点长,因为它要等从启动好heartbeat之后它才真正启动)
service heartbeat start

查看日志

less /var/log/ha-log

启动ipfail服务

ipfail是一个进程,它不会监听端口

less  /var/log/ha-log

tcpdump -nn -i eth1 not port 22

694 udp端口

icmp

10. 检查测试
ifconfig 看是否有 eth0:0
ps aux |grep nginx 看是否有nginx进程

11. 测试1
主上故意禁ping
iptables -I INPUT -p icmp -j DROP

主上运行下面语句

tail -f /var/log/ha-log

从上运行下面语句

tail -f /var/log/ha-log

12. 测试2
主上停止heartbeat服务
service heartbeat stop

13. 测试脑裂 为了保证不出现脑裂,一定要保证心跳线的可靠,单独网卡做心跳网卡,最好直连串口不经过交换机
主和从上都down掉eth1网卡


ifdown eth1


ifdown eth1

恢复 这时候nginx和vip都在从上

ifup eth1

/etc/init.d/heartbeat restart  //重启主上的heartbeat服务,时间可能要1分钟

因为设置了auto_failback on,所以主重启完heartbeat服务之后会把nginx和vip  failback回来

ifup eth1

14、两边都禁用ping仲裁

iptables -I INPUT -s 192.168.21.1 -j DROP

tail -f /var/log/ha-log

iptables -I INPUT -s 192.168.21.1 -j DROP

注意:如果把从的heartbeat服务停止,那么主的heartbeat服务也会停止,nginx和vip都会停止

因为主从要保证HA必须两边的heartbeat服务是没有问题的

这也是主启动heartbeat服务慢的原因:先主,后从(这里主上启动heartbeat会有点长,因为它要等从启动好heartbeat之后它才真正启动)

扩展学习

关于heartbeat配置文件参考文档: http://blog.chinaunix.net/uid-20749043-id-1878328.html
heartbeat和keepalived比较 http://blog.csdn.net/yunhua_lee/article/details/9788433 http://zhengdl126.iteye.com/blog/1738012
DRBD工作原理和配置 http://502245466.blog.51cto.com/7559397/1298945


扩展阅读

高可用开源方案 Keepalived VS Heartbeat对比
http://www.kuqin.com/shuoit/20140623/340745.html

最近因为项目需要,简单的试用了两款高可用开源方案:Keepalived和Heartbeat。两者都很流行,但差异还是很大的,现将试用过程中的感受以及相关知识点简单总结一下,供大家选择方案的时候参考。

1)Keepalived使用更简单:从安装、配置、使用、维护等角度上对比,Keepalived都比Heartbeat要简单得多,尤其是Heartbeat2.1.4后拆分成3个子项目,安装、配置、使用都比较复杂,尤其是出问题的时候,都不知道具体是哪个子系统出问题了;而Keepalived只有1个安装文件、1个配置文件,配置文件也简单很多;

2)Heartbeat功能更强大:Heartbeat虽然复杂,但功能更强大,配套工具更全,适合做大型集群管理,而Keepalived主要用于集群倒换,基本没有管理功能;

3)协议不同:Keepalived使用VRRP协议进行通信和选举,Heartbeat使用心跳进行通信和选举;Heartbeat除了走网络外,还可以通过串口通信,貌似更可靠;

4)使用方式基本类似:如果要基于两者设计高可用方案,最终都要根据业务需要写自定义的脚本,Keepalived的脚本没有任何约束,随便怎么写都可以;Heartbeat的脚本有约束,即要支持service start/stop/restart这种方式,而且Heartbeart提供了很多默认脚本,简单的绑定ip,启动apache等操作都已经有了;

使用建议:优先使用Keepalived,当Keepalived不够用的时候才选择Heartbeat

f

centos HA高可用集群 heartbeat搭建 heartbeat测试 主上停止heartbeat服务 测试脑裂 两边都禁用ping仲裁 第三十二节课的更多相关文章

  1. Hadoop HA 高可用集群的搭建

    hadoop部署服务器 系统 主机名 IP centos6.9 hadoop01 192.168.72.21 centos6.9 hadoop02 192.168.72.22 centos6.9 ha ...

  2. 七、Hadoop3.3.1 HA 高可用集群QJM (基于Zookeeper,NameNode高可用+Yarn高可用)

    目录 前文 Hadoop3.3.1 HA 高可用集群的搭建 QJM 的 NameNode HA Hadoop HA模式搭建(高可用) 1.集群规划 2.Zookeeper集群搭建: 3.修改Hadoo ...

  3. 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 ...

  4. Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    声明:作者原创,转载注明出处. 作者:帅气陈吃苹果 一.服务器环境 主机名 IP 用户名 密码 安装目录 master188 192.168.29.188 hadoop hadoop /home/ha ...

  5. linux -- 基于zookeeper搭建yarn的HA高可用集群

    linux -- 基于zookeeper搭建yarn的HA高可用集群 实现方式:配置yarn-site.xml配置文件 <configuration> <property> & ...

  6. HA 高可用集群概述及其原理解析

    HA 高可用集群概述及其原理解析 1. 概述 1)所谓HA(High Available),即高可用(7*24小时不中断服务). 2)实现高可用最关键的策略是消除单点故障.HA严格来说应该分成各个组件 ...

  7. Mysql双主双从高可用集群的搭建且与MyCat进行整合

    1.概述 老话说的好:瞻前顾后.患得患失只会让我们失败,下定决心,干就完了. 言归正传,之前我们聊了Mysql的一主一从读写分离集群的搭建,虽然一主一从或一主多从集群解决了并发读的问题,但由于主节点只 ...

  8. Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernetes1.9版本发布2017年12月15日,每三个月一个迭代 ...

  9. [K8s 1.9实践]Kubeadm 1.9 HA 高可用 集群 本地离线镜像部署

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9版本发布2017年12月15日,每是那三个月一个迭代, W ...

随机推荐

  1. 浅谈session测试

    Session 是用于保持状态的基于 Web 服务器的方法,在 Web 服务器上保持用户的状态信息供在任何时间从任何页访问.Session 允许通过将对象存储在 Web 服务器的内存中在整个用户会话过 ...

  2. jquery的委托处理

     1.基本用法: javascript的事件模型,采用”冒泡”模式,也就是说,子元素的事件会逐级向上”冒泡”,成为父元素的事件. 利用这一点,可以大大简化事件的绑定.比如,有一个表格(table元素) ...

  3. 彩色图像的直方图均衡化matlab代码

    彩色图像的直方图均衡化 - YangYudong2014的专栏 - CSDN博客 http://blog.csdn.net/yangyudong2014/article/details/4051503 ...

  4. Linux-Oracle

    1.使用Oracle登录,或者其他用户登录,切换到Oracle账户下: 2.登录后在Oracle主目录后使用vi创建.bashrc文件: 3.在文件中输入如下参数: export ORACLE_SID ...

  5. 破解X-Pack和更新许可证

    某一天打开 Kibana 对应的 Monitoring 选项卡的时候,发现提示需要下载新的 license,旧的 license 已经过期了: 退出重新登录 发现禁止登录,提示:Login is di ...

  6. C# string.Format("{0:C3}", 2)

  7. 最简单的VS-Qt-CMake项目框架

    使用qtcreator新建一个空工程,可以得到main.cpp,mainwindow.cpp,mainwindow.h和mainwindow.ui四个文件 下面主要介绍CMakeLists.txt的内 ...

  8. 钟意Action

    package com.j1.mai.action; import com.github.pagehelper.PageInfo; import com.j1.app.mysql.model.Appr ...

  9. ContentPriver

    共享应用程序内的数据, 在数据修改时可以监听 1.特点 ①.可以将应用中的数据对外进行共享: ②.数据访问方式统一,不必针对不同数据类型采取不同的访问策略: ③.内容提供者将数据封装,只暴露出我们希望 ...

  10. Nginx虚拟主机配置教程

    说明:配置之前先把域名解析到服务器IP地址上 站点1:bbs.osyunwei.com  程序所在目录/data/osyunwei/bbs 站点2:sns.osyunwei.com  程序所在目录/d ...