# Проблемы кластера и балансировщика

# Задания не распечатываются в отказоустойчивой конфигурации

## Симптом

В конфигурации с балансировщиком HAProxy пользователи авторизуются, но задания не выходят на печать.

## Диагностика

### Шаг 1. Проверить панель HAProxy

Откройте панель администратора HAProxy. Проверьте, что все секции зелёные:

- `ftp`
- `cups_1631`
- `tcp_converter_7776` / `tcp_converter_7777`
- `admin_8010` / `admin_8080`

Красная строка сервера = сервер установлен некорректно или недоступен.

### Шаг 2. Проверить флаг use_cups_ssl в клиенте ПМ

Ошибка `http.client.RemoteDisconnected: Remote end closed connection without response` означает неверный флаг SSL.

1. Перейдите в директорию клиента ПМ: `C:\Program Files\printum\printmanager_client\`
2. Откройте файл `settings.yml` с правами администратора.
3. Установите: `use_cups_ssl: true`

### Шаг 3. Проверить NFS-хранилище

Убедитесь, что NFS-хранилище доступно. Недоступность NFS приводит к потере файлов заданий.

### Шаг 4. Проверить синхронизацию ПринтМенеджер с Мониторингом

Запустите ручную синхронизацию в личном кабинете: **Настройки → Интеграции → ПМ**.

## Связанные страницы

- [Файл недоступен при отложенной печати в кластере](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/fail-nedostupen-pri-otlozennoi-pecati-v-klastere)
- [Обновление в отказоустойчивой конфигурации](http://wiki.printum.io/books/6-obnovlenie-i-obsluzivanie/page/obnovlenie-v-otkazoustoicivoi-konfiguracii)

# Файл недоступен при отложенной печати в кластере

## Симптом

Пользователь авторизовался на МФУ, но задание недоступно или файл документа отсутствует в очереди.

## Причина

Файлы заданий в кластерной конфигурации хранятся на NFS-хранилище. Если NFS недоступен или неправильно смонтирован на одном из серверов ПринтМенеджер — файлы заданий не видны этому серверу.

## Диагностика

### Шаг 1. Проверить монтирование NFS

```
# На каждом сервере ПМ:
df -h | grep nfs
mount | grep nfs
```

### Шаг 2. Проверить права доступа к папке NFS

```
ls -la /scratch
# Ожидаемые права: 777, владелец nobody
```

### Шаг 3. Проверить сетевую доступность NFS-сервера

```
ping <NFS_ADDR>
# Проверка экспортов NFS:
showmount -e <NFS_ADDR>
```

### Шаг 4. Перемонтировать NFS при необходимости

```
sudo umount /scratch
sudo mount <NFS_ADDR>:<NFS_FOLDER_PATH> /scratch
```

## Связанные страницы

- [Задания не распечатываются в отказоустойчивой конфигурации](http://wiki.printum.io/books/7-ustranenie-neispravnostei/page/zadaniia-ne-raspecatyvaiutsia-v-otkazoustoicivoi-konfiguracii)

# Как диагностировать проблемы NFS и DNS

<!---
title: Как диагностировать проблемы DNS и NFS
slug: kak-diagnostirovat-problemy-dns-i-nfs
tags: [DNS, NFS, инфраструктура, restart-loop, troubleshooting]
domain: Troubleshooting
type: Runbook
audience: partner-engineer
product_versions: "4.x"
status: ready
related_components: [ПринтМенеджер, Мониторинг, NFS, Active-Active]
related_pages:
  - arhitekturnaya-skhema-i-setevye-porty
  - kak-rabotaet-otkazoustoicivyi-printmanager
  - oshibki-sredy
--->

### Назначение

DNS и NFS являются критически важными инфраструктурными зависимостями системы Printum.

Проблемы с DNS или NFS могут вызывать:

- restart loop контейнеров;
- недоступность ПринтМенеджера;
- ошибки синхронизации;
- недоступность очередей печати;
- проблемы работы встроенных приложений;
- ошибки авторизации пользователей;
- недоступность архива заданий.

---

### Типовые признаки проблем DNS

| Симптом | Возможная причина |
|---|---|
| Контейнеры постоянно перезапускаются | hostname не резолвится, nfs-сервер недоступен |
| Ошибки timeout | DNS-сервер недоступен |
| Ошибки синхронизации | неверное DNS-имя |
| SSL/TLS errors | hostname не соответствует сертификату |
| ПринтМенеджер недоступен | отсутствует DNS-resolve между узлами, nfs-сервер недоступен  |

---

## Диагностика DNS

### Проверка resolv.conf

Проверить содержимое файла:

```bash
cat /etc/resolv.conf
```

Необходимо убедиться:

- DNS-серверы указаны корректно;
- DNS-серверы доступны;
- отсутствуют ошибочные записи;
- указан корректный search domain (если используется).

---

### Проверка разрешения hostname

Проверить разрешение hostname:

```bash
ping monitoring.local
```

Дополнительно рекомендуется выполнить:

```bash
nslookup monitoring.local
```

Проверить:

- hostname успешно резолвится;
- IP-адрес соответствует ожидаемому;
- отсутствуют timeout;
- ответ приходит от корректного DNS-сервера.

---

### Проверка сетевой связности

Проверить доступность серверов:

```bash
ping printmanager.local
```

При использовании отказоустойчивой конфигурации необходимо проверить связность между:

- Мониторингом;
- всеми узлами ПринтМенеджера;
- NFS-сервером;
- балансировщиком;
- PostgreSQL;
- Redis/Sentinel.

---

## Диагностика NFS

### Проверка доступности NFS-портов

Проверить доступность NFS:

```bash
telnet nfs-server.local 2049
```

Если используется stunnel:

```bash
telnet nfs-server.local 20490
```

Ожидаемый результат:

- TCP-соединение успешно устанавливается;
- отсутствуют timeout;
- отсутствует ошибка `Connection refused`.

---

### Проверка mounted volumes

#### Проверка NFS volume в Docker

Проверить список Docker volumes:

```bash
docker volume ls
```

Найти volume, который используется ПринтМенеджером (printmanager-app).

Проверить параметры volume:

```bash
docker volume inspect <volume_name>
```

Проверить:

- volume существует;
- указан корректный NFS server;
- указан корректный путь NFS export;
- параметры подключения соответствуют конфигурации.

---

#### Проверка mount внутри контейнера

Зайти в контейнер ПринтМенеджера:

```bash
docker exec -it printmanager-app sh
```

Проверить подключённые файловые системы внутри контейнера:

```bash
df -h
```

Дополнительно проверить доступность каталога:

```bash
ls -la <mount_path>
```

Проверить:

- каталог доступен из контейнера;
- отсутствуют ошибки `Stale file handle`;
- файловая система не находится в режиме `read-only`;
- файлы создаются и читаются корректно.
---

### Проверка сервисов NFS

На NFS-сервере проверить состояние сервисов:

```bash
systemctl status nfs-server.service
```

Если используется stunnel:

```bash
systemctl status stunnel.service
```

Проверить:

- сервисы находятся в состоянии `active (running)`;
- отсутствуют restart loop;
- отсутствуют ошибки systemd.

---

### Перезапуск сервисов NFS

При необходимости выполнить перезапуск:

```bash
systemctl restart nfs-server.service
```

Если используется stunnel:

```bash
systemctl restart stunnel.service
```

После перезапуска рекомендуется повторно проверить:

- доступность портов;
- состояние mount;
- доступность каталогов;
- состояние контейнеров Printum.

---

### Что делать при restart loop контейнеров

Если контейнеры Printum постоянно перезапускаются, необходимо последовательно проверить:

- DNS;
- NFS;
- сетевую связность;
- mounted volumes;
- доступность PostgreSQL;
- доступность Redis;
- корректность hostname;
- срок действия SSL-сертификатов.

После устранения проблемы выполнить перезапуск контейнеров:

```bash
cd /opt/printmanager
docker-compose down && docker-compose up -d
```

---

### Дополнительная диагностика Docker

Проверить состояние контейнеров:

```bash
docker ps -a
```

Просмотреть логи контейнера:

```bash
cd /opt/printmanager/
docker-compose logs -f --tail=5
```

---

### Важно помнить

- DNS является одной из самых частых причин инфраструктурных отказов.
- NFS критически важен для работы отказоустойчивой конфигурации ПринтМенеджера.
- Большинство restart loop связано с инфраструктурными зависимостями.
- Проверка DNS и NFS должна быть первым этапом диагностики.
- В Active-Active конфигурации стабильная работа DNS и NFS обязательна для всех узлов кластера.

### Связанные страницы
* [Установка NFS-хранилища](https://wiki.printum.io/books/3-ustanovka/page/ustanovka-nfs-xranilishha)
* [Проверка корректности установки кластера](https://wiki.printum.io/books/3-ustanovka/page/proverka-korrektnosti-ustanovki-klastera)