什么是高可用集群

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


Heartbeat简介

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

       随着Linux在关键行业应用的逐渐增多,它必将提供一些原来由IBM和SUN这样的大型商业公司所提供的服务,这些商业公司所提供的服务都有一个关键特性,就是高可用集群。


Heartbeat 工作原理

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

--------------------------以上部分截取自百度百科--------------------------


HA集群之Heartbeat  v1 高可用安装讲解_httpd

演示环境:

CentOS6.5:

lvs1 lvs01.ssc.com eth0 10.19.166.197

lvs2 lvs02.ssc.com eth0 10.19.166.198

VIP信息:10.19.166.20

注意:主机名要一致

请 uname -n //查看自己环境的主机名,我这里的主机名lvs01.ssc.com,lvs02.ssc.com


关闭:

selinux disabled

iptables off


包组与类库:

Compatibility libraries

Development tools

Server Platform Development

注意:请提前安装好这些包和库(减少后面安装rpm包出现各种问题)


1、修改本机的hostname, # vi /etc/sysconfig/network 如下图:

HA集群之Heartbeat  v1 高可用安装讲解_linxu_02

修改 lvs1,lvs2主机的hosts,# vim /etc/hosts,如下图:  

注:里面依次填入 IP,主机名,主机名短格式名称

HA集群之Heartbeat  v1 高可用安装讲解_集群_03

对ping下短格式名称是否能ping通

HA集群之Heartbeat  v1 高可用安装讲解_httpd_04

HA集群之Heartbeat  v1 高可用安装讲解_heartbeat_05


2、利用ssh密钥打通两台主机的链接,做为两主机的互信机制

1)生成ssh密钥

HA集群之Heartbeat  v1 高可用安装讲解_httpd_06


2)把 lvs1 的公钥copy到 lvs2 ,把lvs2的公钥copy到lvs1,下图拿lvs1举例,总之就是双方互通;

HA集群之Heartbeat  v1 高可用安装讲解_httpd_07

测试是否打通

HA集群之Heartbeat  v1 高可用安装讲解_集群_08

3)同步两台节点服务器的系统时间(注:系统时间必须一致)(两台节点服务器都要设置)

没有ntpdate的,请先安装ntpdate,安装方式为: # yum install tnpdate -y

同步网络上的时间服务器,如国家授权中心服务器IP:210.72.145.44(注意:不过老是同步报错)

所以我这里用的是上海交大的网络中心NTP服务器的地址,202.120.2.101 (已测可用)

在crontab 里添加一条每五分钟自动执行的任务,保证两台服务器的时间与网络时间一致,这点很重要

HA集群之Heartbeat  v1 高可用安装讲解_linxu_09


3、安装heartbeat(我这里的包,最后放在附件打包给大家,包是马哥做的,请支持原作者,如需更多学习资料,请报名马哥教育)

注:这里只演示lvs1这台服务器,lvs2同理,只是把lvs1这些包,拷过去安装就行; 

这里把我heartbeat rpm包,已经分别放在了两台测试服务器的 /opt目录下

1)安装带有libnet的epel源(这个源是我在网上找的,一并打包给各位)

HA集群之Heartbeat  v1 高可用安装讲解_linxu_10

2)yum 安装相关依赖包

HA集群之Heartbeat  v1 高可用安装讲解_集群_11

3)安装heartbeat rpm包

HA集群之Heartbeat  v1 高可用安装讲解_集群_12


4、组播IP地址介绍,摘自马哥文档


组播IP地址用于标识一个IP组播组。IANA(internet assigned number authority)把D类地址空间分配给IP组播,其范围是从224.0.0.0到239.255.255.255。如下图所示(二进制表示),IP组播地址前四位均为1110八位组⑴ 八位组⑵ 八位组⑶ 八位组⑷1110

XXXX XXXXXXXX XXXXXXXX XXXXXXXX组播组可以是永久的也可以是临时的。组播组地址中,有一部分由官方分配的,称为永久组播组。永久组播组保持不变的是它的ip地址,组中的成员构成可以发生变化。永久组播组中成员的数量都可以是任意的,甚至可以为零。那些没有保留下来供永久组播组使用的ip组播地址,可以被临时组播组利用。

224.0.0.0~224.0.0.255为预留的组播地址(永久组地址),地址224.0.0.0保留不做分配,其它地址供路由协议使用。

224.0.1.0~238.255.255.255为用户可用的组播地址(临时组地址),全网范围内有效。

239.0.0.0~239.255.255.255为本地管理组播地址,仅在特定的本地范围内有效。常用的预留组播地址列表如下:

224.0.0.0 基准地址(保留)

224.0.0.1 所有主机的地址

224.0.0.2 所有组播路由器的地址

224.0.0.3 不分配

224.0.0.4dvmrp(Distance Vector Multicast Routing Protocol,距离矢量组播路由协议)路由器

224.0.0.5 ospf(Open Shortest Path First,开放最短路径优先)路由器

224.0.0.6 ospf dr(Designated Router,指定路由器)

224.0.0.7 st (Shared Tree,共享树)路由器

224.0.0.8 st主机

224.0.0.9 rip-2路由器

224.0.0.10 Eigrp(Enhanced Interior Gateway Routing Protocol,增强网关内部路由线路协议)路由器 224.0.0.11 活动代理

224.0.0.12 dhcp服务器/中继代理

224.0.0.13 所有pim (Protocol Independent Multicast,协议无关组播)路由器

224.0.0.14 rsvp (Resource Reservation Protocol,资源预留协议)封装

224.0.0.15 所有cbt 路由器

224.0.0.16 指定sbm(Subnetwork Bandwidth Management,子网带宽管理)

224.0.0.17 所有sbms

224.0.0.18 vrrp(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)

239.255.255.255 SSDP协议使用


5、查看heartbeat默认端口(注此端口是IANA分给heartbeat固定端口)

HA集群之Heartbeat  v1 高可用安装讲解_httpd_13


heartbeat v1的配置(修改这按个文件的配置信息):

        主配置文件:ha.cf

        认证密钥:authkey,其权限必须为组合其它无权访问;

        用于资源的文件:haresources


1)拷贝文件到/etc/ha.d/目录中

HA集群之Heartbeat  v1 高可用安装讲解_heartbeat_14

2)修改 authkeys 权限,# chmod 600  authkeys ,否则heartbeat无法启动

3)修改配置文件 ha.cf,我这里只启用这几项,并做了修改;

HA集群之Heartbeat  v1 高可用安装讲解_heartbeat_15

相关配置参数的讲解(版权,马哥)
logfile /var/log/ha-log
#指名heartbaet的日志存放位置

#mcast eth0 225.100.90.101 694 1 0
#采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的三种方式,任选其一即可。

auto_failback on
#用来定义当主节点恢复后,是否将服务自动切回,heartbeat的两台主机分别为主节点和备份节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给备份节点并由备份节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代备份节点,如果该选项设置为off,那么当主节点恢复后,将变为备份节点,而原来的备份节点成为主节点

node lvs01.ssc.com  
#主节点主机名,可以通过命令“uname –n”查看。
node lvs02.ssc.com  
#备用节点主机名

ping 10.19.166.1
#选择ping的节点,ping 节点选择的越好,HA集群就越强壮,可以选择固定的路由器作为ping节点,但是最好不要选择集群中的成员作为ping节点,ping节点仅仅用来测试网络连接


4)修改authkeys配置

HA集群之Heartbeat  v1 高可用安装讲解_httpd_16

注:这里的加密方式是随机的。(选用的方式和使用的方式必须保持一致)

# openssl rand -hex 8  //生成8位密钥,如上图所示

5)修改 haresources 文件

HA集群之Heartbeat  v1 高可用安装讲解_集群_17

lvs01.ssc.com //集群节点

10.19.166.20/31/eth0/10.19.255.255 //VIP地址/掩码位数/网卡/

httpd //apache启动程序,如未安装请yum install httpd -y 安装


6)拷贝lvs1 上的 ha.cf haresources authkeys  到lvs2上的/etc/ha.d/目录中


7)在apache 默认路径创建页面测试文件 index.html内容随便写,启动httpd服务,curl测试网页是否能够访问成功; (注:lvs1,lvs2 两台服务器都要设置),测试完成后,手动停止httpd服务(必须停止)。


8)启动heartbeat服务,(lvs2主机也启动)

HA集群之Heartbeat  v1 高可用安装讲解_linxu_18

查看启动状态:

HA集群之Heartbeat  v1 高可用安装讲解_httpd_19

同时查看80端口也已经自动启动

HA集群之Heartbeat  v1 高可用安装讲解_httpd_20

9)打开浏览器测试网页

HA集群之Heartbeat  v1 高可用安装讲解_httpd_21


我们接下来停止 lvs1的heartbeat后,我们看到已经自动转到lvs2

HA集群之Heartbeat  v1 高可用安装讲解_httpd_22


OK,就是这样~