我目前正在尝试使本地隔离 HTCondor 集群的作业队列和提交机制具有高可用性。该集群由 2 台主服务器(之前为 1 台)和几个计算节点和一个中央存储系统组成。DNS、LDAP 和其他服务由主服务器提供。在所有机器上的 Ubuntu 20.04.1 上,HTCondor 版本是 8.6.8。
我按照https://htcondor.readthedocs.io/en/latest/admin-manual/high-availability.html下的说明进行操作。对于生成的配置,请参见下文。
假脱机目录 (/clients/condor/spool) 位于 NFS v3 共享上,每个服务器都可以访问 (/clients)。所有机器都有一个本地用户 (r-admin),其 uid 和 gid 为 1000,并且 spool 目录归该用户所有,因为它被配置为 Condor 用户。每个其他用户都通过 LDAP 映射到包括存储集群在内的每台服务器上。在两台主服务器上,用户“condor”具有相同的 uid 和 gid。
HADLog 会定期更新,并且不会显示任何错误。一次只有一个主节点具有主要角色。ReplicationLog 似乎也很好。
但是,有几个问题:
让我们假设 master1 当前是主要的。使用不带任何参数的 condor_q 仅适用于本机并显示正确的作业队列。在 master2 上,使用 condor_q 会导致分段错误。如果给定 SCHEDD_NAME 作为参数(“condor_q master@”),则有输出,但其中包含 master2 的 IP 且没有任何作业。作业也没有开始,它们处于空闲状态。
有没有人知道配置可能有什么问题,或者我可以在哪里找到关于这个主题的更多见解?任何帮助,将不胜感激!
编辑
当您尝试在 master2 上运行 condor_q 时,您可以在下面找到 master1 上的 SchedLog 条目:
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)
主守护进程
DAEMON_LIST = MASTER, SCHEDD, COLLECTOR, NEGOTIATOR
节点守护进程
DAEMON_LIST = MASTER, STARTD
本地配置(/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