https://github.com/defpavel/node_balancer
пример nginx + pm2 + docker
https://github.com/defpavel/node_balancer
docker nginx pm2
Last synced: about 2 months ago
JSON representation
пример nginx + pm2 + docker
- Host: GitHub
- URL: https://github.com/defpavel/node_balancer
- Owner: DefPavel
- Created: 2024-09-08T13:49:21.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2024-09-08T19:49:29.000Z (almost 2 years ago)
- Last Synced: 2025-02-01T21:12:21.657Z (over 1 year ago)
- Topics: docker, nginx, pm2
- Language: JavaScript
- Homepage:
- Size: 38.1 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Node.js Cluster App with PM2, Nginx, and Docker Compose
Этот проект демонстрирует, как запустить приложение Node.js с PM2 в кластерном режиме, используя Nginx как балансировщик нагрузки и Docker Compose для оркестрации сервисов.
### Преимущества:
- Масштабируемость и отказоустойчивость: PM2 управляет множественными процессами Node.js, а Nginx распределяет запросы между этими процессами, что улучшает масштабируемость и устойчивость приложения.
- Управление и мониторинг: PM2 предоставляет инструменты для мониторинга и управления процессами, в то время как Docker Compose упрощает управление контейнерами и настройкой среды.
- Производительность: Nginx обрабатывает статические файлы и кэширует запросы, снижая нагрузку на Node.js приложение и повышая общую производительность системы.
- Гибкость и переносимость: Docker Compose позволяет легко развернуть приложение в разных средах (например, на локальном компьютере или в облаке), обеспечивая консистентность окружения и удобство работы.
- Обновляемость и безопасность: Встроенные возможности Nginx для обработки SSL/TLS сертификатов и гибкая конфигурация позволяют легко обеспечить безопасность приложения и адаптировать его под изменяющиеся требования.
## Структура проекта
```bash
/node_balancer
|-- Dockerfile # Dockerfile для сборки приложения Node.js
|-- src/app.js # Основное приложение Node.js
|-- package.json # Зависимости Node.js
|-- nginx/nginx.conf # Конфигурационный файл Nginx
|-- docker-compose.yml # Конфигурация Docker Compose
```
- app.js: Основное приложение Node.js, которое работает на нескольких ядрах с помощью PM2.
- nginx.conf: Конфигурационный файл Nginx для балансировки нагрузки между процессами Node.js.
- Dockerfile: Dockerfile для сборки и запуска приложения Node.js с PM2.
- docker-compose.yml: Файл конфигурации для оркестрации Nginx и приложения Node.js.
## Сборка и запуск контейнеров Docker
```bash
docker-compose up --build
```
### Доступ к приложению
```bash
http://localhost:80
```
### Проверка нагрузки через nginx
(28231 2xx responses, 21895 non 2xx responses
50k requests in 11.01s, 22.3 MB read)
```bash
npx autocannon -d 11 --renderStatusCodes http://localhost:80/fibonacci/10
```
### Проверка нагрузки через pm2
(410k requests in 11.01s, 109 MB read) хотя и без балансировки nginx, pm2 и так не плохо справляется кластерами и сам балансирует нагрузку
```bash
npx autocannon -d 11 --renderStatusCodes http://localhost:3000/fibonacci/10
```