负载均衡

NGINX学习(五)--nginx做负载均衡

南楼画角 提交于 2019-12-02 01:57:58
负载均衡也是 Nginx 常用的一个功能,负载均衡其意思就是分摊到多个操作单元上进行执行,例如:Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。简单而言就是当有2台或以上服务器时,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要同时配置反向代理,通过反向代理跳转到负载均衡。而Nginx目前支持自带3种负载均衡策略,还有2种常用的第三方策略。 1、RR(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。 简单配置 upstream test { server localhost:8080; server localhost:8081; } server { listen 81; server_name localhost; client_max_body_size 1024M; location / { proxy_pass http://test; proxy_set_header Host $host:$server_port; } } 配置了2台服务器,当然实际上是一台,只是端口不一样而已,而8081的服务器是不存在的,也就是说访问不到,但是我们访问 http://localhost 的时候,也不会有问题,会默认跳转到 http://localhost:8080

nginx配置负载均衡

假如想象 提交于 2019-12-02 01:45:39
文章来源 运维公会:nginx配置负载均衡 1、负载均衡 首先说下什么是负载均衡。负载均衡是高可用架构最基础的组件,因为有负载均衡可以将许多请求分配到不同的后端服务器为客户端提供服务。即使这其中有机器因为某些原因而不能提供服务,也不会影响整个系统的使用。同样因为请求都被平均的分配到了不同后端服务器,所以单一服务器不必承受过高的负载,同样客户端也会有更好的用户体验。 2、配置实例 后端的tomcat运行的都是同一个应用,不过是ip不同而已,基本上就把后端的三个tomcat服务器看作一个就行。 只要保证前端nginx代理服务器能够访问后端的tomcat服务器就可以,即便不在同一个网段也没有问题。 默认tomcat已经可以正常运行,并且可以访问,下边看nginx的配置。 配置: http { upstream testproject { server 192.168.8.2:8080; server 192.168.8.3:8080; server 192.168.8.4:8080 backup; } server { listen 80; server_name www.test.com/192.168.8.5; location / { proxy_pass http://testproject; } } } 上边是非常简单的负载均衡配置,并没有太多的其余的配置

HAProxy 7层 负载均衡

北城以北 提交于 2019-12-02 01:44:21
HAProxy 7层 负载均衡 https://www.cnblogs.com/jicki/p/5546902.html HAProxy 系统 CentOS 5.8 x64 wget http://haproxy.1wt.eu/download/1.3/src/haproxy-1.3.26.tar.gz cd haproxy-1.3.26 make TARGET=linux26 PREFIX=/opt/local/haproxy make install PREFIX=/opt/local/haproxy mkdir /opt/local/haproxy/conf cd /opt/local/haproxy/conf/ vim haproxy.cfg 后台配置模式 ------------------------------------------------------------------------------------------------ global log 127.0.0.1 local0 maxconn 65535 chroot /opt/local/haproxy uid 502 gid 502 daemon nbproc 8 pidfile /opt/local/haproxy/haproxy.pid defaults log 127.0.0.1

aws使用之负载均衡elb要点

左心房为你撑大大i 提交于 2019-12-01 23:41:37
目录: 1、创建负载 2、目标群组 3、使用注意事项 4、总结 创建负载 alb负载 https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/application/application-load-balancer-getting-started.html nlb负载 https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/network/network-load-balancer-getting-started.html 传统负载 https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/classic/elb-getting-started.html 目标群组 https://docs.aws.amazon.com/zh_cn/elasticloadbalancing/latest/application/load-balancer-target-groups.html 使用注意事项 1、可用区域最少2个 2、侦听器可多个创建 3、目标实例需要指定后端端口 4、设置安全组匹配转发服务器 总结 aws坑是有的,但是使用过就离不开了,非常好的产品 来源: https://www

nginx

喜你入骨 提交于 2019-12-01 23:28:20
nginx Nginx简介 nginx概述 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等 。 nginx作为web服务器 Nginx可以作为静态页面的web服务器,同时还支持CGI协议的动态语言,比如perl、php等。但是不支持java。Java程序只能通过与tomcat配合完成。Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率,能经受高负载的考验,有报告表明能支持高达50,000个并发连接数。 正向代理 Nginx 不仅可以做反向代理,实现负载均衡。还能用作正向代理来进行上网等功能。 正向代理:如果把局域网外的 Internet 想象成一个巨大的资源库,则局域网中的客户端要访问 Internet ,则需要通过代理服务器来访问,这种代理服务就称为正向代理。 反向代理 反向代理,其实客户端对代理是无感知的,因为客户端不需要任何配置就可以访问,我们只需要将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据后,在返回给客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址。 负载均衡

SpringCloud微服务实战二:Spring Cloud Ribbon 负载均衡 + Spring Cloud Feign 声明式调用

老子叫甜甜 提交于 2019-12-01 23:03:55
1.Spring Cloud Ribbon的作用 Ribbon是Netflix开发的一个负载均衡组件,它在服务体系中起着重要作用,Pivotal将其整合成为Spring Cloud Ribbon,与其他SpringCloud组件结合可以发挥出强大作用,它的负载策略有多种,默认轮询,可配置超时重试,说到负载均衡,Ribbon与Lvs、Nginx不一样, nginx是服务端负载均衡 , Ribbon是客户端负载均衡 ,具体表现为客户端从注册中心拿到服务的所有实例,然后以负载均衡方式去调用服务,默认以轮询的方式去调用服务实例。 2.Spring Cloud Feign的作用 Feign是一种声明式、模板化的HTTP客户端。在Spring Cloud中使用Feign, 我们可以做到使用HTTP请求远程服务时能与调用本地方法一样的编码体验,开发者完全感知不到这是远程方法,更感知不到这是个HTTP请求。 Feign原理:我们首先会添加@EnableFeignClients注解开启对 FeignClient扫描加载处理,扫描后会注入到SpringIOC容器,当定义的feign接口方法被调用时,通过JDK代理的方式,生成具体的RequestTemplate,RequestTemplate生成Request,交给URLConnection处理,并结合LoadBalanceClient与Ribbon

关于大型网站架构整理

只谈情不闲聊 提交于 2019-12-01 22:50:21
1、大型网站架构的发展史(红字就是每一步发展历程的关键) (1)从一个小网站发展起来, 一台服务器,应用程序、数据库、文件等所有资源都在一台服务器上 (2)网站业务的发展,一台服务器逐渐不能满足需求,因此要将 应用和数据分离,应用和数据分离后使用三台服务器:应用服务器、文件服务器和数据库服务器 (3)网站进一步发展,数据库压力太大导致访问延迟,因此 使用缓存该改善网站性能(记住,使用缓存是改善网站性能的第一步) ,网站使用的缓存分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存 (4)使用缓存,数据库访问压力得到有效缓解,但是在网站访问高峰期应用服务器还是成为了整个网站的瓶颈。这种时候要理解, 不要企图去更换更强大的服务器,对大型网站而言,不管多么强大的服务器,都满足不了网站持续增长的业务需求 ,因此可以 通过增加服务器的方式改善负载压力 ,再通过负载均衡调度服务器,将来自用户浏览器的访问请求分发到应用服务器集群中的某台服务器上 (5)虽然使用缓存可以使大部分数据不走数据库,但是缓存没有命中、缓存过期的数据还是会走数据库,网站达到一定规模之后,数据库读写压力还是会很大,成为网站的瓶颈。此时可以 使用数据库读写分离来改善数据库负载压力,应用服务器写数据走写库,应用服务器读数据走读库 ,目前大部分主流数据库都提供主从热备功能,通过配置两台数据库主从关系

Nginx+Tomcat+Redis实现负载均衡、资源分离、session共享

匆匆过客 提交于 2019-12-01 22:44:28
Nginx+Tomcat+Redis 实现负载均衡、资源分离、session共享 CentOS安装Nginx http://centoscn.com/CentosServer/www/2013/0910/1593.html CentOS安装Tomcat http://blog.csdn.net/zhuying_linux/article/details/6583096 CentOS安装Redis http://www.cnblogs.com/zhuhongbao/archive/2013/06/04/3117997.html 多个Tomcat负载均衡实例:可在服务器上复制出多个Tomcat分别修改Tomcat的 http访问端口(默认为8080端口) Shutdown端口(默认为8005端口) JVM启动端口(默认为8009端口) 1 、Nginx实现多Tomcat负载均衡 Tomcat服务 192.168.1.177:8001 192.168.1.177:8002 192.168.1.177:8003 Nginx配置 upstream mytomcats { server 192.168.1.177:8001; server 192.168.1.177:8002; server 192.168.1.177:8003; } server { listen 80; server

Spring Cloud Alibaba学习笔记(3) - Ribbon

前提是你 提交于 2019-12-01 19:13:22
1.手写一个客户端负载均衡器   在了解什么是Ribbon之前,首先通过代码的方式手写一个负载均衡器 RestTemplate restTemplate = new RestTemplate(); // 获取请求示例 List<ServiceInstance> instances = discoveryClient.getInstances("study02"); List<String> collect = instances.stream() .map(instance -> instance.getUri().toString() + "/find") .collect(Collectors.toList()); // 随机算法 int i = ThreadLocalRandom.current().nextInt(collect.size()); String targetURL = collect.get(i); log.info("请求的目标地址: {}", targetURL); DemoComment forObject = restTemplate.getForObject(targetURL, DemoComment.class, 1); 2.Ribbon是什么    Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法

Nginx负载均衡的max_fails和fail_timeout的默认配置问题

纵饮孤独 提交于 2019-12-01 18:33:49
今天发现一个奇怪的现象,前端请求后端服务多次后会超时一次,经过多次验证确定是大概10s左右就会超时一次,检查后端服务,发现其中一个节点已经夯死。 但是我们的nginx负载均衡策略是轮询机制,按照配置来看应该是每隔一次请求轮询到失败的节点时超时一次才对。为什么是每隔10s超时一次呢? upstream app_server { server 192.168.15.98:9080; server 192.168.15.99:9080; } 原来,Nginx负载均衡的检查模块中,有两个参数:max_fails和fail_timeout。 默认:fail_timeout为10s,max_fails为1次。 原理:Nginx是基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间中失败次数达到max_fails次,这个周期次数内,如果后端同一个节点不可用,那么接将把节点标记为不可用,并等待下一个周期(同样时长为fail_timeout)再一次去请求,判断是否连接是否成功 这样就能说明我们发现的现象了。即在10s以内后端失败了1次【即一次请求超时】,那么这个后端就被标识为不可用了,所以在接下来的10s期间,nginx都会把请求分配给正常的后端【即多次的请求正常】。 来源: https://www.cnblogs.com/andrew-303/p/11712306