Heartbeat实现Lvs高可用和HA高可用

效果图如下

1、heartbeat的介绍

Heartbeat 项目是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统。心跳服务和集群通信是高可用集群的两个关键组件,在 Heartbeat 项目里,由 heartbeat 模块实现了这两个功能。下面描述了 heartbeat 模块的可靠消息通信机制,并对其实现原理做了一些介绍

heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。[1]

高可用集群是指一组通过硬件和软件连接起来的独立计算机,它们在用户面前表现为一个单一系统,在这样的一组计算机系统内部的一个或者多个节点停止工作,服务会从故障节点切换到正常工作的节点上运行,不会引起服务中断。从这个定义可以看出,集群必须检测节点和服务何时失效,何时恢复为可用。这个任务通常由一组被称为“心跳”的代码完成。在Linux-HA里这个功能由一个叫做heartbeat的程序完成。

消息通信的模型

 Heartbeat包括以下几个组件:

heartbeat – 节点间通信校验模块   

CRM - 集群资源管理模块  

CCM - 维护集群成员的一致性  

LRM - 本地资源管理模块  

StonithDaemon - 提供节点重启服务  

logd - 非阻塞的日志记录  

apphbd - 提供应用程序级的看门狗计时器

  Recovery Manager - 应用故障恢复

2、实现web服务器的高可用性

1)基本的网卡配置参数略

[root@hua1 ~]# vim /etc/sysconfig/network (改主机名)

[root@hua1 ~]# hostname hua1.a.com (使主机名立即生效)

[root@hua1 ~]# vim /etc/hosts (配置dns指向)

192.168.145.99      hua1.a.com

192.168.145.100     hua2.a.com

2)实现heartbeat高可用需要一些软件实现,需要安装上去

[root@hua2 ~]# mount /dev/cdrom /mnt/cdrom/

[root@hua1 ~]# yum localinstall heartbeat-2.1.4-9.el5.i386.rpm heartbeat-pils-2.1.4-10.el5.i386.rpm heartbeat-stonith-2.1.4-10.el5.i386.rpm perl-MailTools-1.77-1.el5.noarch.rpm libnet-1.1.4-3.el5.i386.rpm --nogpgcheck (localinstall本地安装,--nogpgcheck,无签名检测)

[root@hua1 ~]# rpm -pql heartbeat-2.1.4-9.el5.i386.rpm (查看解压后的文件夹有那些。)

[root@hua1 ~]# cd /etc/ha.d/ (这个目录是heartbeat的主配置目录)

[root@hua1 ha.d]# cd /usr/share/doc/heartbeat-2.1.4/ (安装后的配置文件)

3)[root@hua1 heartbeat-2.1.4]# cp ha.cf authkeys haresources  /etc/ha.d/ (把配置文件拷贝过来)

4)[root@hua1 ha.d]# vim ha.cf  (编辑这个心跳文件参数,编辑如下)

95 行bcast   eth1   (心跳线的网卡用广播形式)

213行 node    hua1.a.com

214 行node    hua2.a.com (两个节点的地址)

5)[root@hua1 ~]# dd if=/dev/random bs=512 count=1 |openssl md5 (随机产生一个参数用md5加密)

0+1 records in

0+1 records out

128 bytes (128 B) copied, 0.000308478 seconds, 415 kB/s

9bf2f23aae3a63c16ea681295ffd7666

6)[root@hua1 ha.d]# vim authkeys (编辑认证文件)

auth 3

3 md5 9bf2f23aae3a63c16ea681295ffd7666

[root@hua1 ha.d]# chmod 600 authkeys  (改变它的权限为600,不然重启不成功)

7)[root@hua1 ha.d]# vim haresources (编辑资源文件)

45 行hua1.a.com  192.168.145.101/24/eth0  httpd

8)[root@hua1 ha.d]# cp /etc/init.d/httpd /etc/ha.d/resource.d/ (把httpd的服务器脚本拷贝过来,因为http已经不需要自己启动了,它受heartbeat的控制)

[root@hua2 ha.d]# service httpd status (保证它是关闭的)

httpd 已停

9)编辑apache的网页,两台都要编辑

[root@hua2 ha.d]# cd /var/www/html/

[root@hua2 html]# ll

总计 4

-rw-r--r-- 1 root root 5 12-27 19:19 index.html

[root@hua2 html]# more index.html

hua3

[root@hua1 ~]# cd /var/www/html/

[root@hua1 html]# ll

total 4

-rw-r--r-- 1 root root 4 Dec 27 20:01 index.html

[root@hua1 html]# more index.html

123

[root@hua1 heartbeat]# service httpd stop

[root@hua1 heartbeat]# chkconfig httpd off

9)现在可以启用heartbeat的服务,观察日志

[root@hua1 ~]# tail -f /var/log/messages

[root@hua1 html]# service httpd status (这时http服务已经启动了)

httpd (pid  5021) is running...

[root@hua1 html]# ifconfig (这时查看端口发现已经把vip地址资源挣用过来了)

10)另一台启动失败,主要原因是没改权限

[root@hua2 html]# chmod 600 /etc/ha.d/authkeys

[root@hua2 html]# service heartbeat start

logd is already running

Starting High-Availability services:

2012/12/29_02:19:34 INFO:  Resource is stopped

[确定]

11)模式失效

[root@hua1 ha.d]# cd /usr/lib/heartbeat/     (/usr/share/heartbeat)

这两个目录都可以模拟

[root@hua1 heartbeat]# ./hb_standby (模拟断掉)

[root@hua2 html]# watch -n 1 "service httpd status" (动态观察http的状态)

[root@hua2 html]# ifconfig (查看地址已经没有了,跑到另一台机器上去了)

[root@hua1 heartbeat]# ./hb_takeover  (模拟有好了,能把资源又征用过来了)

[root@hua1 heartbeat]# pwd

/usr/lib/heartbeat

3、实现director的高可用性

1)配置基本的网卡,还有一个虚拟的vip网卡地址,掩码是255.255.255.255(两台都一样)

[root@mail ~]# route -n

2)root@mail ~]# route add -host 192.168.145.101 dev lo:0 (添加一条特殊路由,指向vip的地址)

3)原来做的基础上把所做过的服务停掉

[root@hua1 ~]# service heartbeat stop

[确定]

[root@mail html]# chkconfig --list httpd

httpd           0:关闭 1:关闭 2:关闭 3:关闭 4:关闭 5:关闭 6:关闭

[root@mail html]# service httpd stop

停止 httpd:                                               [确定]

4)现在是控制ipvsadm的服务了

[root@hua2 ~]# vim /etc/yum.repos.d/rhel-debuginfo.repo

[root@hua2 ~]# cd /mnt/cdrom/Cluster

[root@hua2 Cluster]# yum install ipvsadm-1.24-10.i386.rpm

[root@hua1 ~]# cp /etc/init.d/ipvsadm /etc/ha.d/resource.d/

[root@hua1 ~]# ipvsadm -C

[root@hua1 ~]# ipvsadm -A -t 192.168.145.101 -s rr

Zero port specified for non-persistent service

[root@hua1 ~]# ipvsadm -A -t 192.168.145.101:80 -s rr

[root@hua1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.200 -g

[root@hua1 ~]# ipvsadm -a -t 192.168.145.101:80 -r 192.168.145.201 -g

[root@hua1 ~]# ipvsadm -ln

[root@hua1 ~]# service ipvsadm save

scp hua1.a.com:/etc/sysconfig/ipvsadm /etc/sysconfig/ipvsadm (把一台的配置拷贝到另一个服务器上了)

4、实现动态的转发规则表

意义:就是当后方的所管理的服务器有异常时,就能被前方的管理集群所察觉到,并作出相应的改变。

1)需要一个软件包,安装上去。

[root@hua1 ~]# yum localinstall heartbeat-ldirectord-2.1.4-9.el5.i386.rpm --nogpgcheck

[root@hua1 ~]# rpm -pql heartbeat-ldirectord-2.1.4-9.el5.i386.rpm

2)[root@hua1 ~]# cp /etc/init.d/ldirectord /etc/ha.d/resource.d/ (把要管理的服务器脚本拷贝过去)

3)[root@hua1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/

4)[root@hua1 ~]# vim /etc/ha.d/ldirectord.cf

5)[root@hua1 ~]# vim /etc/ha.d/haresources

hua1.a.com 192.168.145.101/24/eth0 ldirectord::ldirectord.cf

6)两台的web服务器要根据ldirector上的东西编写测试页面。

[root@hua1 ~]# cd /var/www/html/

[root@hua1 html]# echo "yes" >.hua.htm

7)做完后不用重启,能够自动加载,这时查看规则已经能查看到了,因为这时检测不到后方的web工作

8)然后开启一个web的服务就能发现权值变成了1.

[root@mail html]# service httpd start

9)如何在编辑/etc/ha.d/ldirectord.cf   这个文件时,把quiescent (静默模式)改为了no,如何发现后方的检测页面不能检测到则会把规则直接删掉

[root@mail html]# service httpd stop (把一台的服务停掉,然后就发现,规则没有了)

转载于:https://blog.51cto.com/yudonghua/1104026

lvs和HA的高可用性相关推荐

  1. Pfsense HA(高可用性群集)

    0x00 前言 前段时间公司防火墙所在物理机死机了,导致公司网络瘫痪.公司各网站无法访问,所以才想到去研究这个Pfsense HA.正好公司在准备举办一个比赛,作为安全工作者,肯定有压力啦!!各个方面 ...

  2. 高可用性HA及Cluster集群

    vSphere Cluster简介 Cluster就是把所有的ESX/ESXi组织起来,形成一个大的资源池,所有的虚拟机可在池中的任意主机上自由移动,并且Cluster可做到快速扩容和HA故障冗余:所 ...

  3. LVS原理介绍及安装过程

    一.ARP技术概念介绍 为什么讲ARP技术,因为平常工作中有接触.还有就是LVS的dr模式是用到arp的技术和数据. 1.什么是ARP协议 ARP协议全程地址解析协议(AddressResolutio ...

  4. Keepalived+LVS+MySQL双主复制实现读写负载均衡及高可用

    目录 一.Keepalived和LVS简介 1. Keepalived简介 2. LVS简介 二.安装配置 1. 下载安装LVS 2. 下载安装Keepalived 3. Keepalived配置 5 ...

  5. 系统优化与lvs详解配置、haproxy

    涉及内容比较杂乱,请耐心阅读,为自己阅读实践过程中摘要 设备: 服务器IBM x3850 x6 戴尔 R720 防火墙,华为 USG5120 交换机 (机房) 华为5700 二层,48GE电口 路由器 ...

  6. LVS负载均衡群集架构(一):NET模式群集部署

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一.群集的含义 1.概念 2.问题 3..解决方法 二.集群的分类 1.负载均衡群集:聚合和负载均衡 2.高可用群集(Hig ...

  7. LVS负载均衡群集(一):NET模式群集部署

    文章目录 一.群集的含义 1.1 概念 1.2 问题 1.3. 解决方法 二.集群的分类 2.1 负载均衡群集:聚合和负载均衡 2.2 高可用群集(High Availability Cluster) ...

  8. LVS+Keepalived

    群集的含义 Cluster,集群.群集 由多台主机构成,但对外只表现为一个整体,只提供一个访问入口(域名或IP地址),相当于一台大型计算机 问题 互联网应用中,随着站点对硬件性能.影响速度.服务稳定性 ...

  9. lvs+keepalive

    目录 一.LVS+Keepalived 高可用群集 1.Keepalived工具介绍 2.工作原理 3.Keepalived实现原理剖析 4. VRRP (虚拟路由冗余协议) 5.故障转移机制 二.L ...

最新文章

  1. java接口 密钥签名作用_api接口签名加密请求(二)
  2. [云炬创业基础笔记] 第四章测试5
  3. Pandas数据清洗工具箱
  4. S2-016、S2-017
  5. C++ STL 容器 vector
  6. php多维数组交集,求数组差/交集函数-php数组函数(二)
  7. php获取站点的根目录和站点的根URL
  8. CSDN 原力计划之最具技术影响力企业博客英雄榜 发布!
  9. 火狐浏览器_全球知名度非常高的火狐浏览器,它好在哪呢?
  10. 零基础必看的Linux入门教程 (AcWing)
  11. 两个约翰的故事--读DOOM启示录
  12. 硬盘安装Win7教程!无光驱无U盘照样装Win7
  13. 作为研发面试官,亲自教你面试技巧
  14. win7设置自动开机时间_win7本地连接ip设置方法
  15. python中item是什么意思中文-python中的item
  16. 服务器和交换机物理连接_「网络安全」网络设备篇(6)——四层交换机
  17. StackExchange.Redis Timeout performing 超时问题
  18. 识别喜欢开发的程序员
  19. JQ input框单多图上传
  20. 创建一个Android Cardboard 360 Video Viewer

热门文章

  1. 软件工程学习笔记《三》代码优化和性能测试
  2. android linux网络连接,Android和Linux服务器之间的TCP连接
  3. 套接字编程---2(TCP套接字编程的流程,TCP套接字编程中的接口函数,TCP套接字的实现,TCP套接字出现的问题,TCP套接字多进程版本,TCP套接字多线程版本)
  4. CodeForces - 1144F搜索+简单图论
  5. 1050 螺旋矩阵 (25 分
  6. 大厂也在用的6种数据脱敏方案,醍醐灌顶!
  7. mysql shell 回车换行_【shell mysql 导出数据到csv脚本,完美解决乱码转义符等问题】-费元星...
  8. JavaScript知识笔记(三)——内置对象、浏览器对象
  9. 中间的数(若已经排好序)
  10. ORA-01940: cannot drop a user that is currently connected解决方法