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

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

412次阅读
没有评论

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7956641
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

颠覆 AI 开发效率!开源工具一站式管控 30+大模型ApiKey,秘钥付费+负载均衡全搞定

  颠覆 AI 开发效率!开源工具一站式管控 30+ 大模型 ApiKey,秘钥付费 + 负载均衡全...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定!

星哥带你玩飞牛 NAS-9:全能网盘搜索工具 13 种云盘一键搞定! 前言 作为 NAS 玩家,你是否总被这些...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...