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

58次阅读

共计 1848 个字符,预计需要花费 5 分钟才能阅读完成。

集群 (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…

正文完
 0