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

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

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

阿里云负载均衡

架构文档

负载均衡好处

  1. 节省成本,一个服务器性能再好也是有瓶颈的,而且性能越高的服务器成本也越大。
  2. 极大的提高了并发量和响应速度。

实践例子

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

实现负载均衡遇到的问题

  1. nginx负载均衡策略
  2. 多台服务器代码同步
  3. 多台服务器数据库同步
  4. node服务,代码更新后,服务重启
  5. 源的代码更新问题和数据升级
  6. 用户上传的图片等静态资源同步

Nginx反向代理及负载均衡

  1. 轮询
  2. 权重
  3. ip_hash
  4. url_hash
  5. 等等...

这里使用最简单的轮询机制,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

  1. 自动监听文件变化,重启node服务
  2. 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 "发布成功"
  1. 将git仓库和正式应用的代码地址分离
  2. 更新git仓库地址
  3. 下载程序依赖
  4. 将git仓库更新后的代码复制到正式发布目录
  5. 将代码同步更新到负载均衡服务器
  6. 重启服务

数据库同步

阿里 云数据库

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

mysql

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

分布式数据库

研究中

静态资源同步

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

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

阿里云 NAS文件系统管理

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

配置挂载

缺点

缺点:收费

优点
  1. 配置相对简单
  2. 弹性伸缩,按量收费
  3. 阿里出品

NFS (Network FileSystem)

配置文档

缺点
  1. 配置相对复杂
  2. server宕机了所有客户端都不能访问
  3. 在高并发下NFS效率/性能有限
  4. 数据是通过明文传送,安全性一般
  5. 对数据完整性不做验证
  6. 多台机器挂载NFS服务器时,连接管理维护麻烦

优点

  1. 免费,免费的就是好
  2. 节省存储空间
  3. 实现了多台服务器共享文件

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

相关推荐