当前位置:网站首页 >  百科

手把手搭建原生可水平拓展的轻量服务系统实操指南

时间:2026年06月09日 19:48:30 来源:易频IT社区

1. 前置环境准备

操作对象为Ubuntu 22.04系统,所有命令复制后直接执行即可,无需额外调整。

1.1 安装核心依赖工具

依次执行以下命令:

  • 更新软件源:sudo apt update -y
  • 安装Node.js与NPM:sudo apt install nodejs npm -y
  • 安装Nginx:sudo apt install nginx -y
  • 安装Docker(用于容器化拓展):curl -fsSL https://get.docker.com | sudo sh

验证安装结果:执行node -vnginx -vdocker --version,均输出版本号即为成功。

2. 搭建基础业务服务实例

本步骤生成2个独立服务实例,用于后续负载均衡验证。

2.1 编写服务代码

创建目录并初始化项目:

  • mkdir -p ~/expand-service && cd ~/expand-service
  • npm init -y(自动生成package.json)
  • npm install express --save(安装Web框架)

创建完整业务代码文件app.js:

``` const express = require('express'); const app = express(); const port = process.argv[2] || 3000; // 健康检查接口 app.get('/health', (req, res) => res.status(200).send('ok')); // 业务数据接口,返回服务实例标识 app.get('/api/data', (req, res) => res.json({service: `instance-${port}`, timestamp: Date.now()})); app.listen(port, () => console.log(`Service running on port ${port}`)); ```

2.2 启动双实例服务

在当前目录执行以下命令,启动2个端口不同的服务:

  • node app.js 3001(第一个实例,端口3001)
  • 新开终端执行node app.js 3002(第二个实例,端口3002)

验证实例正常:分别执行curl http://localhost:3001/api/datacurl http://localhost:3002/api/data,均返回带对应端口的JSON结果即为成功。

3. 配置Nginx负载均衡实现基础拓展

手把手搭建原生可水平拓展的轻量服务系统实操指南

通过Nginx反向代理将请求分发到不同服务实例,实现水平拓展的核心逻辑。

3.1 编写Nginx负载均衡配置

创建独立配置文件避免修改主配置:

  • sudo nano /etc/nginx/conf.d/load_balance.conf(用nano编辑器打开文件)
  • 粘贴以下完整配置:
``` http { upstream backend_servers { server 127.0.0.1:3001; server 127.0.0.1:3002; 后续新增实例直接在此添加,无需修改其他配置 } server { listen 80; server_name _; location /api/ { proxy_pass http://backend_servers; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } location /health { proxy_pass http://backend_servers/health; } } } ```

保存退出nano:按Ctrl+O回车,再按Ctrl+X。

3.2 加载并验证配置

  • sudo nginx -t(测试配置是否合法)
  • sudo systemctl restart nginx(重启Nginx生效)

验证负载均衡:执行curl http://localhost/api/data,连续多次执行,会交替返回instance-3001和instance-3002的结果,说明分发正常。

4. 容器化拓展(进阶实操)

将服务封装为Docker容器,实现新增实例仅需1条命令,进一步简化拓展流程。

4.1 编写Dockerfile

~/expand-service目录创建文件Dockerfile,内容如下:

``` FROM node:18-alpine WORKDIR /app COPY package.json . RUN npm install COPY . . EXPOSE 3000 CMD ["node", "app.js", "3000"] ```

4.2 构建镜像并运行容器

  • docker build -t expand-service .(构建服务镜像)
  • 运行2个容器实例,端口映射到本地3001、3002:
  • docker run -d -p 3001:3000 expand-service
  • docker run -d -p 3002:3000 expand-service

验证容器状态:执行docker ps,看到2个运行中的容器,端口对应即为成功。此时Nginx配置无需修改,直接通过80端口请求即可实现负载均衡。

5. 核心拓展能力验证

新增第3个服务实例,验证水平拓展的便捷性:

  • 运行第三个容器实例:docker run -d -p 3003:3000 expand-service
  • 修改Nginx配置:打开/etc/nginx/conf.d/load_balance.conf,在upstream块新增一行server 127.0.0.1:3003;
  • 重新加载Nginx:sudo systemctl reload nginx

拓展验证:连续执行5次curl http://localhost/api/data,结果会出现instance-3001、3002、3003的交替返回,说明新增实例已自动加入负载均衡,水平拓展生效。

6. 实操关键注意事项

  • 所有涉及权限的命令必须加sudo,避免执行失败
  • Nginx配置修改后必须先执行nginx -t验证,再重启或重载
  • Docker容器的主机端口(-p参数后)不能重复,否则会端口冲突
  • 若拓展到多服务器,只需在upstream块添加对应服务器的公网IP和端口即可,无需修改服务代码
  • 默认负载均衡为轮询策略,高并发场景可根据需求添加ip_hash策略,新手用默认即可

相关推荐

最新

热门

推荐

精选

标签

易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。

Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图