负载均衡

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的架构。当然要根据项目具体需求制定方案。 下面说说各自的特点和适用场合

Ribbon手写轮询算法

淺唱寂寞╮ 提交于 2020-03-10 20:46:18
负载均衡算法:rest接口第几次请求数 % 服务器集群总数量 = 实际调用服务器位置下表,每次服务重启后rest接口计数从1开始 package com.java.cloud.order.lb; import org.springframework.cloud.client.ServiceInstance; import org.springframework.stereotype.Component; import java.util.List; import java.util.concurrent.atomic.AtomicInteger; /** * Ribbon手写轮询算法 * * @author jiangli * @since 2020/3/10 13:05 **/ @Component public class MyLB implements LoadBalancer { private AtomicInteger atomicInteger = new AtomicInteger(0); /** * 负载均衡算法:rest接口第几次请求数%服务器集群总数量=实际调用服务器位置下标,每次服务重启动后rest接口计数从1开始. */ @Override public ServiceInstance instances(List<ServiceInstance>

云原生资深专家:如何选择一个最佳微服务代理架构?

自闭症网瘾萝莉.ら 提交于 2020-03-10 12:49:15
作者简介 Pankaj Gupta,就职于Citrix,是云原生应用程序交付解决方案的高级总监。 近两年微服务架构十分流行,许多公司也正在努力构建自己的微服务架构。而因为微服务能够实现更快的发布周期、将应用程序模块化、弹性伸缩以及让应用程序具备可移植性,其越来越成为企业数字化进程中不可忽视的标志。但是,由于对敏捷性所产生的影响了解较少,使得应用程序交付增加了许多复杂性。 对于此,有什么解决方案呢? 选择合适的代理架构和应用程序交付controller(ADCs)对最终用户获得最佳体验至关重要。它必须能够提供合适的安全等级、观察性、高级流量管理以及故障排查能力并且能够兼容你的开源工具。此外,代理架构必须能够同时满足南北流量和微服务间东西流量的需求。 单体应用程序的负载均衡十分简单。但是对于基于微服务的应用程序而言,负载均衡则更为复杂。 本文将介绍4个代理架构,并根据基于微服务应用程序交付的7个关键标准对其中几个进行评估。 在优势和复杂性之间进行权衡 首先,我们需要达成共识:微服务架构实际上是十分复杂的。在开源创新的推动下,最佳实践随着技术的进步而迅速发展。不同的架构拥有不同的优势,但是也呈现出不同程度的复杂性。很多时候,我们需要在自己实际所需的好处(例如安全性、可观察性)和复杂性之间做出取舍。尤其当你考虑实施特定架构所需的技能和为了满足大众需求而必须添加的功能时

负载均衡haproxy+keepalived、lvs+keepalived后端php+nginx框架

↘锁芯ラ 提交于 2020-03-10 12:36:55
101、102机器 haproxy设置 1. 解压文件并进入解压文件夹 tar xvf haproxy-1.9.8.tar.gz cd haproxy-1.9.8 2. 编译安装haproxy,编译参数 make ARCH=x86_64 TARGET=linux2628 USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_SYSTEMD=1 USE_CPU_AFFINITY=1 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy 4. 拷贝二进制执行文件入PATH路径 cp haproxy /usr/sbin/ 5. 修改systemctl启动文件 vim /usr/lib/systemd/system/haproxy.service [Unit] Description=HAProxy Load Banlancer After=syslog.target network.target [Service] ExecStartPre=/usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -c -q ExecStart=/usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run

云原生资深专家:如何选择一个最佳微服务代理架构?

邮差的信 提交于 2020-03-10 11:34:47
作者简介 Pankaj Gupta,就职于Citrix,是云原生应用程序交付解决方案的高级总监。 近两年微服务架构十分流行,许多公司也正在努力构建自己的微服务架构。而因为微服务能够实现更快的发布周期、将应用程序模块化、弹性伸缩以及让应用程序具备可移植性,其越来越成为企业数字化进程中不可忽视的标志。但是,由于对敏捷性所产生的影响了解较少,使得应用程序交付增加了许多复杂性。 对于此,有什么解决方案呢? 选择合适的代理架构和应用程序交付controller(ADCs)对最终用户获得最佳体验至关重要。它必须能够提供合适的安全等级、观察性、高级流量管理以及故障排查能力并且能够兼容你的开源工具。此外,代理架构必须能够同时满足南北流量和微服务间东西流量的需求。 单体应用程序的负载均衡十分简单。但是对于基于微服务的应用程序而言,负载均衡则更为复杂。 本文将介绍4个代理架构,并根据基于微服务应用程序交付的7个关键标准对其中几个进行评估。 在优势和复杂性之间进行权衡 首先,我们需要达成共识:微服务架构实际上是十分复杂的。在开源创新的推动下,最佳实践随着技术的进步而迅速发展。不同的架构拥有不同的优势,但是也呈现出不同程度的复杂性。很多时候,我们需要在自己实际所需的好处(例如安全性、可观察性)和复杂性之间做出取舍。尤其当你考虑实施特定架构所需的技能和为了满足大众需求而必须添加的功能时

Keepalived + nginx实现高可用性和负载均衡

做~自己de王妃 提交于 2020-03-10 07:59:41
前几天使用了Heartbeat作为高可用服务架构的解决方案,今天有试验了一种全新的解决方案,即采用Keepalived来实现这个功能。 Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived可以用来防止服务器单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生,通过配合Nginx可以实现web前端服务的高可用。 Keepalived实现的基础是VRRP协议,Keepalived就是巧用VRRP协议来实现高可用性(HA)的. VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议,VRRP协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器IP(一个或多个),而在路由器组内部,如果实际拥有这个对外IP的路由器如果工作正常的话就是MASTER,或者是通过算法选举产生,MASTER实现针对虚拟路由器IP的各种网络功能,如ARP请求,ICMP,以及数据的转发等;其他设备不拥有该IP,状态是BACKUP,除了接收MASTER的VRRP状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP将接管原先MASTER的网络功能。 VRRP协议使用多播数据来传输VRRP数据,VRRP数据使用特殊的虚拟源MAC地址发送数据而不是自身网卡的MAC地址

2.2.2 LVS负载均衡软件

僤鯓⒐⒋嵵緔 提交于 2020-03-10 00:21:40
目录 2.2.2.1 LVS基础概念解析 1、LVS简介 1.1、LVS是什么 1.2、LVS能干什么 2、Linux Virtual Server项目 2.1、Load Balancer(负载调度器) 2.2、Linux Virtual Server项目的目标 2.3、LVS项目已提供了一个实现可伸缩网络服务的Linux Virtual Server框架 2.4、可以利用LVS框架实现 2.2.2.2 基于VIP的keepalived高可用架构讲解 2.2.2.3 搭建LVS负载均衡集群 2.2.2.1 LVS基础概念解析 1、LVS简介 1.1、LVS是什么 LVS的英文全称是Linux Virtual Server,即Linux虚拟服务器。它是我们国家的章文嵩博士的一个开源项目。 在linux内核2.6中,它已经成为内核的一部分,在此之前的内核版本则需要重新编译内核 1.2、LVS能干什么 LVS主要用于多服务器的负载均衡 。它 工作在网络 4 层 ,可以实现高性能,高可用的服务器集群技术。 它廉价,可把许多低性能的服务器组合在一起形成一个超级服务器。他易用,配置非常简单, 且有多种负载均衡的方法。他稳定可靠,即使在集群的服务器中某台服务器无法正常工作, 也不影响整体效果。另外可扩展性也非常好。 Nginx工作在 7 层网络模型下 2、Linux Virtual

haproxy反向代理

◇◆丶佛笑我妖孽 提交于 2020-03-09 19:08:21
haproxy是个高性能的tcp和http的反向代理。它就是个代理。不像nginx还做web服务器 官网地址为www.haproxy.org nginx的优点和缺点 优点: 1、web服务器,应用比较广泛,大家都会 2、可以作为7层负载均衡,location设置复杂的基于HTTP的负载均衡 3、性能强大,网络依赖小 4、安装配置简单 缺点: 1、健康检查单一,不支持基于url的健康检查(可以使用第三方插件实现) 2、负载均衡算法少 3、不能动态管理,比如踢出某个web节点,需要reload配置 4、没有集群upstream的状态页面    haproxy的优点和缺点 优点: 1、专门做反向代理负载均衡 2、负载均衡算法比较多,大于等于8种,比nginx丰富 3、性能不低于nginx,大于等于nginx 4、支持动态管理,通过和haproxy的sock进行通信,可以进行管理 5、有比较丰富的Dashboard的页面,监控方便。有管理页面 6、比较强大的7层反向代理功能,在7层方便,功能强大 7、会话保持比nginx丰富。可以基于cookie和源IP(nginx也能做到基于IP和cookie) 缺点: 配置没有Nginx简单(相对熟悉)    先杀掉原先的nginx进程,防止80端口被占用,导致haproxy无法启动 [root@linux-node1 conf]# pkill

Nginx+Tomcat负载均衡配置

自作多情 提交于 2020-03-09 18:19:25
1.Tomcat和Nginx的安装不再描述 2.配置Nginx,修改conf配置文件 进入配置文件目录,一般位于/usr/local/nginx/conf vi nginx.conf # 按下面进行增加和编辑,完成后 :wq 保存。不会使用 vi/ vim。你应该上网搜搜。 http { # 省略代码.... # 增加 upstream, 名称为 serverlist upstream serverlist{ # 有几台就增加几台,一台就一台 server localhost:8080 weight=1; # weigh表示权重,越大访问的机率越多 server localhost:8081 weight=1; server localhost:8082 weight=1; } # 编辑 server { listen 80; server_name localhost; location / { # 这里使用定义 serverlist proxy_pass http://serverlist; } 3.重启Nginx /usr/local/nginx/sbin/nginx -s reload 来源: CSDN 作者: Mosicol 链接: https://blog.csdn.net/Mosicol/article/details/104751951

跟我学习SpringCloud 教程第四篇:Ribbon-b2b2c小程序电子商务

老子叫甜甜 提交于 2020-03-09 16:51:16
Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起。Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说,就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器。我们也很容易使用Ribbon实现自定义的负载均衡算法。了解springcloud架构可以加求求:三五三六二四七二五九 Ribbon单独使用 创建一个maven工程 名称 ribbon_client pom内容 <dependencies> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-core</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>com.netflix.ribbon</groupId> <artifactId>ribbon-httpclient</artifactId> <version>2.2.0</version> </dependency> </dependencies> 来源: 51CTO 作者: