2.部署Heartbeat高可用需求

2.1 操作系统

CentOS-6.8-x86_64

2.2 Heartbeat服务主机资源准备

主服务器A:

主机名:heartbeat-1-130

eth0网卡地址:192.168.1.130(管理IP)

eth1网卡地址:10.0.10.4 (心跳IP)

从服务器B:

主机名:heartbeat-1-129

eth0网卡地址:192.168.1.129(管理IP)

eth1网卡地址:10.0.10.5(心跳IP)

虚拟VIP:

虚拟VIP在主服务器heartbeat-1-130上

VIP:192.168.1.131

3.Heartbeat高可用实施准备

3.1 搭建虚拟真实环境

克隆两台虚拟机

3.2 给虚拟机配置IP和主机名

配置IP和主机名就省略了
设置两台机器的主机的主机名分别为heartbeat-1-130和heartbeat-1-129。
分别编译两台机器的/etc/sysconfig/network配置文件,设置HOSTNAME=heartbeat-1-130和HOSTNAME=heartbeat-1-129。
然后在命令行下执行hostname heartbeat-1-130和hostname heartbeat-1-129使设置马上生效。
提示:可以执行setup命令然后选network configuration-->Edit configuration即可配置机器名,然后logout退出重新登录后生效。

3.3 配置hosts文件(两个节点都要做)

在heartbeat-1-130主机上配置hosts文件

[root@heartbeat-1-130 ~]# cat >>/etc/hosts<<eof
> 192.168.1.129 heartbeat-1-129
> 192.168.1.130 heartbeat-1-130
> eof

在heartbeat-1-129主机上配置hosts文件

[root@heartbeat-1-129 ~]# cat >>/etc/hosts<<eof
> 192.168.1.129 heartbeat-1-129
> 192.168.1.130 heartbeat-1-130
> eof

通过ping ip地址的方法检查测试,看其返回的IP是不是和/etc/hosts中配置的内容一致。

特别强调:机器名必须是uname –n返回的结果

[root@heartbeat-1-130 ~]# uname -n
heartbeat-1-130

提示:hosts的配置在heartbeat服务中会用到,后文的drbd及存储高可用也会用到,在生产环境中会把所有的机器名对应上所有的机器IP地址,然后通过cfengine或puppet或sshkey+rsync工具分发到所有机器上。网内增加机器时,就会通过分发工具统一分发到所有机器的/etc/hosts中。

3.4 配置服务间的心跳连接

eth1 10.0.10.5和eth1 10.0.10.4两块网卡之间通过普通网线连接的,即不通过交换机,直接用网线将两块网卡连在一起,用于做心跳检测或传数据等。

提示:高可用服务器对上的heartbeat软件会利用这条心跳线来检查对端的机器是否存活,进而决定是否做故障转移,资源切换,来保证业务的连续性。
如果条件允许,以上连接可同时使用,来加大保险系数防止裂脑问题的发生。

本次案例:选用以太网电缆两网卡直连。

选用原因:简单,容易部署、效果也不错。

在两台机器上分别增加一条主机路由,来实现两台机器检查对端时通过这个心跳线线路检查。

(1)heartbeat-1-130 Server上增加如下主机路由:

/sbin/route route add -host 10.0.10.4 dev eth1

同样,这个命令使得从heartbeat-1-130 Server 上访问的10.0.10.4,走eth1网卡出去,即使用心跳线路。

echo '/sbin/route route add -host 10.0.10.4 dev eth1'>>/etc/rc.local

加入开机自启动配置里,这样下去启动后会自动加载这个路由的配置。

(2)heartbeat-1-129 Server上增加如下主机路由:

/sbin/route route add -host 10.0.10.5 dev eth1

同样,这个命令使得从heartbeat-1-129 Server 上访问的10.0.10.5,走eth1网卡出去,即使用心跳线路。

echo '/sbin/route route add -host 10.0.10.5 dev eth1'>>/etc/rc.local

加入开机自启动配置里,这样下去启动后会自动加载这个路由的配置。
可以用route –n查看配置的路由状态

3.5 配置虚拟VIP

在主服务器上heartbeat-1-130上配置虚拟VIP

[root@heartbeat-1-130 ~]# echo 'ifconfig eth0:1 192.168.1.131 netmask 255.255.255.0 up' >>/etc/rc.local
[root@heartbeat-1-130 ~]# echo 'route add -host 192.168.1.131 dev eth0:1' >>/etc/rc.local

3.6 关闭防火墙和selinux(两台节点都要操作)

关闭iptables

iptables -F
service iptables save
service iptables stop

关闭selinux

setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

3.7 安装CentOS-6.8-x86_64 heartbeat3.0软件

CentOS-6.8-x86_64的rpm包没有heartbeat软件,所以要下载epel包

[root@heartbeat-1-130 ~]# yum search heartbeat
已加载插件:product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
rhel-local | 4.1 kB 00:00 ...
警告:没有匹配 heartbeat 的软件包
没有找到匹配的软件包

3.8 下载并安装epel扩展源(两台都要操作)

mkdir -p /home/linzhongniao/tools
cd /home/linzhongniao/tools
wget http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpm
rpm -qa|grep epel

3.9 安装heartbeat(两台都要操作)

yum install heartbeat* -y

3.10 主节点配置heartbeat服务

Centos5.8机器上,分别执行yum install heartbeat* –y 两遍后,不出意外就可以安装好heartbeat软件了。
前面已经提到了,heartbeat的默认配置文件目录为/etc/ha.d。heartbeat常用的配置文件有三个,ha.cf、authkey、haresource,各自的作用见下面的表格。

提示:如果yum安装后想保留rpm包,用下面的方法。

[root@heartbeat-1-130 ~]# sed -i 's#keepcache=0#keepcache=1#g' /etc/yum.conf
[root@heartbeat-1-130 ~]# grep keepcache /etc/yum.conf
keepcache=1

3.10.1 配置ha.cf文件及文件说明

(1)先把ha.cf haresources authkeys这三个文件拷到/etc/ha.d/目录下

[root@heartbeat-1-130 ~]# ll /usr/share/doc/heartbeat-3.0.4/
总用量 144
-rw-r--r-- 1 root root 1873 12月 3 2013 apphbd.cf
-rw-r--r-- 1 root root 645 12月 3 2013 authkeys
-rw-r--r-- 1 root root 3701 12月 3 2013 AUTHORS
-rw-r--r-- 1 root root 58752 12月 3 2013 ChangeLog
-rw-r--r-- 1 root root 17989 12月 3 2013 COPYING
-rw-r--r-- 1 root root 26532 12月 3 2013 COPYING.LGPL
-rw-r--r-- 1 root root 10502 12月 3 2013 ha.cf
-rw-r--r-- 1 root root 5905 12月 3 2013 haresources
-rw-r--r-- 1 root root 2935 12月 3 2013 README
[root@heartbeat-1-130 ~]# cd /usr/share/doc/heartbeat-3.0.4/
[root@heartbeat-1-130 heartbeat-3.0.4]# ls
apphbd.cf authkeys AUTHORS ChangeLog COPYING COPYING.LGPL ha.cf haresources README
[root@heartbeat-1-130 heartbeat-3.0.4]# cp ha.cf haresources authkeys /etc/ha.d/

(2)配置ha.cf配置文件

[root@heartbeat-1-130 ~]# cat /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile/var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
#bcast eth1
mcast eth1 225.0.0.130 694 1 0
#udpport 694
#ucast eth1 10.0.10.4
auto_failback on
node heartbeat-1-130
node heartbeat-1-129
ping 10.0.10.8
respawn hacluster /usr/lib64/heartbeat/ipfail
#crm on

(3)Ha.cf文件详细说明

debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息。

logfile /var/log/ha-log:heartbeat的日志文件。

keepalive 2:心跳的时间间隔,默认时间单位为秒s。

deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。

warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。

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

mcast eth1 225.0.0.130 694 1 0 :设置广播通信使用的端口,225.0.0.130为多播ip地址在一个局域网内这个ip地址不能一样,694为默认使用的端口号。

注意:一个局域网内有多组heartbeat服务同时正常使用的前提是多播地址不同(可选多播地址段为224.0.0.0-239.255.255.255),一般路由器,交换机等应该都是多播的方式,建议IP的最后八位作为多播地址的最后8位。当然不用多播也能解决心跳问题。

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

ucast eth1 10.0.10.4:设置广播通信对方机器心跳检测的网卡和IP和udpport一起用。

auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。

respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。

crm on 是否开启Cluster Resource Manager(集群资源管理功能)

提示:我们可以查看/usr/share/doc/heartbeat-3.0.4/下的ha.cf来详细了解参数信息。

3.10.2 配置authkey文件及文件说明

(1)配置authkey文件

[root@heartbeat-1-129 ~]# cat /etc/ha.d/authkeys
auth 3
3 md5 Hello!

将authkey权限修改为600

[root@heartbeat-1-130 ~]# chmod 600 /etc/ha.d/authkeys
[root@heartbeat-1-130 ~]# ll /etc/ha.d/authkeys
-rw------- 1 root root 20 3月 3 07:39 /etc/ha.d/authkeys

(2)参数说明

此处提到authkey权限必须为600
# Authentication file. Must be mode 600
# Must have exactly one auth directive at the front.
# authsend authentication using this method-id
#
# Then, list the method and key that go with that method-id
此处提到可以设置认证方法
# Available methods: crc sha1, md5. Crc doesn't need/want a key.
# You normally only have one authentication method-id listed in this file
# Put more than one to make a smooth transition when changing auth
# methods and/or keys.
这里说明sha1是最好的认证方法,其次md5是最好的
# sha1 is believed to be the "best", md5 next best.
# crc adds no security, except from packet corruption.
# Use only on physically secure networks.
#auth 1
#1 crc
#2 sha1 HI!
#3 md5 Hello!
默认的配置使用crc方法这是不加密的最不安全的,下面为authkey生产配置
##########

注意authkeys需要的权限默认为600否则heartbeat服务会报错不发打开,两台机器都需要操作

3.10.3 配置haresource文件

[root@heartbeat-1-120 ~]# cat /etc/ha.d/haresources
heartbeat-1-130 IPaddr::192.168.1.131/24/eth0:1

配置参数说明 :heartbeat-1-130为主节点hostname,192.168.0.131为vip,24为掩码为24的网段,eth0:1为vip的设备名。IPaddr为heartbeat配置IP的默认脚本,其后的IP等都是脚本参数。

[root@heartbeat-1-130 ~]# ll /etc/ha.d/resource.d/IPaddr
-rwxr-xr-x 1 root root 2273 12月 3 2013 /etc/ha.d/resource.d/IPaddr

实际上这里相当于一个脚本传参,相当于执行:

/etc/ha.d/resource.d/IPaddr 192.168.1.131/24/eth0:1 start

3.11 从节点配置heartbeat服务

3.11.1 把主节点上的三个配置文件拷贝到从节点

cd /etc/ha.d
scp authkeys ha.cf haresources heartbeat-1-129:/etc/ha.d

生产中所有的配置文件是svn变更比对然后同时发布到两台机器上去的,也可以用scp同步。

3.11.2 配置ha.cf文件

从节点只需要修改ha.cf文件的下面地方

mcast eth1 225.0.0.129 694 1 0

将255.0.0.130改成255.0.0.129

上面是多播的方式,如果用广播的方式需要修改下面的地方。

ucast eth1 10.0.10.4

将ucast eth1 10.0.10.4修改成ucast eth1 10.0.10.5

4.启动heartbeat服务

先启动主节点后启动从节点

[root@heartbeat-1-130 ~]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO: Resource is stopped
Done.

5.测试heartbeat高可用服务

有两种方法

(1)主节点停止heartbeat服务

/etc/init.d/heartbeat stop

(2)将主节点的eth1网卡down掉

ifdown eth1

我们就会发现虚拟VIP切换到从节点上了,来达到heartbeat高可用功能继续为用户提供服务。

6.测试列脑

两节点都down掉eth1网卡

ifdown eth1

7.查看heartbeat启动及接管资源的过程

可以查看heartbeat日志和系统日志查看heartbeat启动及接管资源的过程

tail -f /var/log/ha-log

tail -f /var/log/messages

学习heartbeat-02安装及配置的更多相关文章

  1. CentOS 6.5 下HeartBeat的安装与配置

    CentOS 6.5 下HeartBeat的安装与配置 参考网站: http://wenku.baidu.com/link?url=BvqJatdx1m12PLil-7YA1zkM0yUOEO8OnN ...

  2. win7+64位+Java学习基本软件安装+环境配置+eclipse(IDE)

    一.下载安装JDK 1.安装包下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.h ...

  3. 菜鸟的《Linux程序设计》学习——MySQL数据库安装、配置及基本操作

    1. MySQL数据库: 在涉及到一些大型的Web系统或者嵌入式软件的开发时,都少不了用数据库来管理数据.在Windows操作系统下,使用过各种各样的数据库,如:sqlServer.Oracle.My ...

  4. 从零开始学习MySQL2---MySQL的安装与配置(只有Windows)

    因为我电脑只装了Windows系统,故而,只整理了在Windows系统下的安装方式 截图比较麻烦,故而多引用百度经验. Windows平台下安装与配置MySQL 5.6 下载,网址:http://de ...

  5. MySQL数据库学习二 MSQL安装和配置

    2.1 下载和安装MySQL软件 2.1.1 基于客户端/服务器(C/S)的数据库管理系统 服务器:MySQL数据库管理系统 客户端:操作MySQL服务器 2.1.2 MySQL的各种版本 社区版(C ...

  6. Docker学习:virtualbox安装和配置

    下载.安装 从官网:https://www.virtualbox.org/下载,根据说明直接一步步安装即可 安装ubuntu 说明:这里本机内存是16G,若内存<4G安装完成虚拟机, 安装完成之 ...

  7. Vue学习笔记-VSCode安装与配置

    一  使用环境: windows 7 64位操作系统 二  VSCode安装与配置  1.下载: https://code.visualstudio.com 直接点击即可. 2. 点击按装程序,默认安 ...

  8. 02——Solr学习之Solr安装与配置(linux上的安装)

    借鉴博客:https://www.jianshu.com/p/1100f54fcbd8 https://www.cnblogs.com/jepson6669/p/9134652.html 1.准备一个 ...

  9. 烂泥:高负载均衡学习haproxy之安装与配置

    本文由秀依林枫提供友情赞助,首发于烂泥行天下 有关高负载均衡的软件,目前使用比较多的是haproxy.nginx和lvs.下面我们就开始学习haprxoy这款软件. 一.haproxy介绍 以下开始介 ...

  10. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

随机推荐

  1. 给npm换源

    为什么要换源? npm 官方站点 http://www.npmjs.org/ 并没有被墙,但是下载第三方依赖包的速度让人着急啊! 幸运的是,国内有几个镜像站点可以供我们使用,本人在使用 http:// ...

  2. 一张图看懂IaaS, PaaS和SaaS的区别

    转至:https://blog.csdn.net/liujg79/article/details/84453736 编译:老夫子 原文:https://www.bmc.com/blogs/saas-v ...

  3. 5个相见恨晚的Linux命令,每一个都非常实用

    转至:https://zhuanlan.zhihu.com/p/57866239 作为一个开发人员,经常要用到终端命令,最让人头疼的是记不住繁琐的参数.用谷哥度娘检索效率低下,通过man命令显示的结果 ...

  4. 哈工大 NLP 实验一 汉语分词系统

    NLP实验代码可见github:NLP实验代码整理 本实验会查重,而且写起来难度比较大,建议早一些开始.实验报告要用顶会论文形式呈现,建议使用overleaf里的ACL论文latex模板比较方便一点.

  5. python面试_总结01_概念和内置高阶函数

    - 简答题 1.请谈谈Python中is 和 == 的区别(代码演示) is用于比较两个变量是否引用了同一个内存地址,is表示的是对象标识符(object identity),作用是用来检查对象的标识 ...

  6. python刷剑指offer(21-40)(一刷)

    21.输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序.假设压入栈的所有数字均不相等.例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序 ...

  7. while + else 使用,while死循环与while的嵌套,for循环基本使用,range关键字,for的循环补充(break、continue、else) ,for循环的嵌套,基本数据类型及内置方法

    今日内容 内容概要 while + else 使用 while死循环与while的嵌套 for循环基本使用 range关键字 for的循环补充(break.continue.else) for循环的嵌 ...

  8. 4.功能三:实现URL地址栏控制(15分) (1)获取到当前访问的控制器和方法(5分) (2)对当前访问的控制器和方法进行判断,有权限继续访问(5分) (3)无权限给出提示(5分)

    <?php namespace app\admin\controller; use think\Controller; use think\Request; class Base extends ...

  9. 从原理学习Java反序列化

    1 序列化与反序列化 1.1 概念 序列化: 将数据结构或对象转换成二进制串的过程 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程 1.2 使用场景 当你想把的内存中的对象状态 ...

  10. 商品模型:SPU、商品、SKU概念模型设计

    商品系统是电商SaaS.新零售SaaS最基础.最核心的系统之一.商品系统几乎需要支撑所有业务系统,商品详情.购物车.订单.履约.结算.售后.库存.供应链等,都需要依赖商品系统的能力.为了保障业务的稳定 ...