Nano Hash - криптовалюты, майнинг, программирование

Ansible застревает на каком-то сервере, который находится в плохом состоянии ps?

У меня есть доступная игра, как показано ниже, и в большинстве случаев она работает нормально. Но в последнее время я заметил, что он застревает на некоторых серверах из группы ВСЕ и просто сидит там. Он даже не перемещается на другие серверы в списке ВСЕ.

# This will copy files
---
- hosts: ALL
  serial: "{{ num_serial }}"
  tasks:
      - name: copy files
        shell: "(ssh -o StrictHostKeyChecking=no abc.com 'ls -1 /var/lib/jenkins/workspace/copy/stuff/*' | parallel -j20 'scp -o StrictHostKeyChecking=no abc.com:{} /data/records/')"

      - name: sleep for 5 sec
        pause: seconds=5

Итак, когда я начал отладку, я заметил, что на реальном сервере он застревает - я могу ssh (войти в систему) нормально, но когда я запускаю команду ps, она просто зависает, и я не возвращаю свой курсор, так что это означает, что ansible также получает застрял при выполнении указанной выше команды scp на этом сервере.

Итак, мой вопрос: даже если у меня есть какой-то сервер в этом состоянии, почему бы просто не отключить Ansible и не перейти на другой сервер? Есть ли что-нибудь, что мы можем сделать здесь, чтобы ansible не приостанавливал все, просто ожидая ответа от этого сервера.

Обратите внимание, что сервер запущен и работает, и я могу использовать ssh нормально, но когда мы запускаем команду ps, он просто зависает, и из-за этого Ansible также зависает.

Есть ли способ запустить эту команду ps aux | grep app на всех серверах в группе ВСЕ и составить список всех серверов, которые выполнили эту команду нормально (и если он зависает на каком-то сервере, то тайм-аут и переход к другой сервер во ВСЕМ списке), а затем передать этот список для работы с моей вышеприведенной книгой воспроизведения? Можем ли мы сделать все это в одном учебном пособии?

11.06.2019

  • Я подозреваю, что вы пытаетесь решить не ту проблему. По моему опыту, вы видите такие команды, как ps, только когда у вас серьезная ошибка на сервере. Наиболее частые проблемы, которые я видел, - это отказавший диск или жестко смонтированный общий ресурс NFS ... что также согласуется с зависанием процесса копирования файлов. В этом случае вы можете обнаружить, что ps зависает только после того, как вы столкнетесь с ошибкой диска ... чего не произойдет, пока вы не получите доступ к неисправному диску / сектору ... чего не произойдет, пока вы не попытаетесь скопировать файлы. 28.06.2019

Ответы:


1

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

Можно создать желаемую функцию в своем учебнике, что вы могли бы сделать, это иметь пустышку async, которая вызывает проблему, и проверить ее результат. Если асинхронная задача не завершилась в разумные сроки, используйте _1 _ задача перейти к следующему хосту.

Возможно, вам потребуется пометить некоторые из этих задач знаком ignore_errors: yes.

Извините, что я не могу дать вам исчерпывающий ответ, поскольку я никогда не пытался это сделать.

11.06.2019
  • да, это звучит так, что я могу попробовать, но я также не уверен, как будет выглядеть доступный playbook для этой цели. На данный момент очень новичок в анзибле. 11.06.2019
  • Я бы добавил роль только для этого и запустил ее как можно ближе к начало пьесы, насколько это возможно. 11.06.2019
  • Как вы думаете, можете ли вы привести пример этого, поскольку я в значительной степени новичок во всем этом? 11.06.2019
  • в основном я хочу запустить эту команду ps aux | grep app на всех ящиках и составить список всех серверов, на которых эта команда выполняется нормально, а затем передать этот список для работы с моей вышеприведенной доступной книгой воспроизведения. Сделайте все это в одном учебнике. это вообще возможно? 11.06.2019

  • 2

    Вы можете использовать стратегии для достижения своей цели. По умолчанию:

    В пьесах используется линейная стратегия, при которой все хосты запускают каждую задачу до того, как какой-либо хост запустит следующую задачу.

    Используя бесплатную стратегию, каждый хост будет работать до конца игры как можно быстрее. Например:

    ---
    - hosts: ALL
      strategy: free
      tasks:
          - name: copy files
            shell: "(ssh -o StrictHostKeyChecking=no abc.com 'ls -1 /var/lib/jenkins/workspace/copy/stuff/*' | parallel -j20 'scp -o StrictHostKeyChecking=no abc.com:{} /data/records/')"
    
          - name: sleep for 5 sec
            pause: seconds=5
    

    Другой вариант - использовать тайм-аут для выполнения вашей команды, а затем использовать регистрирует, успешно ли выполнена команда. Например, timeout 5 sleep 10 возвращает 124 из-за тайм-аута, а timeout 5 sleep 3 возвращает 0, потому что команда завершается до истечения тайм-аута. В доступном скрипте вы можете использовать что-то вроде:

      tasks:
         - shell: timeout 5 ps aux | grep app
           register: result
           ignore_errors: True
    
         - debug:
             msg: timeout occured
           when: result.rc == 124
    
    12.06.2019
  • Можете ли вы привести примерную основу, если это возможно? 12.06.2019
  • Спасибо. Меня больше интересует ваше второе решение. Можете ли вы сказать мне, как это будет интегрировано в мою настоящую книгу игр? Я имею в виду, что ваша задача - сказать, какая машина в порядке, а какая нет, и исходя из этого, моя настоящая задача должна работать на этой машине, верно? Как эти двое интегрируются? 12.06.2019
  • Вам необходимо добавить эти задачи и обработать результаты по своему усмотрению. Вы тот, кто знает, что нужно делать с хостами, которые терпят неудачу. 12.06.2019
  • Эту часть я понимаю, но не понимаю, как это работает на данный момент, поэтому я запутался в том, как я могу запустить свою команду оболочки только в тех полях, в которых процесс ps работает нормально. 12.06.2019
  • Вы должны запустить сценарий на всех машинах, а затем правильно обработать неисправные. 13.06.2019
  • Сегодня я снова обнаружил неисправную машину в том же состоянии, и она все еще зависала, даже если у вас есть команда тайм-аута. Вы уверены, что это должно сработать? Стоит добавить, что он застрял на TASK [Gathering Facts], прежде чем смог запустить любую из моих задач в playbook, и даже не продвигался вперед. 24.07.2019

  • 3

    Как сказал "Алассан Ндиай", вы можете попробовать следующий фрагмент кода. Где я даю условие, когда оболочка не тайм-аут

    tasks:
         - shell: timeout 5 ps aux | grep app
           register: result
           ignore_errors: True
    
         - name: Run your shell command
           shell:  "(ssh -o StrictHostKeyChecking=no abc.com 'ls -1 /var/lib/jenkins/workspace/copy/stuff/*' | parallel -j20 'scp -o StrictHostKeyChecking=no abc.com:{} /data/records/')"
           when: result.rc != 124 && result.rc != 0
    
    26.06.2019
  • Сегодня я снова обнаружил неисправную машину в том же состоянии, и она все еще зависала, даже если у вас есть команда тайм-аута. Вы уверены, что это должно сработать? Стоит добавить, что он застрял на TASK [Gathering Facts], прежде чем смог запустить любую из моих задач в playbook, и даже не продвигался вперед. 24.07.2019
  • Новые материалы

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

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..