Slurm кластер – Блок соединения во время сбора фактов

Вопрос или проблема

Во время фазы Сбор фактов соединение блокируется на неопределенный срок (это также происходит, например, когда я пытаюсь запустить сервисы на узлах). У меня настроено 4 узла одинаковым образом, и к ним всем можно получить доступ через ping, но один из них вызывает блокировку соединения.

Инвентарь (inventory/dev)

[master]
headnode ansible_host=xxx.xx.xx.xxx

[workers]
node001 ansible_host=node001
node002 ansible_host=node002
node003 ansible_host=node003
node004 ansible_host=node004 

[all:vars]
ansible_user=root

[workers:vars]
ansible_ssh_common_args="-o [email protected]"

Ping (node00[1-4])

node00X | УСПЕШНО => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}
headnode | УСПЕШНО => {
    "ansible_facts": {
        "discovered_interpreter_python": "/usr/libexec/platform-python"
    },
    "changed": false,
    "ping": "pong"
}

Задача

- name: Статус Рабочих
  hosts: workers
  gather_facts: true
  tasks:
     - name: hostname
       command: hostname
       register: hostname
     - name: hostname workers 
       debug: msg="{{ hostname }}"

Проблема:
ansible-playbook -i inventory/dev playbooks/test.yml

TASK [Сбор фактов] ***************************************************************************************************************************************************************************************
ok: [node002]
ok: [node003]
ok: [node001]

Узлы 001 до 003 корректно возвращают ответ, но узел 004 застревает на неопределенный срок на следующей строке:

<node004> УСТАНАВЛИВАЕТ SSH СОЕДИНЕНИЕ ДЛЯ ПОЛЬЗОВАТЕЛЯ: root
<node004> SSH: EXEC ssh -C -o ControlMaster=auto -o ControlPersist=60s -o KbdInteractiveAuthentication=no -o PreferredAuthentications=gssapi-with-mic,gssapi-keyex,hostbased,publickey -o PasswordAuthentication=no -o 'User="root"' -o ConnectTimeout=10 -o [email protected] -o 'ControlPath="/home/user/.ansible/cp/ba0c33ed59"' -tt node004 '/bin/sh -c '"'"'/usr/libexec/platform-python /root/.ansible/tmp/ansible-tmp-1731335666.477472-3501-262350450854534/AnsiballZ_setup.py && sleep 0'"'"''
--> застрял на неопределенный срок <--

Я не могу найти причину, почему только узел 004 застревает в выполнении, так как все узлы настроены одинаково и ping работает для всех из них.

Ответ или решение

Ситуация, которую вы описываете, связана с проблемами подключения к одному из узлов вашего кластера, что вызывает блокировку выполнения Ansible во время фазы сбора фактов. Вы привели исчерпывающие данные о конфигурации и поведении системы, что позволяет проанализировать проблему более детально.

Основание проблемы

Как вы указали, узел node004 не отвечает, в то время как другие узлы успешно проходят этап сбора фактов. Это может указывать на несколько потенциальных проблем, связанных с конфигурацией узла, сетевыми настройками или SSH-соединением.

Возможные причины и решения

  1. Проблемы с SSH-клиентом:

    • Убедитесь, что SSH-сервер на node004 запущен, и проверьте его состояние командой:
      systemctl status sshd
    • Проверьте наличие блокировок в конфигурации SSH, таких как AllowUsers, в файле /etc/ssh/sshd_config.
  2. Проблемы с сетью:

    • Проверьте, доступен ли узел node004 для подключения. Используйте команду:
      ssh root@node004
    • Проверьте, нет ли правил брандмауэра, блокирующих соединение SSH, с помощью:
      firewall-cmd --list-all
    • Убедитесь, что node004 не находится в состоянии перегрузки сети. Для этого можно использовать команду top или htop.
  3. Конфигурация Ansible:

    • Освободите параметр ansible_ssh_common_args, изменив его в инвентаризации. Попробуйте убрать или изменить параметры, чтобы упростить команду SSH, например, отключить ControlMaster.
    • Вы можете также установить таймаут подключения:
      [all:vars]
      ansible_ssh_common_args="-o ConnectTimeout=30"
  4. Проверка логов:

    • Загляните в логи SSH на node004 по адресу /var/log/auth.log или /var/log/secure, чтобы найти возможные сообщения об ошибках, которые могут указать на причину проблемы.
  5. Проблемы с Python или зависимостями:

    • Убедитесь, что Python доступен и корректно установлен на node004. Запустите:
      /usr/libexec/platform-python --version
    • Проверьте, что необходимые модули для выполнения AnsiballZ_setup.py отсутствуют.
  6. Ограничения на стороне сервера:

    • Иногда политика безопасности на сервере может ограничивать выполнение определенных команд от имени root. Убедитесь, что конфигурация SELinux или AppArmor не мешает выполнению Ansible.

Заключение

После проверки и устранения вышеперечисленных проблем, попробуйте снова выполнить вашу Ansible команду. Если node004 по-прежнему вызывает блокировку, рассмотрите возможность замены его на другой узел как временное решение, чтобы исключить возможные аппаратные сбои.

Если все предыдущие шаги не оправдали надежд, также рассмотрите возможность временного отключения node004 от кластера для достижения стабильного выполнения Ansible на других узлах.

Настоятельно рекомендуется документировать все изменения и тесты, чтобы упростить процесс диагностики и устранения неполадок в будущем.

Если у вас есть дальнейшие вопросы или требуется помощь, не стесняйтесь обращаться за поддержкой.

Оцените материал
Добавить комментарий

Капча загружается...