基于heartbeat v1+ldirectord实现LVS集群高可用

前言

高可用集群,High Availability Cluster,简称HA Cluster,是指以减少服务中断时间为目的的服务器集群技术。通过上文可以看出,LVS集群本身并不能实现高可用,比如Director Server不能检测Real Server的健康度,一旦其中一台或全部Real Server宕机,Director Server还会继续转发请求,导致站点无法访问,同样,如果Director Server宕机站点就更不可能正常运转了。本文将讲解如何基于heartbeat v1实现LVS集群高可用。

Heartbeat 

简介

Heartbeat是Linux-HA工程的一个组件,自1999年开始到现在,发布了众多版本,是目前开源Linux-HA项目最成功的一个例子,在行业内得到了广泛的应用。

工作原理

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

基于Heartbeat v1实现LVS集群高可用

实验拓扑

heartbeat实现lvs高可用.jpg

实验环境

node1:node1.scholar.com 172.16.10.123 CentOS6.6

node2:node2.scholar.com 172.16.10.124 CentOS6.6

Real Server1:192.168.1.10(VIP)172.16.10.125(RIP) CentOS6.6

Real Server2:192.168.1.10(VIP)172.16.10.126(RIP) CentOS6.6

注意事项

配置高可用集群的前提:(以两节点的heartbeat为例)

①时间必须保持同步

使用ntp服务器

②节点必须名称互相通信

解析节点名称

/etc/host

集群中使用的主机名为`uname -n`表示的主机名

③ping node

仅偶数节点才需要

④ssh密钥认证进行通信

配置过程

时间同步

请确保两个节点时间同步,这里不再详细讲述

解析名配置

[root@node1 ~]# vim /etc/hosts

172.16.10.123   node1.scholar.com node1
172.16.10.124   node2.scholar.com node2

[root@node1 ~]# vim /etc/sysconfig/network
HOSTNAME=node1.scholar.com

[root@node1 ~]# uname -n
node1.scholar.com

#两个节点都需如上操作

ssh密钥配置

[root@node1 ~]# ssh-keygen -t rsa -P ''
[root@node1 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node2
[root@node2 ~]# ssh-keygen -t rsa -P ''
[root@node2 ~]# ssh-copy-id -i .ssh/id_rsa.pub root@node1
[root@node1 ~]# date; ssh node2 'date'  #测试
Sun Jun  7 17:46:03 CST 2015
Sun Jun  7 17:46:03 CST 2015

安装所需软件包

#解决依赖关系
[root@node1 ~]# yum install perl-TimeDate net-snmp-libs libnet PyXML -y #需epel源支持
[root@node1 ~]# cd heartbeat2
[root@node1 heartbeat2]# ls
heartbeat-2.1.4-12.el6.x86_64.rpm             heartbeat-pils-2.1.4-12.el6.x86_64.rpm
heartbeat-gui-2.1.4-12.el6.x86_64.rpm         heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm
[root@node1 heartbeat2]# rpm -ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm
[root@node1 heartbeat2]# yum install heartbeat-ldirectord-2.1.4-12.el6.x86_64.rpm -y

#两个节点都执行以上操作

配置heartbeat

准备配置文件

1.jpg

配置算法密钥

[root@node1 ~]# openssl rand -hex 8
4d8fd6cb49d2047b
[root@node1 ~]# vim /etc/ha.d/authkeys

auth 2
2 sha1 4d8fd6cb49d2047b

配置主配置文件

[root@node1 ~]# grep -v "#" /etc/ha.d/ha.cf |grep -v "^$"
logfile	/var/log/ha-log  #日志存放位置
keepalive 2              #指定心跳使用间隔时间
deadtime 30              #指定备用节点接管主节点服务资源超时时间
warntime 10              #指定心跳延迟的时间
initdead 120             #解决网络启动延时
udpport	694              #设置广播通信端口
mcast eth0 225.0.25.1 694 1 0 #定义广播地址
auto_failback on              #定义当主节点恢复后,是否将服务自动切回
node	node1.scholar.com     #主节点
node	node2.scholar.com     #备用节点
ping 172.16.0.1               #仲裁设备

配置资源管理器

[root@node1 ~]# vim /etc/ha.d/haresources 

node1.scholar.com 192.168.1.10/32/eth0/192.168.1.10 ldirectord::/etc/ha.d/ldirectord.cf

将配置文件传给备用节点

2.jpg

配置ldirectord

准备配置文件并配置

[root@node1 ~]# cp /usr/share/doc/heartbeat-ldirectord-2.1.4/ldirectord.cf /etc/ha.d/
[root@node1 ~]# grep -v ^#  /etc/ha.d/ldirectord.cf

checktimeout=3        #探测超时时间
checkinterval=1       #探测间隔时间
autoreload=yes        #修改配置文件,无需重启服务即可重载
quiescent=yes         #real server 宕机后从lvs列表中删除,恢复后自动添加进列表

virtual=192.168.1.10:80     #VIP
	real=172.16.10.125:80 gate    #real server
	real=172.16.10.126:80 gate    #real server
 	fallback=127.0.0.1:80 gate    #如果RS节点都宕机,则启用本地环回口地址
	service=http                  #基于http协议探测
	request=".health.html"        #探测文件
	receive="ok"                  #探测内容,判断RS是否存活
	scheduler=rr                  #调度算法
	#persistent=600
	#netmask=255.255.255.255

将配置文件传给备用节点,并禁止各节点ldirectord开启自启

3.jpg

准备fallback文件

4.jpg

RS设置

#两个RS各进行如下配置

配置内核参数

5.jpg

准备健康度探测文件和站点文件

6.jpg

测试页面

7.jpg

启动heartbeat

8.jpg

查看资源是否生效

9.jpg

高可用测试

10.jpg

刷新页面

11.jpg

将RS2模拟宕机

[root@scholar ~]# service httpd stop

12.jpg

无论怎么刷新都是RS1的页面

接下来我们把RS1也停掉

13.jpg

切回fallback页面了

我们将node1停掉,看一下node2是否可以接管资源

[root@node1 ~]# service heartbeat stop

14.jpg

资源成功接管,以上访问也不受任何影响,当然如果在次启动node1资源会被再次抢过去,这里就不再演示

基于heartbeat v1 实现LVS高可用至此完成

The end

好了,基于heartbeat v1 实现LVS高可用就说到这里了,整个过程还是挺好玩的,配置过程中遇到问题可留言,下篇将会讲解基于heartbeat v2的高可用集群,有兴趣可以继续关注呦。以上仅为个人学习整理,如有错漏,大神勿喷~~~

原创文章,作者:书生,如若转载,请注明出处:http://www.178linux.com/5120

(0)
书生书生
上一篇 2015-06-08
下一篇 2015-06-08

相关推荐

  • 初识LINUX

    初识LINUX 一、计算机的组成 二、Linux的发行版本 发行版:数百种之多,主要分为: Debian分支:ubuntu、mint、knopix Slackware分支:S.u.S.E–>SLES、OpenSUSE RedHat分支: Redhat–>Centos   Fedora Core Gent…

    Linux干货 2016-09-17
  • ifconfig命令学习

    ifconfig命令 网络配置 ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。 语法 ifconfig(参数) 参数 add<地址>:设置网络设备IPv6的ip地址; del&lt…

    Linux干货 2017-07-02
  • N28 第三周【2】:用户和组管理

    用户和组管理 前言 Linux用户管理非常关键且重要,Linux的所有进程都是以不同的身份拥有不同的权限来运行和调度资源的。但是我们不用费劲心思去管理,因为系统将用户划分成为了两部分:无所不能的root用户和普通用户。同时呢,又将普通用户分为系统用户和登录用户。对于Linux,他会用UID去快速识别用户身份,对于我们,可以用用户名去识别。 接下来介绍一下用户…

    Linux干货 2017-12-19
  • 磁盘管理(1)

    1、磁盘结构(机械硬盘) (1)磁盘构成: 磁臂(机械手臂):连接并固定磁头 马达(电机):可以转动盘片,让磁臂上的磁头可以在盘片上读写数据 扇区:最小的物理存储单位,每个扇区为512bytes 磁头:可以读写数据 盘片:主要记录数据 柱面:将扇区组成一个圆就是柱面,柱面是分区的最小单位 (2)磁盘接口 并口:IDE  SCSI&nbsp…

    Linux干货 2016-08-30
  • Linux硬链接和软链接的区别

    一.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在Linux中,多个…

    Linux干货 2016-10-29
  • 马哥linux0803课堂笔记

    课堂笔记   重定向的几种方式 标准输入 0 (stdin) 标准输出 1 (stdout) 标准错误 2 (stderr)   标准输入的重定向方法 cat < file cat << string (多行重定向) xxx aaa string结束 cat file | cat   标准输出的重定向 ls e…

    Linux干货 2016-08-08