网站负载均衡解决方案

发布时间 - 2019-04-13 00:00:00    点击率:

web负载均衡(load balancing),简单地说就是给我们的服务器集群分配“工作任务”,而采用恰当的分配方式,对于保护处于后端的web服务器来说,非常重要。

反向代理负载均衡

反向代理服务的核心工作主要是转发HTTP请求,扮演了浏览器端和后台Web服务器中转的角色。因为它工作在HTTP层(应用层),也就是网络七层结构中的第七层,因此也被称为“七层负载均衡”。可以做反向代理的软件很多,比较常见的一种是Nginx。

Nginx是一种非常灵活的反向代理软件,可以自由定制化转发策略,分配服务器流量的权重等。反向代理中,常见的一个问题,就是Web服务器存储的session数据,因为一般负载均衡的策略都是随机分配请求的。同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。

解决方案主要有两种:

配置反向代理的转发规则,让同一个用户的请求一定落到同一台机器上(通过分析cookie),复杂的转发规则将会消耗更多的CPU,也增加了代理服务器的负担。

将session这类的信息,专门用某个独立服务来存储,例如redis/memchache,这个方案是比较推荐的。

反向代理服务,也是可以开启缓存的,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有“单点故障”的问题,如果挂了,会带来很多的麻烦。而且,到了后期Web服务器继续增加,它本身可能成为系统的瓶颈。

配置文件样本:

#user nobody; worker_processes 1; #pid logs/nginx.pid; events { 
    worker_connections 1024; } http { 
    include mime.types; 
    default_type application/octet-stream; 
    sendfile on;  
    keepalive_timeout 65; 
    upstream www.hcoder.net { 
        server 192.168.1.188:80 weight=5; 
        server 192.168.1.158:80; 
    } 
    server { 
    listen 80; 
    server_name www.hcoder.net; 
    location / { 
       proxy_pass http://www.hcoder.net; 
       proxy_set_header Host $host; 
       proxy_set_header X-Real-IP $remote_addr; 
       proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 
   } }


# nginx  # Cookie  # Session  # redis  # http  # 负载均衡  # 七层  # 单点  # 都是  # 代理服务  # 是一种  # 地说  # 将会  # 给我们  # 一台 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: Laravel怎么实现观察者模式Observer_Laravel模型事件监听与解耦开发【指南】  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  Win11怎么恢复误删照片_Win11数据恢复工具使用【推荐】  装修招标网站设计制作流程,装修招标流程?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  Swift中循环语句中的转移语句 break 和 continue  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel怎么使用Intervention Image库处理图片上传和缩放  Windows10电脑怎么设置虚拟光驱_Win10右键装载ISO镜像文件  JS中页面与页面之间超链接跳转中文乱码问题的解决办法  Android中AutoCompleteTextView自动提示  浅谈javascript alert和confirm的美化  浅谈redis在项目中的应用  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  JavaScript如何实现音频处理_Web Audio API如何工作?  Laravel Blade组件怎么用_Laravel可复用视图组件的创建与使用  Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置  如何用PHP快速搭建高效网站?分步指南  js代码实现下拉菜单【推荐】  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  laravel怎么实现图片的压缩和裁剪_laravel图片压缩与裁剪方法  javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】  JavaScript中如何操作剪贴板_ClipboardAPI怎么用  Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】  canvas 画布在主流浏览器中的尺寸限制详细介绍  如何续费美橙建站之星域名及服务?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel安装步骤详细教程_Laravel环境搭建指南  b2c电商网站制作流程,b2c水平综合的电商平台?  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  Laravel如何使用Eloquent进行子查询  如何在阿里云购买域名并搭建网站?  JS实现鼠标移上去显示图片或微信二维码  Laravel如何使用.env文件管理环境变量?(最佳实践)  如何在腾讯云服务器快速搭建个人网站?  javascript如何操作浏览器历史记录_怎样实现无刷新导航  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  如何在Tomcat中配置并部署网站项目?  Laravel怎么多语言本地化设置_Laravel语言包翻译与Locale动态切换【手册】  广州网站制作公司哪家好一点,广州欧莱雅百库网络科技有限公司官网?  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  微信公众帐号开发教程之图文消息全攻略  iOS正则表达式验证手机号、邮箱、身份证号等  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  如何自定义建站之星网站的导航菜单样式?  手机怎么制作网站教程步骤,手机怎么做自己的网页链接?