资讯专栏INFORMATION COLUMN

基于node开发的web应用,负载均衡的简单实践

jkyin / 1403人阅读

摘要:负载均衡,其意思就是分摊到多个操作单元上进行执行阿里云负载均衡架构文档负载均衡好处节省成本,一个服务器性能再好也是有瓶颈的,而且性能越高的服务器成本也越大。所以我们需要同步负载均衡的服务器的文件。

集群(cluster)是一组相互独立的、通过高速网络互联的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。

负载均衡(Load Balance),其意思就是分摊到多个操作单元上进行执行

阿里云负载均衡

架构文档

负载均衡好处

节省成本,一个服务器性能再好也是有瓶颈的,而且性能越高的服务器成本也越大。

极大的提高了并发量和响应速度。

实践例子

学无止境网
该web应用,由两个服务器一起提供的服务

实现负载均衡遇到的问题

nginx负载均衡策略

多台服务器代码同步

多台服务器数据库同步

node服务,代码更新后,服务重启

源的代码更新问题和数据升级

用户上传的图片等静态资源同步

Nginx反向代理及负载均衡

轮询

权重

ip_hash

url_hash

等等...

这里使用最简单的轮询机制,session存放在数据库,解决了session服务器之间不同步的问题。

upstream tianshengjie{
    server ip地址;
    server ip地址 max_fails=2 fail_timeout=10s;
}

server {
    listen 80 default_server;
    server_name 47.99.90.167 www.tianshengjie.cn tianshengjie.cn;
    location / {
        proxy_pass http://tianshengjie;
        proxy_cache_key $http_range$uri$is_args$args;

        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
服务部署
forever start -c nodemon app.js --exitcrash
forever

A simple CLI tool for ensuring that a given script runs continuously
守护node进程程序

nodemon

自动监听文件变化,重启node服务

exitcrash,当node服务奔溃后,重启

代码同步

使用shell脚本,自动更新代码,一键同步更新

#!/bin/bash
cd git仓库
git pull;
yarn install --production;
rsync -av --exclude-from=/opt/ssh/blog_exclude.list git仓库 代码发布地址
rsync -avz -e ssh /var/www/blog/ root@负载均衡服务器ip:负载均衡服务器发布代码目录
cd 代码发布地址 ;
forever stop  app.js;
npm run start;
echo "发布成功"

将git仓库和正式应用的代码地址分离

更新git仓库地址

下载程序依赖

将git仓库更新后的代码复制到正式发布目录

将代码同步更新到负载均衡服务器

重启服务

数据库同步 阿里 云数据库

文档地址
性能最高,有备份有容灾,功能强大,但是收费

mysql

mysql远程连接配置
配置相对简单,数据库会有性能瓶颈,免费

分布式数据库

研究中

静态资源同步

当用户通过负载均衡,被定位到了不同的服务器。这时候,上传文件时,将会把文件上传到不同的服务器中。当用户被分配到了其他服务器时,就会找不到这个文件了。所以我们需要同步负载均衡的服务器的文件。

方案一:自己实现统一文件上传管理系统,所有用户文件统一上传到一个地方。
方案二:使用阿里云的NAS文件系统管理
方案三:使用NFS系统

阿里云 NAS文件系统管理
阿里云文件存储(Network Attached Storage,简称 NAS)是面向阿里云 ECS 实例、HPC 和 Docker 等计算节点的文件存储服务,提供标准的文件访问协议,您无需对现有应用做任何修改,即可使用具备无限容量及性能扩展、单一命名空间、多共享、高可靠和高可用等特性的分布式文件系统。

配置挂载

缺点

缺点:收费

优点

配置相对简单

弹性伸缩,按量收费

阿里出品

NFS (Network FileSystem)

配置文档

缺点

配置相对复杂

server宕机了所有客户端都不能访问

在高并发下NFS效率/性能有限

数据是通过明文传送,安全性一般

对数据完整性不做验证

多台机器挂载NFS服务器时,连接管理维护麻烦

优点

免费,免费的就是好

节省存储空间

实现了多台服务器共享文件

原文地址:
https://tianshengjie.cn/artic...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40173.html

相关文章

  • 前端每周清单第 47 期:NPM 年度报告与 2018 展望,Airbnb React Router

    摘要:确定新的包命名规则为了尽可能避免包的误植域名现象,将不会再允许使用相似的包命名不过会进一步鼓励开发者使用自己的命名空间来发布包。本文是对其几十年来技术之路的回顾与展望,也是一代技术人的青春回忆。 showImg(https://segmentfault.com/img/remote/1460000012846628); 前端每周清单专注前端领域内容,以对外文资料的搜集为主,帮助开发者了...

    makeFoxPlay 评论0 收藏0
  • 「真®全栈之路」Web前端开发后端指南

    前言 在若干次前的一场面试,面试官看我做过python爬虫/后端 的工作,顺带问了我些后端相关的问题:你觉得什么是后端? 送命题。当时脑瓦特了,答曰:逻辑处理和数据增删改查。。。 showImg(https://user-gold-cdn.xitu.io/2019/4/24/16a4ed4fc8c18078); 当场被怼得体无完肤,羞愧难当。事后再反思这问题,结合资料总结了一下。发现自己学过的Re...

    chuyao 评论0 收藏0

发表评论

0条评论

jkyin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<