负载均衡

后台架构的演变

孤街醉人 提交于 2020-02-27 10:55:18
码农小光 的文章的记录 单机架构 第一次演进:Tomcat与数据库分开部署 第二次演进:引入本地缓存和分布式缓存 第三次演进:引入反向代理实现负载均衡 第四次演进:数据库读写分离 第五次演进:数据库按业务分库 第六次演进:把大表拆分为小表 第七次演进:使用LVS或F5来使多个Nginx负载均衡 第八次演进:通过DNS轮询实现机房间的负载均衡 第九次演进:引入NoSQL数据库和搜索引擎等技术 第十次演进:大应用拆分为小应用 第十一次演进:复用的功能抽离成微服务 第十二次演进:引入企业服务总线ESB屏蔽服务接口的访问差异 第十三次演进:引入容器化技术实现运行环境隔离与动态服务管理 第十四次演进:以云平台承载系统 总结: IaaS:基础设施即服务。对应于上面所说的机器资源统一为资源整体,可动态申请硬件资源的层面; PaaS:平台即服务。对应于上面所说的提供常用的技术组件方便系统的开发和维护; SaaS:软件即服务。对应于上面所说的提供开发好的应用或服务,按功能或性能要求付费。 至此:以上所提到的从高并发访问问题,到服务的架构和系统实施的层面都有了各自的解决方案。但同时也应该意识到,在上面的介绍中,其实是有意忽略了诸如跨机房数据同步、分布式事务实现等等的实际问题,这些问题以后有机会再拿出来单独讨论。 4、架构设计总结 1)架构的调整是否必须按照上述演变路径进行? 不是的

tengine负载均衡高可用配置

浪子不回头ぞ 提交于 2020-02-27 08:34:27
环境 Tengine-master:192.168.109.100 Tengine-slave:192.168.109.101 tomcat01:192.168.109.102 tomcat02:192.168.109.104 [Tengine部署] # yum install -y gcc gcc-c++ make #mkdir /opt/tengine-packages #cd /opt/tengine-packages # for tar in *.tar.gz;do tar xvf $tar;done # cd /opt/tengine-packages/tengine-2.2.3 # ./configure --prefix=/opt/tengine --with-http_ssl_module --with-openssl=../openssl-1.1.1 --with-pcre=../pcre-8.42 --with-zlib=../zlib-1.2.11 --sbin-path=/opt/tengine/sbin/nginx --conf-path=/opt/tengine/conf/nginx.conf --pid-path=/opt/tengine/logs/nginx.pid # make #编译的时候出现这个错误不要慌张, # vim ./objs

源码分析Dubbo集群容错策略

最后都变了- 提交于 2020-02-27 04:30:48
前面的文章,已经单独对服务发现(Directory、RegistryDirectory)、路由机制(Router)、负载均衡机制( LoadBalance ),本节将重点分析集群容错机制 ( AbstractClusterInvoker), AbstractClusterInvoker 就是将上述机制融合在一起,整个集群容错中,上述组件扮演的角色见下图所示,本文将重点分析 AbstractClusterInvoker 是如何融合这些组件的。 AbstractClusterInvoker#invoke @Override public Result invoke(final Invocation invocation) throws RpcException { checkWhetherDestroyed(); LoadBalance loadbalance = null; List<invoker<t>> invokers = list(invocation); // @1 if (invokers != null && !invokers.isEmpty()) { loadbalance = ExtensionLoader.getExtensionLoader(LoadBalance.class).getExtension(invokers.get(0).getUrl()

linux--nginx(反向代理)

走远了吗. 提交于 2020-02-26 23:33:18
反向代理 == 背景:== server1 172 . 25 . 254 . 1 server2 172 . 25 . 254 . 2 server3 172 . 25 . 254 . 3 真机 172 . 25 . 254 . 38 在server1上: 在server2和server3上:安装httpd 测试: 注意真机解析 负载均衡 测试: 对后端服务也有将康检查 将资源更倾向与一台机器 测试:在负载均衡的情况下,同一个ip总会将请求调度到同一后端 将server1作为BACKUP 此时停掉server2的服务,会有server1顶上来 测试: 来源: CSDN 作者: Aplox 链接: https://blog.csdn.net/Aplox/article/details/104494802

什么是负载均衡?

旧时模样 提交于 2020-02-26 16:28:48
一个服务部署在集群中,存在多个服务器,不同的服务器之间响应请求,由于服务器之间的负载会不均衡,这时就需要让负载较低的服务器响应这个请求,可以提高相应效率,降低时延,提高系统的性能。 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3167907

负载均衡中间件(二)LVS负载均衡软件和基于云计算平台的架构

孤人 提交于 2020-02-26 11:46:56
一、LVS简介 LVS全称Linux Virtual Server,即Linux虚拟服务器。它是我国章文嵩博士的一个开源项目。在linux内核2.6中,已经成为了内核的一部分,在此之前的内核需要重新编译内核。 主要用于服务器的负载均衡,它工作在网络4层,开源实现高性能,搞可用的服务器集群技术。它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。它易用,配置简单,且有多种负载均衡方法。它稳定可靠,即使在集群的服务器中某台服务器无法正常工作,也不影响整体效果。另外扩展性非常好。 针对高伸缩、高可用网络服务的需求,我们给出了基于IP层和基于内容请求分发的负载平衡调度解决方法,并在linux内核中实现了这些方法,将一组服务器构成一个实现可伸缩的、高可用网络服务的虚拟服务器。 虚拟服务器的体系结构如上图所示,一组服务器通过高速的局域网或地理分布的广域网相互连接,在它们的前端有一个负载均衡调度器(Load Balancer)。负载均衡调度器能无缝地将网络请求调度到真实服务器上,从而使得服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样。由于我们的负载调度技术是在linux内核中实现的,我们称之为linux虚拟服务器。 项目目标:使用集群技术和Linux操作系统实现一个高性能、高可用的服务器,它具有很好的伸缩性、可靠性和可管理性。 目前

从运维角度看中大型网站架构的演变之路

半世苍凉 提交于 2020-02-26 04:57:22
前言 一个成熟的网站架构并不是一开始设计就具备高可用、高伸缩、高性能等特性的,它是随着用户量和业务线不断增加,基础架构才逐渐健壮的。在发展初期,一般都是从0到1,不会一上来就整一些大而全的架构,也很少人这么任性。 说明 适用业务:电商/门户/招聘网站 开发语言:PHP和JAVA Web服务:Nginx/Tomcat8 数据库:MySQL 操作系统:CentOS 物理服务器:Dell R730/R430 一、单台服务器部署 项目开发完成上线,用户访问量寥寥无几。 二、WEB与数据库独立部署 有一定用户访问量,单台服务器性能有些吃力,想提高并发能力,增加一台服务器,将HTTP请求与SQL操作负载分散不同服务器。 三、动静分离-初期 什么是动静分离?静态页面与动态页面分离部署。 四、数据库主从与查询缓存 RedisCache 使用Redis缓存数据库查询结果,将热数据放到内存中,提高查询速度,减少数据库请求。 MySQL主从 基于binlog异步复制。 HA MySQL:Keepalived 怎么保证Redis缓存时效性? a) 增加中间件,在主从同步延迟时间内,中间件将SQL读操作还路由到主。 b) 主从同步延迟时间后,再异步发起一次淘汰Cache。 c) 增加消息队列和清理Cache程序,入库同时也写入消息队列,缓存清理程序订阅消息队列,一旦有数据更新,重新Cache。 d)

SpringCloud--Ribbon

跟風遠走 提交于 2020-02-26 02:56:54
Ribbon Spring Cloud Ribbon是基于Netflix Ribbon实现的一套客户端负载均衡的工具。 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。 Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。就是在配置文件中列出Load Balancer(简称LB)后面所有的机器, Ribbon会自动的帮助你基于某种规则去连接这些机器,我们也很容易使用Ribbon实现自定义的负载均衡算法。 集中式LB :即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5, 也可以是软件,如nginx), 由该设施负责把访问请求通过某种策略转发至服务的提供方; 进程式LB :将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后自己再从这些地址中选择出一个合适的服务器。Ribbon就属于进程内LB,它只是一个类库,集成于消费方进程 https://github.com/Netflix/ribbon/wiki/Getting-Started 集成Ribbon 1 修改消费服务方工程,添加Ribbon 依赖,改pom文件 <!-- Ribbon相关 --> <dependency> <groupId>org.springframework.cloud<

spring cloud总结

試著忘記壹切 提交于 2020-02-26 01:58:26
微服务,分布式,cap原理,springcloud 及各组件简介,springcloud与dubbo的区别(各自的技术栈) eureka简介,基本架构,三大角色,自我保护,eureka与zookeeper的区别 ribbon,负载均衡简介,负载均衡架构,IRULE的7种默认算法 feign简介,与ribbon区别。feign的调用方式 hystrix简介,能干吗(3种服务缺陷),服务熔断,服务降级,dashboard简介 zuul简介,能干吗,路由的映射规则 spring cloud config简介,能干吗,架构图 网络架构变迁 来源: CSDN 作者: xushiyu1996818 链接: https://blog.csdn.net/xushiyu1996818/article/details/104479497

LVS负载均衡之NAT模式原理及配置详细流程

北慕城南 提交于 2020-02-26 01:25:52
一、前言 ​ 上篇文章讲述了LVS负载均衡相关理论知识,今天主要来详细地来对LVS工作模式之一的NAT模式进行实验配置。 二、NAT模式理论回顾与简述 详细原理可以参考: https://blog.51cto.com/14557673/2467243 ​ 首先我们要明确的是NAT模式的最大特点是什么? ​ 可以这样概述:LVS负载均衡之NAT模式(NAT充当网关)是一种基于网络地址转换技术,通过负载均衡器实现高并发的数据请求和使用调度算法实现优化服务响应的进出口相同的架构,具备高可用高安全性能。 ​ 而其最大劣势在于数据的出入口都是在负载均衡器(NAT服务器上),这样所造成的的后果就是无法支持高并发的数据请求(巨量),并且数据的响应回传过程加剧了这一弊病。所以才有了后续的改进。 三、实例环境 ​ 首先我们需要四台服务器:一台负载均衡调度器、两台web(这里使用两个Apache)服务器、一台存储服务器(NFS方式)。使用一台Windows作为外网客户主机进行模拟。 ​ 架构如下:4台Centos7和一台win10构成 ​ 网段ip地址分配如下表所示: 设备 ip地址 win10客户机 10.0.0.10/24 负载调度器 外网卡:10.0.0.1/24 内网卡:192.168.10.1/24 HTTP服务器1 192.168.10.10/24 HTTP服务器2 192.168.10