dcad7d293a
add server OS name
103 lines
4.5 KiB
Markdown
103 lines
4.5 KiB
Markdown
# Автоматический запуск микросервисов после перезагрузки сервера
|
||
|
||
## Debuan OS server version
|
||
|
||
## Обзор системы
|
||
|
||
Данная система состоит из нескольких микросервисов, развернутых через Docker Compose. Для обеспечения автоматического запуска после перезагрузки сервера настроена интеграция с systemd.
|
||
|
||
## Конфигурация автоматического запуска
|
||
|
||
### 1. Systemd Service для Docker
|
||
|
||
В системе настроен сервис Docker для автоматического запуска при загрузке ОС:
|
||
|
||
```bash
|
||
sudo systemctl enable docker.service
|
||
```
|
||
|
||
Эта команда гарантирует, что Docker демон будет автоматически запускаться при старте системы.
|
||
|
||
### 2. Docker Compose и автоматический перезапуск
|
||
|
||
В файле `docker-compose.yml` для каждого сервиса настроена политика перезапуска:
|
||
|
||
```yaml
|
||
restart: unless-stopped
|
||
```
|
||
|
||
Эта политика означает:
|
||
- Сервисы автоматически перезапускаются при выходе из строя
|
||
- Сервисы не перезапускаются, если были остановлены вручную
|
||
- При перезагрузке системы все сервисы автоматически запускаются
|
||
|
||
## Процесс запуска после перезагрузки
|
||
|
||
### Последовательность запуска:
|
||
|
||
1. **Загрузка ОС** → systemd запускает Docker демон
|
||
2. **Docker** → автоматически восстанавливает контейнеры с политикой `unless-stopped`
|
||
3. **Health checks** → система проверяет готовность каждого сервиса
|
||
4. **Зависимости** → сервисы запускаются в правильном порядке согласно `depends_on`
|
||
|
||
### Health Checks и зависимости
|
||
|
||
Система использует health checks для контроля готовности сервисов:
|
||
|
||
- **Базы данных**: проверка доступности через `pg_isready`
|
||
- **API сервисы**: HTTP health checks на эндпоинты `/health`
|
||
- **Nginx**: проверка через `curl http://localhost/health`
|
||
- **Certbot**: проверка наличия SSL сертификатов
|
||
|
||
## Мониторинг состояния системы
|
||
|
||
После перезагрузки проверьте статус системы:
|
||
|
||
```bash
|
||
# Проверить статус всех контейнеров
|
||
docker-compose ps
|
||
|
||
# Просмотреть логи запуска
|
||
docker-compose logs
|
||
|
||
# Проверить health status
|
||
docker ps --format "table {{.Names}}\t{{.Status}}"
|
||
```
|
||
|
||
## Ручное управление сервисами
|
||
|
||
```bash
|
||
# Остановить все сервисы
|
||
docker-compose down
|
||
|
||
# Запустить все сервисы
|
||
docker-compose up -d
|
||
|
||
# Перезапустить конкретный сервис
|
||
docker-compose restart nginx
|
||
```
|
||
|
||
## Важные замечания
|
||
|
||
1. **Время запуска**: Полный запуск системы может занять 2-5 минут из-за health checks и зависимостей
|
||
2. **Порядок запуска**: Критические сервисы (БД) запускаются первыми
|
||
3. **Volume данные**: Данные сохраняются между перезагрузками благодаря Docker volumes
|
||
4. **Сетевые соединения**: Сети восстанавливаются автоматически
|
||
|
||
## Устранение неисправностей
|
||
|
||
Если сервисы не запускаются после перезагрузки:
|
||
|
||
```bash
|
||
# Проверить статус Docker
|
||
sudo systemctl status docker
|
||
|
||
# Проверить логи Docker
|
||
sudo journalctl -u docker.service
|
||
|
||
# Принудительно перезапустить композ
|
||
docker-compose down
|
||
docker-compose up -d
|
||
```
|
||
|
||
Система спроектирована для полного самовосстановления после перезагрузки сервера без необходимости ручного вмешательства. |