LAMP网站架构---(五)HAProxy+Pacemaker高可用负载均衡

news/2024/5/17 6:07:21/文章来源:https://blog.csdn.net/s191946202/article/details/121640342

 基本信息

HAProxy是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理

HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理

HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接,并且它的运行模式使得它可以很简单安全的整合进您当前的架构中,同时可以保护你的web服务器不被暴露到网络上

HAProxy实现了一种事件驱动,单一进程模型,此模型支持非常大的并发连接数;多进程或多线程模型受内存限制、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接;事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space)实现所有这些任务,所以没有这些问题;此模型的弊端是:在多核系统上,这些程序通常扩展性较差,这就是为什么他们必须进行优化以使每个CPU时间片(Cycle)做更多的工作

包括GitHub、Bitbucket、Stack Overflow、Reddit、Tumblr、Twitter和Tuenti在内的知名网站,及亚马逊网络服务系统都使用了HAProxy

官方网站:

HAProxy - The Reliable, High Performance TCP/HTTP Load Balancerhttps://www.haproxy.org/以下实验所需的配置环境

boke1        HAProxy负载均衡主机                IP=172.25.100.11

boke2        后端真实apache服务器主机        IP=172.25.100.12

boke3        后端真实apache服务器主机        IP=172.25.100.13

boke4        HAProxy负载均衡主机        IP=172.25.100.14

负载均衡配置

HAProxy配置中分成五部分内容:

1、global:设置全局配置参数,属于进程的配置,通常和操作系统相关
2、defaults:配置默认参数,这些参数可以被用到frontend,backend,Listen组件
3、frontend:接收请求的前端虚拟节点,Frontend可以更改规则直接指定具体使用后端的backend
4、backend:后端服务集群的配置,是真实服务器,一个Backend对应一个或者多个实体服务器
5、Listen:frontend和backend的组合体

##简单的负载均衡配置

##访问此负载均衡器得到的效果

负载均衡器的状态报告配置

##在haproxy配置文件的defaults板块添加状态报告访问路径并开启登陆认证

##访问测试效果

负载均衡器的日志管理

##haproxy配置文件

##rsyslog配置文件

负载均衡器的source算法

##haproxy配置文件

##配置source轮询算法后的访问效果,此时后端服务器均正常运行

##关闭boke2主机的apache服务后的访问效果

##重新打开boke2主机的apache服务后的访问效果

负载均衡器的应用分离

##haproxy配置文件中配置应用分离

##准备访问素材

##访问效果

负载均衡器的访问控制

##配置访问黑名单

##访问效果

##配置黑名单地址访问的重定向

##访问效果

##配置访问源的重定向

##访问效果

负载均衡器的读写分离

##配置访问请求为写指令的指向后端

##配置后端服务器主机的访问素材

##浏览器访问并上传文件(写的动作)

##写的指令被成功定向至指定的后端服务器

Pacemaker集群管理器

Pacemaker是一个集群资源管理器,它利用集群基础构件(OpenAIS 、heartbeat或corosync)提供的消息和成员管理能力来探测并从节点或资源级别的故障中恢复,以实现群集服务(亦称资源)的最大可用性

更多信息参见以下

ClusterLabs > PacemakerCommunity hub for open-source high-availability softwarehttps://clusterlabs.org/pacemaker/环境:

boke1        pacemaker主机,安装haproxy        IP=172.25.100.11

boke4        pacemaker主机,安装haproxy        IP=172.25.100.14

boke2        后端真实服务器,安装apache        IP=172.25.100.12

boke3        后端真实服务器,安装apache        IP=172.25.100.13

##配置pacemaker主机间的免密登陆

1、pacemaker安装:

##搭建软件源,安装pacemaker所用到的所有安装包及依赖rhel7.6的镜像资源中都有

yum install -y pacemaker pcs psmisc policycoreutils-python

##boke1、boke4主机均安装,可通过ssh实现远程操作,前提需要都配置好软件仓库

##启动boke1、boke4主机的haproxy和pcsd服务

2、pcs集群创建:

##命令含义依次为:配置集群用户密码;配置群集节点的认证;创建一个二个节点的群集

##启用集群并设置为开机自启

##验证群集配置信息;没有Fencing设备时,禁用STONITH组件功能;在stonith-enabled="false"的情况下,分布式锁管理器 (DLM) 等资源以及依赖DLM的所有服务(例如 cLVM2、GFS2 和 OCFS2)都将无法启动

##查看集群状态;crm_mon为实时监控

##查看资源标准;查看资源提供者;查看资源使用参数

3、pcs集群资源创建:

##配置虚拟IP

##此时访问VIP效果

##停掉集群中两个节点的haproxy服务并创建haproxy集群资源;让集群来接手管理haproxy服务

##可以看到boke4主机的haproxy被强制重启了;但此时vip还在boke1主机上,因此客户端访问vip时会失败

4、pcs集群资源组创建及集群管理测试:

##创建一个hagroup的资源组,将vip和haproxy资源都添加至此组中;现在可以看到两个资源运行在同一台主机boke1上

##此时boke4主机的haproxy服务自动关闭

##两个资源都在boke1主机上运行

##此时客户端访问vip成功返回数据

##在手动关闭boke1主机的haproxy服务后,监控出现以上信息后会自动重启boke1主机的haproxy服务

##同上,在手动删除boke1主机的vip后,监控出现以上信息后会自动在boke1主机添加vip

##再将boke1集群节点待机后,集群资源自动转移至boke4主机进行管理

##恢复运行boke1集群节点后,boke4主机管理的集群资源不会回退至boke1主机

5、fence

fence/fencing又名STONITH(Shoot The Other Node In The Head)

fence设备是RHCS集群中必不可少的一个组成部分,通过fence设备可以避免因出现不可预知的情况而造成的“脑裂”现象;fence设备主要是通过服务器或存储本身的硬件管理接口或者外部电源管理设备来对服务器或存储直接发出硬件管理指令,将服务器重启或关机,或者与网络断开连接

脑裂:集群中某节点突然夯住,无法响应,但仍在运行状态,集群检测到就把vip这些资源迁移到另外的节点,重新挂载存储,但是之前的节点也挂载在存储上,先前节点恢复正常运行后,两个节点同时写入时就会导致脑裂

fence的工作原理:

当意外原因导致主机异常或者宕机时,备机会首先调用fence设备,然后通过fence设备将异常主机重启或者从网络隔离,当fence操作成功执行后,返回信息给备机,备机在接到fence信息后,开始接管主机的服务和资源;这样通过fence设备将异常节点占据的资源进行了释放,保证了资源和服务始终运行在一个节点上

RHCS的fence设备可以分为两种:内部fence和外部fence;常用的内部fence有IBMRSAII卡,HP的iLO卡,还有IPMI的设备等;外部fence设备有UPS、SANSWITCH、NETWORKSWITCH等

配置fence设备:

##在宿主机端配置fence_virtd服务

##生成fence密钥文件并重启fence_virtd服务,停掉宿主机的火墙和selinux

##在fence_virtd服务管理集群主机上安装fence-virt模块,建立目录用来存放fence密钥文件

##拷贝密钥文件至集群主机

##查看集群节点的fence设备

stonith_admin -M -a fence_xvm

##查看fence_xvm设备的元数据

##添加fence设备至集群并做主机影射;集群工作时用的是集群中各机器的主机名,而fence_virtd服务是通过虚拟机域名对虚拟机进行管控的;格式为【主机名:虚拟机域名】

假设boke4主机挂掉后,其上的fence设备也无法与fence_virtd服务所在主机进行通信;因此fence总是在资源运行所在主机的对端,当此资源运行主机boke4挂掉后,集群中的fence设备获取到boke4主机挂掉的信息通知fence_virtd服务主机,并接管原boke4上的资源继续对外提供服务,fence_virtd服务主机知晓boke4主机挂掉后会对其进行断电、重启或从集群里剔除

##在之前次的集群配置中曾将stonith禁用,现在启用并进行验证,无误即fence设备配置完成

测试:

##在资源运行主机端关闭网卡

##不多时后之后boke4主机重启,并接管fence设备,资源运行在对端节点

##在资源运行主机端模拟内核崩溃,不多时后之后此主机重启

##资源运行在对端,自己接管fence设备

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_903821.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

javaweb项目 基于jsp+servlet的 个人博客网站

源代码和获取更多信息 >源代码MyBlog MyBlog a personal blog site based on Jsp/Servlet - 基于jsp/servlet的个人博客网站 introduction - 简介 java web博客项目,实现mvc模式,没有使用到框架,实现了首页预览,文章发布&a…

网络另类生意闷声挣钱 一人经营几十万个网站

对于自己的“另类生意”,许扬有充分的自信,“我就是把整个业务模式都公开,别人也很难复制,太难了”。 本报记者 徐胤 摄 创业篇 视频网站、交友网站、行业网站,正当数以万计的网络掘金者们在这些热门业务中争得头破血流…

网站测试步骤

网站测试需分以下五个阶段进行才能提交客户,所有测试均提供测试报告: a.功能测试  b.性能测试  c.可用性测试  d.兼容性测试  e.安全测试 功能测试: 1、链接测试 链接是Web应用系统的一个主要特征,它是在页面之间切换和指…

给自己的网站添加HTTPS / 优化 / 续约

写在前面 这里面我主要是自己独立的服务器添加HTTPS支持,关于对GitHub个人站点添加的以后再写。我的笔记和操作使用的是免费的域名和免费的HTTPS证书,但是操作对于所有的来说都是一样的。证书基于 TrustAsia, 别的都差不多的。VPS 上用的LNM…

使用IntelliJ IDEA开发SpringMVC网站(三)数据库配置

注:在阅读本文前,请先阅读: 使用IntelliJ IDEA开发SpringMVC网站(一)开发环境 使用IntelliJ IDEA开发SpringMVC网站(二)框架配置 访问GitHub下载最新源码:https://github.com/gauss…

大型网站应用之海量数据和高并发解决方案总结一二

一、网站应用背景 开发一个网站的应用程序,当用户规模比较小的时候,使用简单的:一台应用服务器一台数据库服务器一台文件服务器,这样的话完全可以解决一部分问题,也可以通过堆硬件的方式来提高网站应用的访问性能&…

Yupoo! 的网站技术架构

作者: Fenng | 可以转载, 转载时务必以超链接形式标明文章原始出处和作者信息及版权声明网址: http://www.dbanotes.net/arch/yupoo_arch.html 又有机会爆料国内 Web 2.0 网站的架构了。这次是 Yupoo! 。非正式的采访了一下 Yupoo!(又拍网) 的创建人之一的 阿华(沈志…

.NET 发布网站步骤

本文章分为三个部分: web网站发布、IIS6 安装方法、ASP.NET v4.0 安装方法 一、web网站发布 1.打开 Visual Studio 2013 编译环境 2.在其解决方案上右击弹出重新生成解决方案,以查看是否有错误 3.如果项目没有错误右击WebUI层发布

新概念绿色上网工具,向网站病毒say no

Dear All: 近來很多網站都含有病毒或木馬程式,而上網者多數都是用超級用戶或power user的權限上網,中招後惡意程序會更改windows系統,或設置一些木馬程序.用戶電腦的資料完全暴露,而且還要忍受廣告困擾,雖然裝有防毒軟件,但防毒軟件也不是萬能,特別是木馬程序,經常變化.所以用戶…

PHP——网站构成即LAMP基础知识

网站的构成: 客户端IE/FireFox/Safari等多种浏览器 超文本标记语言HTML 层叠样式表CSS 客户端脚本编程语言JavaScript/VBScript/Applet等中的一种 Web服务器Apache/ Nginx/TomCat/IIS等中的一种 服务器端编程语言PHP/JSP/ASP等中的一种 数据库管理系统MySQL…

网站架构的伸缩性设计

网站开发初期,我们习惯性把所有代码都写到一个项目中。 前台、后台、缓存、数据库、静态资源... 等等。 网站系统物理分离 慢慢的系统会原来越大,很显然需要面对大量用户的高并发访问和存储海量数据。 很多用户的请求,不可能在一台服务器上…

以电商网站为例,谈大型分布式架构设计与优化

本文大纲: 目录 一、使用电商案例的原因 二、电商网站需求 三、网站初级架构 四、系统容量预估 五、网站架构分析 六.网站架构优化 本文主题为电商网站架构案例,将介绍如何从电商网站的需求,到单机架构,逐步演变为常用的、…

使用cloudflare+wzfou为自己的网站配置CDN加速

本文同步于个人博客 : 蝴蝶飞不过沧海 | Blog 本文链接 泛播 Cloudflare 挖站否 Wzfou 为什么用到挖站否?单独泛播不就可以作cdn加速吗? 众所周知泛播(cloudflare)国外知名免费cdn服务商无需网站备案 但有个缺点就是单独使用泛播&…

企业网站建设需要做哪些前期准备工作?

随着互联网的发展,制作官方网站已经成了众多企业的需求。定制企业网站有助于提升企业形象,增加品牌曝光度,配合网络营销,可以给企业带来更多的业务。很多企业选择了外包给专业的开发公司来定制自己的网站,但并不是说所…

程序员应该熟知的网站TIOBE

TIOBE TIOBE 排行榜是根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎(如Google、Bing、Yahoo!)以及Wikipedia、Amazon、YouTube统计出排名数据,只是反映某个编程语言的热门程度,并不能说明一门编…

使用Chrome浏览器查看淘宝的IPhone版网站

用IPhone手机访问http://m.taobao.com ,淘宝的设计已经达到了和APP相媲美的地步。多次想查看其源码学习,单无奈用PC浏览器访问该网址,出现的是一个比较简化的wap2.0版本的。经过若干的夜晚的冥思苦想,终于想出了解决方案。 1.IPho…

Springboot+Vue开发旅游网站

项目简介 所需技术栈: 后端技术栈:springboot mybatis 前后端分离:axios、json 前端技术栈、技术架构:Vue、node.js 前置知识: 了解 Vue 组件之前的知识 对 springboot mybatis 较熟悉 开发流程: 需求…

spring boot酷炫小说网站 包括 PC网站端 和 移动端可做毕设

spring bootspring mvcspring整合开发微信小程序(含简单服务端) 项目描述: spring bootspring mvcspring酷炫小说网站,然后提供给微信小程序做显示 运行环境: jdk8IntelliJ IDEAmaven 项目技术: spring bootspring mvcspring 数据库文件:…

高可用Hadoop平台-实战(电商网站的用户行为分析)

今天要和大家分享的案例是一个基于电商网站的用户行为分析,这里分析的指标包含以下指标: 统计每日PV每日注册用户每日IP跳出用户 其他指标可以参考上述4个指标进行拓展,下面我们开始今天的分析之旅。 2.流程 首先,在开发之前我们…

网站日志分析项目案例(一)项目介绍

一、数据情况分析 1.1 数据情况回顾 该论坛数据有两部分: (1)历史数据约56GB,统计到2012-05-29。这也说明,在2012-05-29之前,日志文件都在一个文件里边,采用了追加写入的方式。 (2&a…