用Heartbeat实现HA集群
HA即高可用(high avaliable),又被叫做双机热备,用于关键性业务,简单理解就是,有两台机器A和B,正常是A提供服务,B待机闲置,当A宕机或服务宕掉,会切换到B机器继续提供服务。常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能。
图:
下面我们使用heartbeat来做HA集群,并且把nginx服务器作为HA对应的服务。
实验准备:
两台机器,都是centos6.5,网卡eth0,ip如下:
aming 192.168.31.166
aming1 192.168.31.100
两个eth1 ip如下:
aming 192.168.21.166
aming1 192.168.21.100
要弄两个网卡,在本实验中使用了同一张网卡配置不同IP,可以参考上一篇文章
下面操作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
5.两个机器上都安装heartbeat/libnet
yum install -y heartbeat* libnet nginx
6.主上(aming)配置
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresorces /etc/ha.d/
cd /etc/ha.d
vi authkeys //加入
auth 3
3 md5 Hello!
chmod 600 authkeys
vi haresorces
用来指定主节点,虚拟IP,网段,网卡名字,掌控的服务
如果针对nginx 做HA
那就加入:
aming 192.168.31.110(对外提供服务的IP)/24/eth0:0 nginx(必须要把服务放到/etc/init.d/)
vi ha.cf
//改为如下内容
打开debugfile
logfile
keepalive 表示多长时间检测一次
auto_failback on
warntime 警告时间
initdead 秒死掉了就真的死掉了
uddport 广播
baud 串口(如果要用到串口才打开)
ubast 广播形式
ucast 用IP找
ucast eth1 192.138.21.100 (这个要)
respawn hacluster /usr/lib32/heartbeat/ipfail
ping 192.168.21.1
node aming主节点
node aming1从节点
7.然后就拷贝上面三个文件给从
然后从,
8.从上编辑ha.cf
ucast eth1 改成对方的IP
9.启动heartbeat:
先主后从
service heartbeat start
10.检查测试
ifconfig 看看是否有eth1:0
ps aux|grep nginx 看看有没有进程
11.测试1
主上故意禁止ping
iptables -I INPUT -p icmp -j DROP
12.测试2
主上停止heartbeat服务
service heartbeat stop
13.测试脑裂
主从上都down掉eth1网卡
ifdown eth1
拓展学习:
关于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.51cto.com/7559397/1298945
用Heartbeat实现HA集群的更多相关文章
- corosync+pacemaker实现高可用(HA)集群
corosync+pacemaker实现高可用(HA)集群(一) 重要概念 在准备部署HA集群前,需要对其涉及的大量的概念有一个初步的了解,这样在实际部署配置时,才不至于不知所云 资源.服务与 ...
- 架构之高可用性(HA)集群(Keepalived)
Keepalived简介 Keepalived是Linux下一个轻量级别的高可用解决方案.高可用(High Avalilability,HA),其实两种不同的含义:广义来讲,是指整个系统的高可用行,狭 ...
- 安装spark ha集群
安装spark ha集群 1.默认安装好hadoop+zookeeper 2.安装scala 1.解压安装包 tar zxvf scala-2.11.7.tgz 2.配置环境变量 vim /etc/p ...
- Hadoop的HA集群启动和停止流程
假设我们有3台虚拟机,主机名分别是hadoop01.hadoop02和hadoop03. 这3台虚拟机的Hadoop的HA集群部署计划如下: 3台虚拟机的Hadoop的HA集群部署计划 hadoop0 ...
- 使用QJM部署HDFS HA集群
一.所需软件 1. JDK版本 下载地址:http://www.oracle.com/technetwork/java/javase/index.html 版本: jdk-7u79-linux-x64 ...
- Storm-1.0.1+ZooKeeper-3.4.8+Netty-4.1.3 HA集群安装
Storm-1.0.1+ZooKeeper-3.4.8+Netty-4.1.3 HA集群安装 下载Storm-1.0.1 http://mirrors.tuna.tsinghua.edu.cn/apa ...
- 菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章
菜鸟玩云计算之十九:Hadoop 2.5.0 HA 集群安装第2章 cheungmine, 2014-10-26 在上一章中,我们准备好了计算机和软件.本章开始部署hadoop 高可用集群. 2 部署 ...
- 菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章
菜鸟玩云计算之十八:Hadoop 2.5.0 HA 集群安装第1章 cheungmine, 2014-10-25 0 引言 在生产环境上安装Hadoop高可用集群一直是一个需要极度耐心和体力的细致工作 ...
- 手动部署 kubernetes HA 集群
前言 关于kubernetes HA集群部署的方式有很多种(这里的HA指的是master apiserver的高可用),比如通过keepalived vip漂移的方式.haproxy/nginx负载均 ...
随机推荐
- jquery slibings选取同级其他元素
jquery选取同级其他元素可以使用slibings方法,end方法可以清除之前的链式操作,相当于重新开始. <script type="text/javascript"&g ...
- 006-虚拟机中centos7实现nat静态ip上网
1.设置虚拟机网卡VMnet8 2.修改虚拟机参数 (1).点击编辑-->虚拟网络编辑器,如下图设置 (2)nat设置如下[使用默认即可,记住网关.掩码等,非常重要,因为在centos里面要设置 ...
- C#超级方便的ExpandoObject类别
这东西是.NET Framework 4.5 的新东西..发现这个,大概就跟发现新大陆一样的兴奋,让我再次赞叹Anders Hejlsberg 之神.. 这边有MSDN : http://msdn.m ...
- python库numpy的reshape的终极解释
a = np.arange(2*4*4) b = a.reshape(1,4,4,2) #应该这样按反序来理解:最后一个2是一个只有2个元素的向量,最后的4,2代表4×2的矩阵,最 ...
- mysql进阶(二)之细谈索引、分页与慢日志
索引 1.数据库索引 数据库索引是一种数据结构,可以以额外的写入和存储空间为代价来提高数据库表上的数据检索操作的速度,以维护索引数据结构.索引用于快速定位数据,而无需在每次访问数据库表时搜索数据库表中 ...
- webpack基础使用
环境: win10, webpack v3.5.6, node v8.4, npm v5.3. 安装与配置 新建一个项目目录demo, 在当前目录执行如下命令: npm init -y npm ins ...
- if 条件判断
逻辑判断的布尔值(true&false) 1.逻辑值(bool)用来表示诸如:对与错,真与假,非于空等概念. 2.逻辑值包含了两个值:--true:表示非空的量(比如:string,tuple ...
- Hadoop的IO操作
Hadoop的API官网:http://hadoop.apache.org/common/docs/current/api/index.html 相关的包 org.apache.hadoop.io ...
- MySQL 表操作 (Day40)
阅读目录 一.表介绍 二.创建表 三.查看表 四.修改表 五.删除表 六.操作表中的记录 一.表介绍 表相当于文件,表中的一条记录就相当于文件的一行内容,不同的是,表中的一条记录有对应的标题,则称为表 ...
- 按钮js跳转到非表单提交页
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...