高可用集群就是为了保证某项服务能够时时在线,我们可以通过几个9来衡量一个高可用集群提供服务的稳定性,例如5个9的高可用集群必须保证服务一年在线的时间占99.999%,也就是说一年的时间中仅允许服务电线不到6分钟的时间,可见高可用集群非同反响。
下面我就给大家讲解一下高可用性集群的工作机制,由于只是为了讲明原理,在此处我们就假设一个集群中之后两个节点(即两台提供服务的主机,假设提供的是web服务)。
最简单的高可用集群的工作机制为,两个节点都在线,但是只有节点1提供web服务,在提供服务的同时,节点1还要在特定的时间段内不停的向外发送自己的心跳信息,以此来通告在同一个集群中的节点2自己运行正常,当节点2连续2-3此在规定的时间段内没有接受到几点1的心跳信息,则就认为节点1已经不能正常的提供web服务了,此时节点2就直接将节点1的资源(资源:就是为提供一个服务所需要必须东西,如IP,数据等)抢夺过来,并立刻提供相同的服务,这样就保证了服务的时时在线。
当然这是最简单的靠可用集群的工作机制,但是只有理解了基本的原理,才能进行更高层次的探索,下面我们就基于这个最简单、最基本的高可用集群的原理来实现基于Heartbeat的高可用web服务集群
实验目的:通过Heartbeat来实现高可用web服务集群模拟
实验拓扑图如下图所示:
每个节点都有两块网卡分别为eth0、eth1,前者和交换机或路由器相连来为外界提供服务,后者直接连接为彼此传递心跳信息,VIP为在线提供服务的节点向外提供服务的IP地址,这是一个虚拟的IP地址,当提供服务的节点宕机之后,这个VIP就将被替代者所使用。
这里我们要使用到heartbeat软件,下面我们就对这款软件的三个主要的配置问津进行一下介绍:
/etc/ha.d/ha.cf 定义心跳信息传输的端口以及整个集群一共有多少个节点
/etc/ha.d/haresources 本地最简单的基于纯文本文件的CRM,用来定义集群使用的VIP、广播等基本资源
/etc/ha.d/authkeys(400) 对传递的心跳信息进行签名,防止心跳信息被改动
下面 我们就开始进行相应的配置:
1、给noid1配置地址
ifconfig eth0 192.168.0.202/24
ifconfig eth1 1.1.1.1
给noid2配置地址
ifconfig eth0 192.168.0.204/24
ifconfig eth1 1.1.1.2
2、配置本地主机名称解析
在node1上
vim /etc/hosts 添加如下内容
192.168.0.202 node1.a.org
192.168.0.204 node2.a.org
node1、node2的主机名进行相应的修改
在node1上
hostname node1.a.org
在node2上
hostname node2.a.org
3、只有我们要多次在连个节点间拷贝文件,为了省去繁琐的密码输入,我们在两个节点上进行如下配置
在node1上
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.204
在node2上
ssh-keygen -t rsa
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.0.202
从此我们在两个节点上拷贝文件就不需要输入密码了
4、在两个节点上分别安装httpd
yum install httpd –y
任何集群服务都需要使用集群启动,而非手动启动,并保证开机不能自动启动
chkconfig httpd off 防止开机自动启动
给每个http写一个网页,内容分别为自己的主机名,以便进行测试
在两个节点上进行同样的操作
5、开始安装集群服务
(1)、下载安装包