什么是负载均衡,为什么要做负载均衡?
大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员
今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点——什么是负载均衡,为什么要做负载均衡?
PPT链接:葵花宝典
1.背景介绍
在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。
针对以上情况的解决方案:
(1) 服务器进行硬件升级:采用高性能服务器替换现有低性能服务器。 该方案的弊端:
高成本:高性能服务器价格昂贵,需要高额成本投入,而原有低性能服务器被闲置,造成资 源浪费。
可扩展性差:每一次业务量的提升,都将导致再一次硬件升级的高额成本投入,性能再卓越 的设备也无法满足当前业务量的发展趋势。
无法完全解决现在网络中面临的问题:如单点故障问题,服务器资源不够用问题等。
(2) 组建服务器集群,利用负载均衡技术在服务器集群间进行业务均衡。
该方案的优势: 低成本
可扩展性:当业务量增长时,系统可通过增加服务器来满足需求,且不影响已有业务,不降 低服务质量
高可靠性:单台服务器故障时,由负载均衡设备将后续业务转向其他服务器,不影响后续业 务提供,保证业务不中断。
2.知识剖析
负载均衡原理
系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:
层负载均衡:
四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。
七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。
应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理,并返回相应数据。
负载均衡设备:将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器。(一种把网络请求分散到一个服务器集群中的可用服务器上去的设备)
负载均衡的作用:
1.解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);
2.提供故障转移,实现高可用;
3.通过添加或减少服务器数量,提供网站伸缩性(扩展性);
4.安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)
负载均衡分类:
根据实现技术不同,可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,反向代理负载均衡、链路层负载均衡等。
负载均衡算法:
轮询、 随机、最少链接、Hash(源地址散列)、加权
硬件负载均衡:
采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,一般土豪级公司可以考虑,业界领先的有两款,F5和A10。
价格:F5, 15w~55w不等;A10, 55w-100w不等。
优点:功能全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。一般软件负载均衡支持到5万级并发已经很困难了,硬件负载均衡可以支持。商用硬件负载均衡稳定性高,具备防火墙,防DDOS攻击等安全功能,提供售后支持。
3.常见问题
怎么配置负载均衡?
4.解决方案
1.部署至少两台服务器,我选择在本地部署一台jetty、一台tomcat。
2.在nginx.conf配置文件中http括号内添加如下配置:
upstream local_tomcat {
server localhost:8088;
server localhost:8089;}
server{
location / {
proxy_pass http://local_tomcat;}}
3.在hosts文件中添加解析域名
127.0.0.1 local_tomcat
5.扩展思考
什么是反向代理负载均衡?
6.更多讨论
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,该服务器就可称之为代理服务器。由于代理服务器处在最终处理请求访问的服务器之前,因此可以在代理服务器上做负载均衡。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~
------------------------------------------------------------------------------------------------------------------------
技能树.IT修真院
“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。
这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~
什么是负载均衡,为什么要做负载均衡?相关推荐
- nginx做负载均衡 tomcat获得客户端真实ip
转 http://www.cnblogs.com/netsa/p/6985990.html 因项目需要做tomcat2台机器的负载均衡,配置好负载环境后,发现tomcat的日志一律是我前置nginx代 ...
- haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你
Nginx Nginx优点: 1.工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行. 2.Nginx对网 ...
- Nginx做负载均衡报:nginx: [emerg] could not build the types_hash
环境:KVM/Centos6.3 用Nginx做负载均衡的时候在配置完成后,启动Nginx的时候报: nginx: [emerg] could not build the types_hash, yo ...
- RabbitMq集群使用Nginx做负载均衡
2019独角兽企业重金招聘Python工程师标准>>> 1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版 ...
- 在Linux上使用Nginx为Solr集群做负载均衡
在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...
- nginx做负载均衡,解决多机器多gpu卡服务对外暴露一个接口问题
思路:多个gpu 服务接口-->ngxin做负载均衡-->对外暴露一个. 以一机两卡为例,其中gunicorn部署一卡多进程服务参考这篇文章 一.制作nginx负载均衡镜像 1.制作Doc ...
- 用NGINX做负载均衡,keepalived高可用
实验环境,四台虚拟机,两台做负载均衡,两台做RS IP地址:两台负载均衡分别为:10.0.0.7:10.0.0.8(高可用keepalived) 两台 RS主机地址为: 10.0.0.9:10.0.0 ...
- [Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法
[Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法 参考文章: (1)[Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法 (2)https://www.cnblogs.com/guan ...
- 负载均衡服务器性能评估,性能测试:pgpool做负载均衡的性能评估
1.测试环境maggie1:IP:192.168.31.101角色:pgpool_II + 流复制备库maggie2:IP::192.168.31.102角色:流复制主库 2. 环境搭建1. magg ...
- Nginx做负载均衡的模块
负载均衡模块 使用nginx做负载均衡的两大模块: upstream 定义负载节点池 ocation 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池 upstream模 ...
最新文章
- Vista下控件无法安装解决办法
- WCF4.0新特性体验(6):路由服务Routing Service(下)
- 改变单选或者复选框的样式
- JQuery UI – droppable 中文文档
- PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询
- Python中_,__,__xx__的区别
- 洛谷P2751 [USACO4.2]工序安排Job Processing
- 简单总结 2019 展望 2020
- 编辑距离算法(C#版本)
- 树莓派入门教程 - 0 - 准备篇 - 0.1 第一次开机
- 【学习 Opencv】—— 常见接口
- 动态规划:leetcode 416 分割等和子集(背包问题应用)
- 熊海博客php版本,熊海CMS xhcms v1.0代码审计
- 【信号与系统】Multisim 仿真信号合成与分解
- 制作便携版 FireFox 火狐浏览器
- 小米android怎么刷机教程,安卓刷机教程_小米刷机教程_手机刷机教程-IT资讯(PC6.com)...
- 博士生DIY超级显微镜,直接看到原子
- python中的value是什么意思_python中p-value的实现方式
- 【超详细教程(附源码)】基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC
- 《你若安好,便是晴天》
热门文章
- python fileinput_Python模块学习:fileinput
- idea中使用maven配置sonar
- python嵌套字典读取_python 字典,字典嵌套,字典遍历
- idea打不开项目,窗口不显示问题
- 解决办法| 微信实名超限制
- javascript毫秒计时器_JavaScript 计时器函数用法
- 棋牌游戏如何解决现有问题?
- 【组件开发实践】云巧流程组件对接实践
- 智能体如何应对环境突变:快速感知和自适应
- 英雄联盟手游登录注册地与服务器不匹配,lol手游无法使用当前地区账号登录原因说明,相关解决方法分享...