Высокая доступность HTCondor

В настоящее время я пытаюсь сделать очередь заданий и механизм отправки локального изолированного кластера HTCondor высокодоступным. Кластер состоит из 2 главных серверов (ранее - 1), нескольких вычислительных узлов и центральной системы хранения. DNS, LDAP и другие услуги предоставляются главными серверами. Версия HTCondor - 8.6.8 на Ubuntu 20.04.1 на всех машинах.

Я следовал инструкциям в https://htcondor.readthedocs.io/en/latest/admin-manual/high-availability.html . Полученный конфиг смотрите ниже.

Каталог спула (/ clients / condor / spool) находится в общем ресурсе NFS v3, к которому каждый сервер имеет доступ (/ clients). У всех машин есть локальный пользователь (r-admin) с uid и gid 1000, а каталог спула принадлежит этому пользователю, поскольку он настроен как пользователь Condor. Все остальные пользователи отображаются через LDAP на каждом сервере, включая кластер хранения. На обоих главных серверах пользователь condor имеет одинаковые uid и gid.

HADLog регулярно обновляется и не сообщает об ошибках. Только один мастер играет главную роль одновременно. ReplicationLog тоже кажется прекрасным.

Однако есть несколько проблем:

Предположим, что master1 в настоящее время является основным. Использование condor_q без каких-либо параметров работает только на этом компьютере и показывает правильную очередь заданий. На master2 использование condor_q приводит к ошибке сегментации. Если задано SCHEDD_NAME в качестве аргумента ("condor_q master @"), вывод есть, но с IP-адресом master2 в нем и без каких-либо заданий. Также задания не запускаются, они находятся в состоянии ожидания.

Кто-нибудь знает, что может быть не так с конфигурацией или где я могу найти больше информации по этой теме? Любая помощь будет оценена по достоинству!


Edit

Ниже вы можете найти запись SchedLog на master1 при попытке запустить condor_q на master2:

10/08/20 11:50:30 (pid:47347) Number of Active Workers 0  
10/08/20 11:50:41 (pid:47347) AUTHENTICATE: handshake failed!    
10/08/20 11:50:41 (pid:47347) DC_AUTHENTICATE: authentication of <192.168.1.22:10977>
did not result in a valid mapped user name, which is 
required for this command (519 QUERY_JOB_ADS_WITH_AUTH), so aborting. 
10/08/20 11:50:41 (pid:47347) DC_AUTHENTICATE: reason for authentication failure: 
AUTHENTICATE:1002:Failure performing handshake|AUTHENTICATE:1004:Failed to authenticate using KERBEROS|
AUTHENTICATE:1004:Failed to authenticate using FS|FS:1004:Unable to lstat(/tmp/FS_XXXGNYmKn)  

Master Daemons

DAEMON_LIST = MASTER, SCHEDD, COLLECTOR, NEGOTIATOR

Node Daemons

DAEMON_LIST = MASTER, STARTD

Local Config (/etc/condor/condor_config.local, все серверы)

COLLECTOR_NAME = HPC
CENTRAL_MANAGER_HOST = master1.condor,master2.condor
UID_DOMAIN = condor
FILESYSTEM_DOMAIN = condor

ENABLE_HISTORY_ROTATION = TRUE
MAX_HISTORY_LOG = 2000000000
MAX_HISTORY_ROTATIONS = 100

EMAIL_DOMAIN = condor

ENABLE_IPV6 = FALSE

CONDOR_IDS = 1000.1000

QUEUE_SUPER_USERS = root, r-admin

CONDOR_ADMIN = root@condor

SOFT_UID_DOMAIN = TRUE

ALLOW_READ = *, $(CONDOR_HOST), $(IP_ADDRESS), $(CENTRAL_MANAGER_HOST)
ALLOW_WRITE = *, $(CONDOR_HOST), $(IP_ADDRESS), $(CENTRAL_MANAGER_HOST)
ALLOW_ADMINISTRATOR = *, $(CONDOR_HOST), $(IP_ADDRESS), $(CENTRAL_MANAGER_HOST)

Конфигурация HA (/etc/condor/config.d/ha.conf, только главные серверы)

## HA Konfiguration

## Shared Job Queue
MASTER_HA_LIST = SCHEDD
SPOOL = /clients/condor/spool
HA_LOCK_URL = file:/clients/condor/spool
VALID_SPOOL_FILES = $(VALID_SPOOL_FILES) SCHEDD.lock
SCHEDD_NAME = master@


## Shared Negotiator and Collector
HAD_USE_SHARED_PORT = TRUE
HAD_LIST = master1.condor:$(SHARED_PORT_PORT),master2.condor:$(SHARED_PORT_PORT)

REPLICATION_USE_SHARED_PORT = TRUE
REPLICATION_LIST = master1.condor:$(SHARED_PORT_PORT),master2.condor:$(SHARED_PORT_PORT)

HAD_USE_PRIMARY = TRUE

HAD_CONTROLLEE = NEGOTIATOR
MASTER_NEGOTIATIOR_CONTROLLER = HAD

DAEMON_LIST = $(DAEMON_LIST), HAD, REPLICATION

HAD_USE_REPLICATION = TRUE

STATE_FILE = $(SPOOL)/Accountantnew.log

MASTER_HAD_BACKOFF_CONSTANT = 360
2
задан 8 October 2020 в 13:00
1 ответ

С помощью списка рассылки и некоторых экспериментов мне удалось решить проблему.

Поскольку теперь есть два мастер-сервера, им нужна не только общая файловая система для буферизации (как описано в руководстве по высокой доступности и показано выше), но и одна для аутентификации. По крайней мере, настройка FS_REMOTE в качестве механизма аутентификации является одним из способов сделать это:

SEC_DEFAULT_AUTHENTICATION_METHODS = FS, FS_REMOTE
FS_REMOTE_DIR = /clients/condor/sec

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

SchedLog: "SetEffectiveOwner security violation: setting owner to r-admin when active owner is "condor""
ShadowLog: "SetEffectiveOwner(r-admin) failed with errno=13: Permission denied."

В сообщении об ошибке говорилось что-то о пользователе condor, который вообще не должен был участвовать, так как CONDOR_IDS был установлен на 1000.1000 (r-admin) . Не было никаких файлов, процессов или чего-то еще, действительно принадлежащего или относящегося к пользователю "condor".

Оказывается, condor каким-то образом все еще ссылается на это имя пользователя внутри (см. ниже), которое кажется новым после обновления. После добавления "condor" в QUEUE_SUPER_USERS проблема была решена, и задания завершились нормально.

04/22/21 23:50:25 (fd:19) (pid:2200) (D_COMMAND) Calling HandleReq <handle_q> (0) for command 1112 (QMGMT_WRITE_CMD) from condor@child <XXX.XXX.XXX.XXX:22171>
04/22/21 23:50:25 (fd:19) (pid:2200) (D_SYSCALLS) Got request #10030
04/22/21 23:50:25 (fd:19) (pid:2200) (D_ALWAYS) SetEffectiveOwner security violation: setting owner to r-admin when active owner is "condor"
1
ответ дан 6 May 2021 в 08:21

Теги

Похожие вопросы