HAproxy

RabbitMQ集群架构之使用Haproxy实现高可用负载均衡

蓝咒 提交于 2020-03-28 15:54:20
RabbitMQ集群架构模式 那么对于Rabbitmq是单点应用来说,如果rabbitmq整个消息mq都会摊掉,所有在mq的消息高可用部分,就显得尤为重要了,那么在mq中提供了四种集群架构方案: 1、主备模式 (Warren) 2、镜像模式 (Mirror) 3、远程模式 (Shovel) 4、多活模式 (Federation) 在我们开发中最直接的模式就是主备模式:主要实现RabbitMQ的高可用集群,一般在并发和数据量不高的情况下,这种模型非常的好用且简单,主备模式也称为Warren模式 也就是一主一备,对于集群来说至少有两台服务器,那么这两台服务器一台在工作,一台在闲置,注意,这个的主备和我们之前的主从是不一样的,主从的话是一台作为主服务器,一台作为从服务器,虽然这两台是数据同步,主负责读写,而从只负责只读,而主备是一台工作一台闲着,如果一台服务器宕机了,那么备服务器切换过来,可能的话,这种对于负载均衡的话一台只忙着干活,一台只闲着,这种的生产中用的也很少,这种会造成我们资源的一个浪费。 镜像模式:集群模式非常经典的就是Mirror镜像模式,保证100%数据不丢失,在实际工作中也是用的最多的,而且实现集群也非常简单,一般互联网大厂都会构建这种镜像集群模式,原理主要是在主备的基础上进行了扩展,集群中所有的节点设备都是同步的,每一个队列,交换机里面的配置信息和我们的数据都是同步的

基础认知之浅谈服务器集群、负载均衡、与分布式

坚强是说给别人听的谎言 提交于 2020-03-26 16:55:28
3 月,跳不动了?>>> 负载均衡 概念 其意思就是分摊到多个操作单元上进行执,操作单元可以是web服务器、ftp服务器、企业关键应用服务器等. 不能理解成平均分配到每个操作单元上,因为每台服务器的承载能力不尽相同,硬件配置、网络带宽等差异,所以并不能平均的分配,需要参考的因素很多. 负载均衡实现方式 http重定向 概念 当http代理(比如浏览器)向web服务器请求某个URL后,web服务器可以通过http响应头信息中的Location标记来返回一个新的URL. 这意味着HTTP代理需要继续请求这个新的URL,完成自动跳转. DNS负载均衡 概念 DNS 负责提供域名解析服务,当访问某个站点时,实际上首先需要通过该站点域名的DNS服务器来获取域名指向的IP地址, 在这一过程中,DNS服务器完成了域名到IP地址的映射,同样,这样映射也可以是一对多的,这时候,DNS服务器便充当了负载均衡调度器, 它就像http重定向转换策略一样,将用户的请求分散到多台服务器上,但是它的实现机制完全不同。 特性 1、可以根据用户IP来进行智能解析.DNS服务器可以在所有可用的A记录中寻找离用记最近的一台服务器。 2、动态DNS:在每次IP地址变更时,及时更新DNS服务器.当然因为缓存,一定的延迟不可避免. 反向代理负载均衡 概念 几乎所有主流的Web服务器都热衷于支持基于反向代理的负载均衡

Haproxy+Keepalived(双机热备)搭建高可用web架构

旧时模样 提交于 2020-03-23 23:05:08
1、目的 搭建web高可用架构,用haproxy作为前段负载均衡分摊后端web服务器压力,Keepalived保证haproxy的存活(双机热备:一台haproxy挂了,自动切换到另外一台haproxy上) 2、环境(系统均为centos7,防火墙与selinux都关闭) 192.168.0.100:web1(端口7000)、web2(端口8000) 192.168.0.101:haproxy1、keepalived(MASTER) 192.168.0.102:haproxy2、keepalived(BACKUP) 虚拟ip(VIP):192.168.0.11(端口8600) 3、搭建web1与web2 在192.168.0.100上安装docker,运行两个容器分别是web1与web2 4、分别在master和backup节点上安装haproxy与keepalived 直接yum安装,过程省略。。。 5、配置haproxy(在master与backup节点配置相同) 编辑配置文件/etc/haproxy/haproxy.cfg 在最后添加后端web主机的访问地址 backend webapp balance roundrobin server web1 192.168.0.101:7000 check inter 2000 fall 3 weight 1 server web2

LVS/HAProxy/Nginx负载均衡对比

橙三吉。 提交于 2020-03-21 03:22:14
3 月,跳不动了?>>> 现在网站发展的趋势对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术: 一种是通过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F5、Radware和Array等商用的负载均衡器,它的优点就是有专业的维护 团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于LVS/HAProxy、 Nginx的基于Linux的开源免费的负载均衡软件策略,这些都是通过软件级别来实现,所以费用非常低廉,所以我个也比较推荐大家采用第二种方案来实施 自己网站的负载均衡需求。 近期朋友刘鑫(紫雨荷雪)的项目成功上线了,PV达到了亿级/日的访问量,最前端用 的是HAProxy+Keepalived双机作的负载均衡器/反向代理,整个网站非常稳定;这让我更坚定了以前跟老男孩前辈聊的关于网站架构比较合理设 计的架构方案:即Nginx/HAProxy+Keepalived作Web最前端的负载均衡器,后端的MySQL数据库架构采用一主多从,读写分离的方 式,采用LVS+Keepalived的方式。 在这里我也有一点要跟大家申明下:很多朋友担心软件级别的负载均衡在高并发流量冲击下的稳定情况,事实是我们通过成功上线的许多网站发现,它们的稳定性也 是非常好的,宕机的可能性微乎其微,所以我现在做的项目

HAproxy企业应用动静分离

落花浮王杯 提交于 2020-03-18 12:45:48
某厂面试归来,发现自己落伍了!>>> HAProxy的是一个免费的、开源的的tcp/http反向代理工具、负载均衡器,是一个企业非常快速和可靠的安全的解决方案,提供高可用性、高并发性,负载均衡和代理对TCP和基于HTTP的应用程序。它特别适用于流量非常高的网站。它已成为事实上的标准开源负载均衡器,现在随大多数主流 Linux 发行版一起提供,在互联网领域应用也是非常广泛,受欢迎的第三方工具。 在企业实际应用环境中,往往会根据业务请求将相关不同请求跳转到指定的后端服务器,比如客户静态资源请求交给后端静态资源服务器处理,php请求交给后端动态资源Apache服务进行处理,jsp请求交给后端动态资源tomcat服务进行处理,即业务上的应用请求分离,我们这里可以通过haproxy完全可以利用acl匹配规则实现这一目的,以实现动静分离效果;除了haproxy外,其实还可以通过nginx的acl规则也可以完全实现,不过这些强大的工具往往是在Linux服务器上面跑才能发挥最佳性能,其实这些东西安装和配置非常简单,只需要有Linux基础,懂得一些Linux基础的命令就完全可以实现强大的功能,我也是在 《Linux就该这么学》 这本树入门Linux,非常适合于初学者。 现在好多企业购买负载均衡器硬件设备,其实这些硬件设备都是通过潜入软件来实现的,可能性能还没有那么好

laravel + haproxy + https 后生成分页 url 非 https 解决办法

有些话、适合烂在心里 提交于 2020-03-18 12:22:37
某厂面试归来,发现自己落伍了!>>> 更合适的解决办法:在 AppServiceProvider boot 方法中使用 \URL::forceScheme('https'); 即可。 背景 近日对所有的客户都上线了 https ,本来在 beta 环境中是没有任何问题,都测试通过了,但是在正式上线后,发现后台管理系统中的 laravel 分页生成的 url 是非 https 的,但是其他地方(路由,静态资源)等生成的都是正常的 https 链接,遂找原因解决。 解决 laravel 的分页服务 Illuminate\Pagination\PaginationServiceProvider::class 找到该 ServiceProvider 源码中 register() 中的代码 Paginator::currentPathResolver(function () { return $this->app['request']->url(); }); 可以看到分页链接生成的时候,是根据当前请求的 url 来设置分页类的 url path. 接着找到 Illuminate\Http\Request::class 中的 url() public function url() { return rtrim(preg_replace('/\?.*/', '', $this->getUri()

每日进步一点点:解读消息中间件—RabbitMQ(集群原理与搭建篇)

亡梦爱人 提交于 2020-03-17 22:51:53
摘要:实际生产应用中都会采用消息队列的集群方案,如果选择RabbitMQ那么有必要了解下它的集群方案原理 一般来说,如果只是为了学习RabbitMQ或者验证业务工程的正确性那么在本地环境或者测试环境上使用其单实例部署就可以了,但是出于MQ中间件本身的可靠性、并发性、吞吐量和消息堆积能力等问题的考虑,在生产环境上一般都会考虑使用RabbitMQ的集群方案。 对于RabbitMQ这么成熟的消息队列产品来说,搭建它并不难并且也有不少童鞋写过如何搭建RabbitMQ消息队列集群的博文,但可能仍然有童鞋并不了解其背后的原理,这会导致其遇到性能问题时无法对集群进行进一步的调优。本篇主要介绍RabbitMQ集群方案的原理,如何搭建具备负载均衡能力的中小规模RabbitMQ集群,并最后给出生产环境构建一个能够具备高可用、高可靠和高吞吐量的中小规模RabbitMQ集群设计方案。 一、RabbitMQ集群方案的原理 RabbitMQ这款消息队列中间件产品本身是基于Erlang编写,Erlang语言天生具备分布式特性(通过同步Erlang集群各节点的magic cookie来实现)。因此,RabbitMQ天然支持Clustering。这使得RabbitMQ本身不需要像ActiveMQ、Kafka那样通过ZooKeeper分别来实现HA方案和保存集群的元数据。集群是保证可靠性的一种方式

SaltStack实践案例一

浪子不回头ぞ 提交于 2020-03-17 18:49:14
某厂面试归来,发现自己落伍了!>>> 通过SaltStack的配置管理来实现一个“中小型web架构”的自动化部署和配置管理,主要包括以下功能和服务: 系统初始化 Haproxy服务 Keepalived服务 Nginx服务 PHP(FastCGI)服务 Memcached服务 按照本案例的思路,我们将按照系统初始化、功能模块化、业务模块这样的设计思路来进行设计和实施: 系统初始化:指操作系统安装完毕之后,需要使用到的初始配置,比如安装监控代理、调整内核参数、设置域名解析等 功能模块:指的是生产用到的应用,比如Nginx、PHP、Haproxy、Keepalived等这类应用服务的安装和管理,每一个功能完美创建一个目录来存放,我们把这个目录的集合称之为“功能模块” 业务模块:在功能模块中我们编写了大量基础的功能状态,在业务层面直接进行引用,所以功能模块就是尽可能的全、而且独立。而业务模块,不同的业务类型就可以在Include功能模块里面的安装和部署,每个业务使用自己独特的配置文件等。最终在top.sls里面我们只需要给某个Minion指定一个业务的状态即可。 一、环境规划 环境规划包含实验环境规划SaltStack环境。 1.实验环境: salt-master-1.example.com 10.0.241.122 Master salt-minion-1.example.com 10

k8s高可用环境部署-1.17.3版本

倖福魔咒の 提交于 2020-03-15 23:20:07
准备 在开始部署 k8s 高可用集群时,请先参考 k8s高可用环境部署系统准备 操作系统兼容性 环境说明 集群部署前系统环境装备,请参考 k8s高可用环境部署系统准备.md 本次高可用集群基本参照 官网步骤 进行部署,官网给出了两种 拓扑结构 :堆叠control plane node和external etcd node,本文基于第一种拓扑结构进行部署,使用 Keepalived + HAProxy 搭建高可用Load balancer,完整的拓扑图如下: 单个mastre节点将部署keepalived、haproxy、etcd、apiserver、controller-manager、schedule六种服务,load balancer集群和etcd集群仅用来为kubernetes集群集群服务,不对外营业。如果必要,可以将load balancer或者etcd单独部署,为kubernetes集群提供服务的同时,也可以为其他有需要的系统提供服务,比如下面这样的拓扑结构: 说明⚠️:这种拓扑结构也对应external etcd node~ 本文仅部署master节点,使用kubeadm部署worker节点非常简单,不在赘述,环境清单: 服务器 主机IP 主机名字 功能 k8s-master01 192.168.246.193 master01 master+etcd

Nginx、LVS及HAProxy负载均衡软件的优缺点

五迷三道 提交于 2020-03-11 03:52:36
负载均衡 (Load Balancing) 建立在现有网络结构之上,它提供了一种廉价有效透明的方法扩展网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力,同时能够提高网络的灵活性和可用性。 Nginx/LVS/HAProxy是目前使用最广泛的三种负载均衡软件。 (1)一般对负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术。具体的应用需求还得具体分析,如果是中小型的Web应用,比如日PV小于1000万,用Nginx就完全可以了;如果机器不少,可以用DNS轮询,LVS所耗费的机器还是比较多的;大型网站或重要的服务,且服务器比较多时,可以考虑用LVS。 (2)一种是通过硬件来进行,常见的硬件有比较昂贵的F5和Array等商用的负载均衡器,它的优点就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,所以对于规模较小的网络服务来说暂时还没有需要使用;另外一种就是类似于Nginx/LVS/HAProxy的基于 Linux的开源免费的负载均衡软件,这些都是通过软件级别来实现,所以费用非常低廉。 (3)目前关于网站架构一般比较合理流行的架构方案:Web前端采用Nginx/HAProxy+ Keepalived作负载均衡器;后端采用 MySQL数据库一主多从和读写分离,采用LVS+Keepalived的架构。当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合