#airflow
#воздушный поток
Вопрос:
Группа баз данных airflow, которая работает на Airflow: 1.10.10, случайным образом завершается сбоем со следующей трассировкой: Airflow работает на docker swarm, и тот же ключ ssh RSA используется для большинства подключений, используемых в группе баз данных Airflow. Несколько баз данных случайно завершаются ошибкой с указанным ниже обратным отслеживанием:
Закрытый ключ SSH — это ключ RSA, сгенерированный с помощью ssh-keygen с настройками по умолчанию.
Трассировка:
[2020-11-21 18:30:38,821] {taskinstance.py:1145} ERROR - SSH operator error: encountered RSA key, expected OPENSSH key
Traceback (most recent call last):
File "/home/airflow/.local/lib/python2.7/site-packages/airflow/models/taskinstance.py", line 983, in _run_raw_task
result = task_copy.execute(context=context)
File "/home/airflow/.local/lib/python2.7/site-packages/airflow/contrib/operators/ssh_operator.py", line 177, in execute
raise AirflowException("SSH operator error: {0}".format(str(e)))
AirflowException: SSH operator error: encountered RSA key, expected OPENSSH key
[2020-11-21 18:30:38,822] {taskinstance.py:1168} INFO - Marking task as UP_FOR_RETRY
[2020-11-21 18:30:43,763] {logging_mixin.py:112} INFO - [2020-11-21 18:30:43,763] {local_task_job.py:103} INFO - Task exited with return code 1
Код DAG:
#!/usr/bin/env python2.7
from datetime import timedelta, datetime
import airflow
from airflow import DAG
from airflow.contrib.operators.ssh_operator import SSHOperator
import pendulum
local_timezone = pendulum.timezone("Asia/Calcutta")
default_args = dict(
depends_on_past=False,
start_date=datetime(2020,10,20,tzinfo=local_timezone),
retries=1,
retry_delay=timedelta(minutes=5),
)
dag = DAG(dag_id='queue_cleanup',
default_args=default_args,
schedule_interval='@daily',
dagrun_timeout=timedelta(seconds=120),
catchup=False,
tags=['maintenance'])
print(dag.timezone)
t1_bash = """
sh /home/user/default_jobs/chk_status.sh
"""
t1 = SSHOperator(
ssh_conn_id='conn_id',
task_id='ssh_default_queue_cleanup',
command=t1_bash,
dag=dag)
Идентификатор подключения дополнительный Json:
{
"key_file": "/etc/id_rsa",
"timeout": "10",
"compress": "false",
"no_host_key_check": "true",
"allow_host_key_change": "false"
}
Ответ №1:
Проблема решена. Проблема была с узлом назначения, к которому мы пытались подключиться, используя идентификатор подключения ssh. Срок действия учетной записи пользователя истек
пользователь chage -l —> показал, что срок действия учетной записи пользователя истек.
После активации учетной записи пользователя все работает нормально.