阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

高可用(HA)集群构建

137次阅读
没有评论

共计 3686 个字符,预计需要花费 10 分钟才能阅读完成。

1、HA 集群介绍

HA 即(high available)高可用,又被叫做双机热备,用于关键性业务。可以这样理解,有两台机器 A 和 B,正常情况下,A 提供服务,B 待命闲置,当 A 宕机或服务宕掉,会切换至 B 机继续提供该服务。常用实现高可用的开源软件有 heartbeat 和 keepalived,其中 keepalived 有负载均衡的功能。

高可用(HA)集群构建

如上图所示为一个 HA 架构,一个交换机下面有两台机器 Web1 和 Web2,其中 Web1 为主节点,正常使它提供服务,而 Web2 备用节点是闲置的。Web1 和 Web2 中间有一根心跳线,检查对方的存活状态。流动 IP,也叫 vip 是对外提供服务的 ip,正常情况下配置在 Web1 上,当 Web1 宕机后,Web2 会自动配置该 vip,对外提供服务。

2、前期准备

准备两台机器,一个使用了 CentOS6.5,另一个 centos6.3,系统版本不同不影响实验

网卡 eth0 ip 如下

master 192.168.1.165

slave 192.168.1.163

下面操作在两个机器上都要操作:

(1)设置 hostname,分别为主 master 和从 slave

主上设置:

# hostname  master

# vim /etc/sysconfig/network

HOSTNAME=localhost.localdomain

修改为

HOSTNAME=master

从上设置

# hostname  slave

# vim /etc/sysconfig/network

HOSTNAME=localhost.localdomain

修改为

HOSTNAME=slave

(2)关闭防火墙,主从都操作

# iptables -F

# service iptables save

# getenforce 0

# vim /etc/selinux/config

SELINUX=enforcing

修改为

SELINUX=disabled

(3)配置 host,主从操作一样

# vim  /etc/host

192.168.1.165 master

192.168.1.163 slave

 

3、heartbeat 安装

主机和从机都需要安装 heartbeat,同时需要 libnet,主机从机执行同样的命令

# yum install -y heartbeat

# yum install -y libnet

如果没有包,则需要安装一个扩展 yum 源,heartbeat 在 epel 源中。

# yum install -y epel-release

 

4、主节点配置

需要先将 3 个相关的配置文件放置在 heartbeat 的配置目录下

# cd /usr/share/doc/heartbeat-3.0.4/

# cp authkeys ha.cf haresources /etc/ha.d/

之后便可以开始修改配置文件了,先修改验证文件

# cd /etc/ha.d/

# vim authkeys # 用来验证,主从通过通信验证对方是否存活,需要加密

auth 3 # 此处打开,数字表示选择哪种加密方式

#1 crc # 最简单

#2 sha1 HI! # 最复杂

3 md5 Hello! # 处于中间等级的加密方式

# chmod 600 /etc/ha.d/authkeys

# 如果不修改权限,heartbeat 启动不了

第二个配置 haresources 文件,只需要编辑一行。因为当前在 ha.d 目录下,直接 vim。如果不是,用绝对路径或者 cd

# vim haresources

#node1  10.0.0.170  Filesystem::/dev/sda1::/data1::ext2

# 找到上面一行,改成下面,需要去掉 #

master  192.168.1.186/24/eth0:0 nginx

# master 是主的主机名;192.168.1.186 是 vip,/24 指定网段,网卡 eth0:0(这里采用了虚拟网卡);nginx 提供服务,如果主宕掉,从启动。

最后一个配置 ha.cf,里边基本全是注释,这里选择删掉重新写入, 当前依旧在 /etc/ha.d 目录下

# > ha.cf

# vim ha.cf

debugfile /var/log/ha-debug

logfile /var/log/ha-log

logfacility    local0

keepalive 2

deadtime 30

warntime 10

initdead 60

udpport 694

ucast eth0 192.168.1.163

auto_failback on

node    master

node    slave

ping 192.168.1.1

respawn hacluster /usr/lib/heartbeat/ipfail

配置说明:

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

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

logfacility    local0:日志级别

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

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

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

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

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

ucast eth0 192.168.1.163:ucast 指定对方 ip,bcast 形式寻找;eth0 心跳检测自己的网卡,ip 对方的 ip

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

node    master:指定主

node    slave:指定从

ping 192.168.1.1

respawn hacluster /usr/lib/heartbeat/ipfail:指定与 heartbeat 一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是 ipfail,该进程用于检测和处理网络故障,需要配合 ping 语句指定的 pingnode 来检测网络连接。如果系统是 64 位,将地址中的 lib 改为 lib64

然后安装一个 nginx,用于后边测试

# yum install -y nginx

 

5、从节点配置

把主上的三个配置拷贝到从上,使用 scp 命令;并且只需要在从上修改 ha.cf 文件一个地方即可

# scp authkeys ha.cf haresources slave:/etc/ha.d/

# vim /etc/ha.d/ha.cf

ucast eth0 192.168.1.163 改为 ucast eth0 192.168.1.165

也安装一个 nginx,用于后边测试

# yum install -y nginx

 

6、heartbeat 测试

启动 heartbeat,顺序很重要,先主后从

# service heartbeat start

检查测试(主),第一次会需要等待一段时间,耐心

# ifconfig

看是否有 eth0:0

# ps aux | grep nginx

看是否有 nginx 进程

测试(1)

因为主从指间的心跳实质是通过 ping 来连通,so 主故意禁掉 ping,死掉

# iptables -D INPUT -p icmp -j DROP

如果失败,查看日志发现卡在这里不动

Dec 08 18:56:53 master heartbeat: [9590]: WARN: node 192.168.1.1: is dead

Dec 08 18:56:53 master heartbeat: [9590]: info: Link 192.168.1.1:192.168.1.1 dead.

Dec 08 18:56:53 master ipfail: [9619]: info: Status update: Node 192.168.1.1 now has status dead

harc(default)[10097]: 2016/12/08_18:56:53 info: Running /etc/ha.d//rc.d/status status

Dec 08 18:56:54 master ipfail: [9619]: info: NS: We are dead. :<

Dec 08 18:56:54 master ipfail: [9619]: info: Link Status update: Link 192.168.1.1/192.168.1.1 now has status dead

Dec 08 18:56:55 master ipfail: [9619]: info: We are dead. :<

Dec 08 18:56:55 master ipfail: [9619]: info: Asking other side for ping node count.

尝试解决方法

将从上的 ha.cf 配置文件中的 ucast 修改如下

bcast  eth0

然后重新测试

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-02/140341.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计3686字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中