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

Heartbeat+LVS构建高可用负载均衡集群

119次阅读
没有评论

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

本篇文章是在实验环境下完成的,能够实现对服务的高可用和负载均衡要求,亲测可行。至于生产环境的各中压力测试没有进行更好的优化,希望大家能按自己的需求借鉴,并且提出意见。在整个构架中,heartbeat 作为一个高可用软件,对特定的服务进行监控和故障转移;而 lvs(Linux Virtual Server)作为负载均衡软件,对前端客户的访问请求进行调度,能够真正减少前端 web 服务器的压力。然而作为 lvs 调度,如果只有单台调度很容易造成单点故障,这时将引入 heartbeat,通过 heartbeat 内置插件 ldirectord 对 lvs 的监控(ldirectord 是 heartbeat 的一个服务),…

————————————– 分割线 ————————————–

相关阅读

基于 Heartbeat V1 实现 Web 服务双机热备 http://www.linuxidc.com/Linux/2014-04/100635.htm

Heartbeat 实现 Web 服务的高可用群集 http://www.linuxidc.com/Linux/2014-04/99503.htm

Heartbeat+LVS+Ldirectord 高可用负载均衡解决方案 http://www.linuxidc.com/Linux/2014-04/99502.htm

DRBD+Heartbeat+NFS 高可用性配置笔记 http://www.linuxidc.com/Linux/2014-04/99501.htm

Heartbeat 基于 CRM 使用 NFS 对 MySQL 高可用 http://www.linuxidc.com/Linux/2014-03/98674.htm

Heartbeat 高可用 httpd 基于 Resources 简单配置 http://www.linuxidc.com/Linux/2014-03/98672.htm

————————————– 分割线 ————————————–

heartbeat+lvs 实现高可用负载均衡原理:

两台 heartbeat(ldirectord)主机构成高可用集群, 同时监管着 lvs(负载均衡集群)整体构成了 heartbeat+lvs 的高可用负载均衡集群. 在使用 heartbeat 的时候加载了 watchdog 模块, 用来检测 heartbeat 服务, 当 heartbeat 服务出现故障, 会进行重启主机。

注意: 但是,当内核崩溃了,watchdog 也无能了(modprobe softdog), 因为 watchdog 是基于内核级别的软件服务(相当于软 fence 一种硬件保护机制)

实验环境:CentOS 6.4

系统架构主要由四台主机组成,两台 heartbeat 主机作为 lvs 和 heartbeat,两台 Real Server 主机作为真实服务器。

实验准备:

1. 在本地 /etc/hosts 文件中定义各个节点的解析。

2. 关闭 selinux 和 iptables

3. 软件下载:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm

ldirectord-3.9.2-1.2.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm

实验步骤:

一、heartbeat 安装及配置:

# yum localinstall *.rpm 使用 yum 方式安装,能够解决本地 rpm 包所需要依赖(前提得需要 yum 源)

#less /etc/ha.d/README.config

ha.cf Main configuration file heartbeat 高可用主配置文件
haresources Resource configuration file 资源文件
authkeys Authentication information 认证文件

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

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

# vim ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2 指定心跳间隔为 2s
deadtime 30 备用节点在 30s 后自动接管资源
warntime 10 心跳延迟 10s,10s 内备用机不接受主节点心跳 就会发出警告
initdead 60 重启后恢复网络的时间(至少 deadtime 的 2 倍)
udpport 666 广播通信使用的端口
bcast eth0 使用广播()
auto_failback on 故障转换
watchdog /dev/watchdog 这个得加载一个模块
node server66.example.com 主节点和辅助节点
node server68.example.com
ping 192.168.0.253 测试连通性,最好是网关

respawn 选项是可选的, 列出与 heartbeat 一起启动和关闭的进程, 该进程一般是和 heartbeat 集成的插件, 这些进程遇到故障可以自动重启。默认使用 ipfail
respawn hacluster /usr/lib64/heartbeat/ipfail 检测和处理网络故障
#apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster ipfail 的运行用户和组

加载 watchdog, 软 fence 监控 heartbeat 并且重启

# modprobe softdog

# vi /etc/rc.local 设置开机自动加载

modprobe softdog

# vim authkeys 认证文件权限必须 600
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

# chmod 600 authkeys

# vim haresources

server68.example.com IPaddr::192.168.0.234/24/eth0 httpd 定义主节点,虚拟 ip 和监控的服务

要确定主节点的 httpd 服务启动了

heartbeat 默认可用监控一下目录的服务:

/etc/init.d/ ;/etc/ha.d/resource.d/ ;/etc/ha.d/rc.d/

heartbeat 安装配置完成,此时可以在另外一台主机上安装 heartbeat,并且进行相应的配置。(注意,在配置集群的时候,尽量选择相同配置的主机,这样便于以后管理和排错)

测试 heartbeat:

#/etc/init.d/heartbeat start 分别在两台 heartbeat 主机上启动服务

#tail -f /var/log/message 查看日志发现 server68 主机接管 VIP 资源,此时可以 ping 同 VIP

同时 heartbeat 服务监控本地 httpd 服务,发现 httpd 也会开启

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101764p2.htm 

二、构建 lvs 负载均衡集群

在之前两台 heartbeat 主机上进行相同的安装配置操作(部分参数得指定)

使用 lvs 负载均衡会使用到三种工作方式 (NAT/DR/TNU) 和八种调度算法,这里就做说明。

lvs 的配置一般有三种方式: 通过 ipvsadm 命令配置
通过 ldirectord(heartbeat 插件) 来配置
通过红帽可视化 piranha 软件进行配置

通过 ipvsadm 命令配置 lvs:
# ipvsadm -A -t 192.168.0.224:80 -s rr 定义一个 VIP,使用轮询
# ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.103:80 -g 定义 rs 使用 DR 模式
# ipvsadm -a -t 192.168.0.224:80 -r 192.168.0.191:80 -g

本章将使用 ldirectord 配置 lvs:
ldirectord 工作原理:
ldirectord 需要你在真实服务器内启用 apache 服务器,并在每台真实服务器 web 服务器的根目录下建立你在配置文件所指定的文件与内容,然后 ldirectord 通过循环检查此文件来确定真实服务器是否存活,如果不存活,则自动将其权重设为 0,以确保后面客户的连接不会再导向失效的真实服务器,如果真实服务修复上线后,则其又将它的权重设为以使它能够继续为客端连接提供服务。
ldirectord 主要是通过调用 ipvsadm 来创建 ipvs 虚拟服务器表。

#yum install ipvs -y
#yum localinstall ldirectord****.rpm
perl-IO-Socket-INET6 ldirectord 启动时需要的包
#/etc/init.d/ldirectord start

使用 ldirectord 来配置 lvs, 并将 ldirectord 交给 heartbeat 控管:
将 lvs 交给 ldirectord 来监控:
注意:heartbeat 上安装 ldirectord
heartbeat 上安装 lvs
主备配置文件一致
#cp -r /usr/share/doc/packages/ldirectord/ldirectord.cf /etc/ha.d/

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

virtual=192.168.0.224:80 定义虚拟资源 VIP
real=192.168.0.103:80 gate 指定后端真实服务器,采用 DR 调度模式
real=192.168.0.191:80 gate
fallback=127.0.0.1:80 gate 当真实服务器宕机,本机自动接管
service=http
scheduler=rr 使用轮询调度算法
#persistent=600
#netmask=255.255.255.255
protocol=tcp
checktype=negotiate
checkport=80

#vim /etc/init.d/ldirectord
#. /etc/ha.d/shellfuncs 注释掉

#/etc/init.d/ldirectord start

Real Server 需要进行一下配置:

注意:在配置 lvs 负载均衡时,后端真实服务器需要制定 VIP 和禁止 arp(使用 arptables 软件)

#yum install arptables_jf -y
#ifconfig lo:0 192.168.0.224 netmask 255.255.255.255
#arptables -A IN -d 192.168.0.224 -j DROP VIP 设置
#arptables -A OUT -s 192.168.0.224 -j mangle –mangle-ip-s 192.168.0.103 增加 RS
#/etc/init.d/arptables_jf save
#chkconfig arptables_jf on

lvs 负载均衡集群配置成功

测试:在浏览器中访问 http://192.168.0.224 会自动加载 103 和 191 的 web 发布页面,刷新会自动跳转则配置成功。

三、整合 heartbeat+lvs 实现高可用负载均衡

首先在另外一台 heartbeat 主机上安装并且配置 LVS,并且启动相应的服务。

修改 heartbeat 资源配置文件:

# vim haresources
server68.example.com IPaddr::192.168.0.224/24/eth0 httpd ldirectord
注意: 主备心跳节点必须同步哦

这样,就可以使用 heartbeat 来监控和控制 lvs 了(其实是 heartbeat 能够监控三个目录里的脚本文件,就直接监控了 ldirectord, 而 ldirectord 又用来配置和监控 LVS)

测试:现在直接关闭 ldirectord
开启 heartbeat,会发现 ldirectord 开启了,同时访问流量器能够访问 RS 的内容
其实是 lvs 负载均衡过来的哦
测试高可用性和负载均衡性吧!

1. 当关闭任何一个 heartbeat 主机,另外一个 heartbeat 主机会进行检测和接管服务(VIP 和 ldirectord,ldirectord 其实监控的 lvs),因此不会影响客户对后端真实服务的访问。

2. 负载均衡测试:在不断的刷新过程中,会刷新出不同 Real Server 主机发布的页面。

本篇文章是在实验环境下完成的,能够实现对服务的高可用和负载均衡要求,亲测可行。至于生产环境的各中压力测试没有进行更好的优化,希望大家能按自己的需求借鉴,并且提出意见。在整个构架中,heartbeat 作为一个高可用软件,对特定的服务进行监控和故障转移;而 lvs(Linux Virtual Server)作为负载均衡软件,对前端客户的访问请求进行调度,能够真正减少前端 web 服务器的压力。然而作为 lvs 调度,如果只有单台调度很容易造成单点故障,这时将引入 heartbeat,通过 heartbeat 内置插件 ldirectord 对 lvs 的监控(ldirectord 是 heartbeat 的一个服务),…

————————————– 分割线 ————————————–

相关阅读

基于 Heartbeat V1 实现 Web 服务双机热备 http://www.linuxidc.com/Linux/2014-04/100635.htm

Heartbeat 实现 Web 服务的高可用群集 http://www.linuxidc.com/Linux/2014-04/99503.htm

Heartbeat+LVS+Ldirectord 高可用负载均衡解决方案 http://www.linuxidc.com/Linux/2014-04/99502.htm

DRBD+Heartbeat+NFS 高可用性配置笔记 http://www.linuxidc.com/Linux/2014-04/99501.htm

Heartbeat 基于 CRM 使用 NFS 对 MySQL 高可用 http://www.linuxidc.com/Linux/2014-03/98674.htm

Heartbeat 高可用 httpd 基于 Resources 简单配置 http://www.linuxidc.com/Linux/2014-03/98672.htm

————————————– 分割线 ————————————–

heartbeat+lvs 实现高可用负载均衡原理:

两台 heartbeat(ldirectord)主机构成高可用集群, 同时监管着 lvs(负载均衡集群)整体构成了 heartbeat+lvs 的高可用负载均衡集群. 在使用 heartbeat 的时候加载了 watchdog 模块, 用来检测 heartbeat 服务, 当 heartbeat 服务出现故障, 会进行重启主机。

注意: 但是,当内核崩溃了,watchdog 也无能了(modprobe softdog), 因为 watchdog 是基于内核级别的软件服务(相当于软 fence 一种硬件保护机制)

实验环境:CentOS 6.4

系统架构主要由四台主机组成,两台 heartbeat 主机作为 lvs 和 heartbeat,两台 Real Server 主机作为真实服务器。

实验准备:

1. 在本地 /etc/hosts 文件中定义各个节点的解析。

2. 关闭 selinux 和 iptables

3. 软件下载:heartbeat-3.0.4-1.el6.x86_64.rpm heartbeat-devel-3.0.4-1.el6.x86_64.rpm

ldirectord-3.9.2-1.2.x86_64.rpm heartbeat-libs-3.0.4-1.el6.x86_64.rpm

实验步骤:

一、heartbeat 安装及配置:

# yum localinstall *.rpm 使用 yum 方式安装,能够解决本地 rpm 包所需要依赖(前提得需要 yum 源)

#less /etc/ha.d/README.config

ha.cf Main configuration file heartbeat 高可用主配置文件
haresources Resource configuration file 资源文件
authkeys Authentication information 认证文件

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

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

# vim ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2 指定心跳间隔为 2s
deadtime 30 备用节点在 30s 后自动接管资源
warntime 10 心跳延迟 10s,10s 内备用机不接受主节点心跳 就会发出警告
initdead 60 重启后恢复网络的时间(至少 deadtime 的 2 倍)
udpport 666 广播通信使用的端口
bcast eth0 使用广播()
auto_failback on 故障转换
watchdog /dev/watchdog 这个得加载一个模块
node server66.example.com 主节点和辅助节点
node server68.example.com
ping 192.168.0.253 测试连通性,最好是网关

respawn 选项是可选的, 列出与 heartbeat 一起启动和关闭的进程, 该进程一般是和 heartbeat 集成的插件, 这些进程遇到故障可以自动重启。默认使用 ipfail
respawn hacluster /usr/lib64/heartbeat/ipfail 检测和处理网络故障
#apiauth client-name gid=gidlist uid=uidlist
apiauth ipfail gid=haclient uid=hacluster ipfail 的运行用户和组

加载 watchdog, 软 fence 监控 heartbeat 并且重启

# modprobe softdog

# vi /etc/rc.local 设置开机自动加载

modprobe softdog

# vim authkeys 认证文件权限必须 600
auth 3
#1 crc
#2 sha1 HI!
3 md5 Hello!

# chmod 600 authkeys

# vim haresources

server68.example.com IPaddr::192.168.0.234/24/eth0 httpd 定义主节点,虚拟 ip 和监控的服务

要确定主节点的 httpd 服务启动了

heartbeat 默认可用监控一下目录的服务:

/etc/init.d/ ;/etc/ha.d/resource.d/ ;/etc/ha.d/rc.d/

heartbeat 安装配置完成,此时可以在另外一台主机上安装 heartbeat,并且进行相应的配置。(注意,在配置集群的时候,尽量选择相同配置的主机,这样便于以后管理和排错)

测试 heartbeat:

#/etc/init.d/heartbeat start 分别在两台 heartbeat 主机上启动服务

#tail -f /var/log/message 查看日志发现 server68 主机接管 VIP 资源,此时可以 ping 同 VIP

同时 heartbeat 服务监控本地 httpd 服务,发现 httpd 也会开启

 

更多详情见请继续阅读下一页的精彩内容:http://www.linuxidc.com/Linux/2014-05/101764p2.htm 

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