Linux的企业-高可用集群Lvs+ldirectord+heartbeat+drbd

简介:

一.LVS、DR简介

         LVS 是Linux Virtual Server的简称,在实际环境中经常作为B/S结构的网络应用中的负载均衡器来使用,工作在7层网络模型中的,网络层,也就是通常说的IP层,由于数据的处理是在Linux内核态完成的,所以相对反向代理服务器来说,性能一般会高一些。

        DR 是Direct Routing直接路由的简称,应答包通过单独的路由方法返回给客户端。不需要隧道结构,因此可以使用大多数linux操作系统做为物理服务器。和NAT模式不同,DR的负载均衡调度器工作在网络七层协议中的数据链路层,也就是第二层。它通过修改数据包的目标MAC地址,将数据包转发到实际应用服务器上,最重要的是,实际服务器的响应数据包将直接返回给用户端,而不需要经过负载调度器,所以DR模式性能最好。

         HeartBeat 是 Linux-HA 的高可用性集群软件,它的主要作用是:
安装在 Load Balancer 和 Backup 上,运行于 active/standby 模式。
当 Load Balancer 失效时,Backup 自动激活,成为实际的 Load Balancer。
切换到 active 模式时,按顺序启动 Virtual IP、IPVS 和 Ldirectord。
切换到 standby 模式时,按顺序关闭 Ldirectord、IPVS 和 Virtual IP 。

          安装 HeartBeat 过程中,已经自动安装了 Ldirectord,它的作用是:
监测 Real Server,当 Real Server 失效时,把它从 Load Balancer 列表中
删除,恢复时重新添加。


二.配置环境


客户机:172.25.29.250

lvs服务器:172.25.29.1   heartbeat  ipvsadm ldirectord

     服务器:172.25.29.4   heartbeat


RS:www.westos.org-server2:172.25.29.2

RS:www.westos.org-server3:172.25.29.3



1.配置服务

在server1上添加VIP

wKioL1nCXybS8XFLAAC-oMIPOCw107.png


安装lvs服务ipvsadm

wKioL1nCXyWja0zvAAAPI-Nm7BU589.png


添加VIP策略:

wKiom1nCX1mSq1_HAAAU9uNjzvU206.png


添加RS,模式为DR模式:

wKioL1nCXyajS0nnAAD3SP06v3w069.png



在server2上安装处理与arp协议有关的包的软件arptables_jf,屏蔽mac地址

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

wKiom1nCX1qgi_QKAAAQysEDNhM940.png


RS接受到的172.25.29.100包丢弃

wKiom1nCX1rB0S6mAACBfJr6CWY564.png


将源是172.25.29.100的请求包发给172.25.29.2

wKioL1nCXybzIQmsAAAgG7-gsgw031.png

wKiom1nCX1uRpDOhAACRthuOgGk564.png


server3上的配置与server2一致

wKioL1nCXyfA5-gCAADAAZicyMk605.png


在server2上添加VIP

wKiom1nCX1viY-yDAADAiRtzRoU332.png


在server3上添加VIP

wKioL1nCXyfz-ACWAAC_vkUOSzc504.png



2.lvs负载均衡测试

在客户机测试,实现轮询,查看VIP来源于server1

wKioL1nCXyexWe7VAAEEGZg27Pw715.png

wKiom1nCX1yw99EfAACqsg_NRt0193.png


关闭server3,vip访问server1正常

wKiom1nCX1yyFQMGAAAhjrzZZgs047.png

wKiom1nCX1yAvzF8AADlDH4K2NU568.png


如果将server2的关闭,过一会VIP来源于server3

wKioL1nCXyjAOoDuAACx1SrtvJQ570.png

wKiom1nCX12QPA6sAAAiGPQDgdE950.png


重启server2的服务后正常轮询

wKioL1nCXyjxteGJAACefvmm-PE315.png



四.安装ldirectord健康检查插件

            由于Lvs没有健康检查,但插件ldirectord有健康监测功能,守护进程通过向每台真实服务器真实IP(RIP)上的集群资源发送访问请求来实现对真实服务器的监控。


1.ldirectord的安装配置

wKioL1nCZSDim0mNAAA6FBsmRcE726.png


查看生成的文件

wKioL1nCZSGSVu99AAB3l0K6bcw465.png


拷贝文件到/etc/ha.d/

wKiom1nCZVXgLL6WAAAT-NkqSug431.png


vim /etc/ha.d/ldirectory.cf

wKioL1nCZSGALxz6AACJVwtB9uA938.png


wKiom1nCZVbCDMvgAAAY0gq6i4g734.png


在server1上配置fallback访问页面

wKioL1nCZSGwtwU7AAA9XjOmRTE694.png


wKiom1nCZVXhgmCDAABbzLvkpgs000.png


2.测试:

正常轮询

wKioL1nCZSOh_3XWAACK4v0Jjew791.png


关闭server2

wKiom1nCZVaSYPDAAAAY0cPtnVQ775.png


wKiom1nCZVbRFJsHAACJ1shj6kk385.png


在关闭server3,显示server1默认页面

wKioL1nCZSLgmOHJAAAW8X6RgKU690.png

wKioL1nCZSLiJbnMAADno5PUR4U033.png



五.heartbeat安装配置


1.安装heartbeat

wKioL1nCaByQd1oCAAAzi-iyZ5U364.png

wKiom1nCaFDzuEpyAAAkTIcrUJU116.png


配置三个文件

vim /etc/ha.d/ha.cf

wKioL1nDIaTDPdpDAAALb9cv07s734.png

wKiom1nDIdmTEa3TAAAK9r3b8X4777.png

wKioL1nDIaXz64VKAAALkV7rrpk634.png

wKiom1nDIdqzeJGhAAAJD1xUgNA808.png

wKioL1nDIaWyx9RWAAAI-k1I3go165.png

wKiom1nDIdqBHxsUAAAILS-aYXE741.png

wKioL1nDIabSH3BfAAAxnjb3HGk290.png

wKioL1nDIabgW5X_AAANEycRNmo507.png

wKiom1nDIduAMLnaAAAMQgmI04s461.png

wKiom1nDIdzAt0RxAAAMPyddW90957.png

wKioL1nDIaeS2yWsAABGCRoj7HI067.png




wKiom1nCaFDQh4y4AAAcMWFRHfI123.png

wKioL1nCaBzD-QJuAAARxb3KMQc883.png


vim haresources

wKiom1nCaFCAyUdFAAAWAXTQSB8973.png



server4与server1配置一致

wKiom1nCaFHA7g_vAAAWRlvmWJY147.png

wKioL1nCaB2DRIO8AAAci2qTYfw503.png

wKiom1nCaFGBc3TdAAAQiYfyMcI738.png

wKioL1nCaB3D7kOoAABgbLzDP3E639.png


2.测试

在server1上删去vip,让高可用接管开启服务,两边启动heartbeat服务

wKiom1nCaFGTzB0uAAASIomM8KQ782.png

wKioL1nCaB2DUumWAAAk2OELoj0281.png

wKiom1nCaFHDRFq7AAAlYWKdlsg424.png


客户机上测试显示轮询

wKioL1nCaB2AOQ0UAACiUDRsZkE899.png


关闭server1的服务

wKioL1nCaB3wPFGvAAAe7PlFcMs841.png

server4接管

wKiom1nCaFKzUyYJAACox0gb-3Y463.png


恢复server1的服务

wKioL1nCaB6zstO2AAAlozotwp8099.png

服务回切

wKiom1nCaFKQtnTaAACs7SoCrM4819.png



六.安装配置drbd

DRBD:叫做分布式复制块设备,这是一种基于软件,无共享,复制的解决方案。在服务器之间的 块设备(包括硬盘、分区、逻辑卷)进行镜像。也就是说当某一个应用程序完成写操作后,它提交的数据不仅仅会保存在本地块设备上,DRBD也会将这份数据复 制一份,通过网络传输到另一个节点的块设备上,这样,两个节点上的块设备上的数据将会保存一致,这就是镜像功能。

1.在server1和server4上添加4GB硬盘

wKioL1nCaqXDbfdiAABkZ46D_Mo786.png

wKiom1nCatrRPXvzAABkj2UF2CM190.png


2.配在安装drbd服务

wKioL1nCaqbTetuyAACamRBqbVQ853.png


源代码安装,对安装软件进行配置

wKiom1nCatrSLrAlAAAUeKJtiCQ463.png

wKioL1nCaqbR3VgPAAAToIJ1AVg869.png


出错:安装包依赖

wKioL1nCaqbTCx1VAAAR1_rxPGA198.png

wKiom1nCatuynOyDAABiUS9KmQY436.png


将源码二进制创建为rpm包

wKiom1nCatuBu8aNAAARpsWJCTY622.png

wKioL1nCaqeDRWPCAAB6zObm-54047.png


wKioL1nCaqeiD6Z7AABeAbRz2dc338.png

wKiom1nCatvTMCoPAAAhGkSv3zE559.png

wKioL1nCaqfjh7bDAAAozf4MIf8658.png


安装源码包依赖

wKiom1nCatvTHT39AAAdp5TfQ0I283.png


创建好并安装所有rpm包(另一种安装方法)

wKiom1nCatyhpkmXAAAoAkm-R6E338.png

wKioL1nCaqiADA9BAACqjdikbyk754.png


将做好的包传给server4并安装

wKioL1nCaqjDa0y8AADD9p4YK6M479.png

wKiom1nCatyxZbYHAAC3SR5KIYk346.png



创建资源配置文件demo.res,server1与server4一致

wKiom1nCat3xFBeXAAAaPSxbnOU655.png

wKioL1nCaqnAQNwvAAArbBOT1v4687.png


wKioL1nCaqixwGYXAABHyMFOK2w919.png


server1创建drbd,名字为demo

wKioL1nCaqnTZJKDAABUYY13tWM850.png


server1启动drbd

wKiom1nCat2R8K8aAAA2C9gNUds338.png

server4创建drbd,名字为demo

wKioL1nCaqnwWQnTAAANhC8ZexE532.png

wKiom1nCat7QUQOMAAA2JM_KaaY326.png

查看两边drbd状态都为secondary

wKioL1nCaqrhO0DFAABVy1bc-7k046.png

wKiom1nCat7z3G0jAABTPI3GYPo590.png


将server1强制变为主primary

wKioL1nCaqqyprjpAABiEBMEtyE569.png


查看server1状态为主,开始同步

wKioL1nCaqqTA5LoAADDthU4HN0993.png


注意:两台主机上的/dev/drbd1 不能同时挂载,只有状态为 primary 时,才能被挂载使用,而此时另一方的状态为 secondary。


server4为副,开始同步

wKiom1nCat6Q5YIxAACAW4Emoq0360.png


同步完成

wKioL1nCaqqhvN_uAABY_HQCTN4137.png


server1上格式化

wKiom1nCbregK1FIAADIn1NIlLY178.png


3.server1和server4手动测试

将/dev/drbd1挂载到 /mnt下,安装数据库mysql-server

wKioL1nCboPA0wL1AABLaXU_3T4218.png


将数据库文件拷入/mnt

wKiom1nCbriSiqb1AAEXNXAtquA270.png


server1数据库和drbd手动测试成功

wKiom1nCbrigAg2SAADXR7c6Uow431.png

wKioL1nCboSQijvvAAC9HIFPHNQ484.png


server2数据库和drbd手动测试成功

wKiom1nCbrngUWvBAACv-2TGcKQ669.png

wKioL1nCboXyeOzWAABdEMqZVNs755.png



4.用高可用lvs+heartbeat+ldirectord测试

关闭server1和server4的上的服务,让集群自动开启


删去server1和server4上的VIP

wKiom1nDZfPiR9c8AAASo5z540o563.png



wKioL1nCboWBki0SAAAqCcJ72Pg370.png


两边drbd都要为secondary,并挂载,如果没有变为secondary,用drbdadm secondary demo改变

wKiom1nDZL_geCy9AAFX_R4VmNU656.png



wKioL1nCboaz5nXCAABbB7pGxpM669.png

wKiom1nCbrrx1XyfAABa7oub0Xg952.png



配置heartbeat文件,添加drbd 和mysql 服务  vim /etc/ha.d/haresources

wKioL1nCbobADFb0AABG1Sropfc754.png


在 /etc/fstab可以加上drbd开机自动挂载


开始测试:两边开启heartbeat

servre1正常

wKioL1nCbofTbBwsAAEEWB6UkFc613.png

wKioL1nCboeyKglQAADlf0T6avI712.png



将server1 heartbeat关闭,服务到server4

wKiom1nCbruQvTdgAAEHDKNQp4Q525.png

wKiom1nCbruhqEOuAACIFkCN4CU301.png



开启server1,服务再次回切到server1

wKioL1nCbofA2tzUAABcOpUs6tE140.png






      本文转自一百个小排 51CTO博客,原文链接:http://blog.51cto.com/anfishr/1967295,如需转载请自行联系原作者






相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
2月前
|
存储 负载均衡 索引
linux7安装elasticsearch-7.4.0集群配置
linux7安装elasticsearch-7.4.0集群配置
113 0
|
5月前
|
Kubernetes Shell Linux
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
linux|shell脚本|有趣的知识---格式化输出日志和脚本调试方法以及kubernetes集群核心服务重启和集群证书备份脚本
75 0
|
17天前
|
存储 监控 中间件
Linux双机热备解决方案之Heartbeat
Linux双机热备解决方案之Heartbeat
|
5月前
|
存储 Java Linux
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群
83 1
【Zookeeper】基于3台linux虚拟机搭建zookeeper集群(二)
|
1月前
|
Linux
Linux驱动运行灯 Heartbeat
Linux驱动运行灯 Heartbeat
19 0
|
6月前
|
JSON Linux 开发工具
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
Linux jq 、vim以及LInux集群安装miniconda并配置虚拟环境(笔记)
60 0
|
4月前
|
分布式计算 Hadoop Java
linux上面hadoop配置集群
linux上面hadoop配置集群
47 0
|
9月前
|
运维 关系型数据库 MySQL
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
203 0
|
5月前
|
关系型数据库 MySQL Linux
Linux|集群初始化脚本--osiniit.sh简介
Linux|集群初始化脚本--osiniit.sh简介
26 0
|
5月前
|
存储 NoSQL Linux
猿创征文|linux部署Redis集群(修订版)
猿创征文|linux部署Redis集群(修订版)
148 1