An open API service indexing awesome lists of open source software.

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

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
```