8.1 Команда docker compose scale
Масштабування сервісів — це процес збільшення або зменшення кількості екземплярів контейнерів, які виконують один і той же сервіс, для управління навантаженням і забезпечення відмовостійкості застосунку. У Docker Compose для масштабування сервісів використовується команда docker compose scale (у старих версіях) або параметр --scale у нових версіях.
Основні концепції масштабування:
- Масштабованість: Можливість легко збільшувати або зменшувати кількість екземплярів сервісу залежно від поточного навантаження.
- Відмовостійкість: Запуск декількох екземплярів сервісу дозволяє забезпечити відмовостійкість, так як збій одного екземпляра не призведе до зупинки всього сервісу.
- Балансування навантаження: Розподіл навантаження між декількома екземплярами сервісу для оптимізації продуктивності.
Використання команди docker compose scale
Синтаксис команди:
docker compose scale SERVICE=NUM
Де:
- SERVICE: ім'я сервісу, який потрібно масштабувати.
- NUM: кількість екземплярів, які мають бути запущені.
Приклад використання:
Припустимо, у вас є файл compose.yaml з визначенням сервісу web.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
Щоб запустити 3 екземпляри сервісу web, використайте команду:
docker compose scale web=3
Примітка: Перед виконанням команди docker compose scale впевніться, що сервіси запущені за допомогою команди docker compose up.
Використання параметра --scale у нових версіях
У нових версіях Docker Compose команда docker compose scale замінена параметром --scale, який використовується разом з командою up.
docker compose up --scale web=3
Цей підхід є більш кращим, оскільки він дозволяє одночасно запускати та масштабувати сервіси.
8.2 Практичні приклади
Приклад 1: Масштабування веб-сервера
Створіть файл compose.yaml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80-90:80"
Запустіть і масштабуйте сервіс до 3 примірників:
docker compose up --scale web=3
Тепер у вас буде 3 примірники веб-сервера Nginx, що працюють на портах з діапазону 80-90.
Важливо! Якщо сервіс передбачає масштабування на кілька примірників, потрібно вказувати діапазон портів, наприклад: "80-90:80". Це «забронює» на хостовій машині діапазон із 10 портів. При додаванні репліки сервісу їй буде призначено порт із діапазону. Якщо цього не зробити, порти будуть вибрані випадково, і репліки стануть недоступними.
Приклад 2: Масштабування з базою даних
Створіть файл compose.yaml:
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80-90:80"
depends_on:
- db
db:
image: postgres:latest
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
Запустіть і масштабуйте сервіс web до 4 примірників:
docker compose up --scale web=4
Тепер у вас буде 4 примірники веб-сервера Nginx, що працюють із однією базою даних PostgreSQL.
8.3 Управління масштабованими сервісами
Після масштабування сервісів ти можеш використовувати команди Docker Compose для управління екземплярами.
Перегляд запущених контейнерів
Використовуй команду docker compose ps для перегляду всіх запущених контейнерів:
docker compose ps
Зупинка та видалення масштабованих сервісів
Щоб зупинити і видалити всі екземпляри сервісу, використовуй команду docker compose down:
docker compose down
Поради і рекомендації:
- Балансування навантаження: використовуй балансувальники навантаження для розподілу трафіку між кількома екземплярами сервісу. Наприклад, ти можеш використовувати Nginx або HAProxy для цієї мети.
- Збереження даних: переконайся, що дані, які створюються масштабованими сервісами, зберігаються у томах або зовнішніх сховищах, щоб запобігти втраті даних при зупинці чи видаленні контейнерів.
- Моніторинг: використовуй інструменти моніторингу, такі як Prometheus чи Grafana, для відстеження продуктивності та стану масштабованих сервісів.
- Автоматичне масштабування: розглянь можливість автоматичного масштабування сервісів залежно від навантаження за допомогою оркестраторів, таких як Kubernetes або Docker Swarm.
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ