為 SLURM 設定 MySQL

為 SLURM 設定 MySQL

我在讓 SLURM(用於作業排程)與 MySQL 資料庫一起使用時遇到問題。我正在使用作為參考,但也許我誤解了其中的某些內容。如果有人能讓我知道我錯過了什麼,那就太好了...

這是 Ubuntu 22.10 上的 SLURM 21.08。我正在使用 MySQL 8.0.32 。

我之前配置過 SLURM,將完成和記帳儲存在文件中。看起來效果很好;控制器已啟動,我可以正常運行一兩項工作。

然後,我切換到MySQL。我/etc/slurm/slurm.conf更新了這些值:

 Job Completion Logging | MySQL
      JobCompLoc | slurm_complete_db
      JobCompHost | localhost
      JobCompPort | <blank>
      JobCompUser | slurm
      JobCompPass | ...some password...
 Job Accounting Storage | SlurmDBD
      AccountingStorageLoc | slurm_acct_db
      AccountingStorageHost | localhost
      AccountingStoragePort | <blank>
      AccountingStorageUser | slurm
      AccountingStoragePass | ...
      AccountingStoreFlags | job_script,job_env

並在/etc/slurm/slurmdbd.conf

 AuthType=auth/munge
 DbdHost=xps8930
 DebugLevel=info
 StorageHost=xps8930
 StorageLoc=slurm_acct_db
 StoragePass=...
 StorageType=accounting_storage/mysql
 StorageUser=slurm
 LogFile=/var/log/slurm/slurmdbd.log
 PidFile=/run/slurmdbd.pid
 SlurmUser=slurm

我創建了兩個MySQL資料庫,一個名為「slurm」的用戶,並授予權限如下:

CREATE DATABASE slurm_complete_db DEFAULT CHARACTER SET utf8 COLLATE
utf8_unicode_ci ;
CREATE DATABASE slurm_acct_db DEFAULT CHARACTER SET utf8 COLLATE
utf8_unicode_ci ;
CREATE USER 'slurm'@'%' IDENTIFIED WITH caching_sha2_password BY '' ;
GRANT ALL ON slurm_complete_db.* TO 'slurm'@'%';
GRANT ALL ON slurm_acct_db.* TO 'slurm'@'%';

我使用“showengines”命令確認InnoDB支援已啟用。

由於資料庫是空的,我相信我的下一步應該是配置資料庫。在 中slurm.conf,我將我的 ClusterName 稱為「個人」。所以,我這樣做了:

$ sacctmgr add cluster personal
sacctmgr: error: slurm_persist_conn_open_without_init: failed to open
persistent connection to host:localhost:6819: Connection refused
sacctmgr: error: Sending PersistInit msg: Connection refused

slurm並且slurmdbd正在運行(SLURM 和 MySQL 在同一台電腦上):

$ ps -aef | grep slurm
root        1407       1  0 09:42 ?        00:00:08 /usr/sbin/slurmd -D -s
root        1857       1  0 09:43 ?        00:00:03 /usr/sbin/slurmdbd -D -s

在 中/var/log/slurm/slurmdbd.log,我看到了這個:

[2023-01-26T18:06:02.541] error: mysql_real_connect failed: 2003 Can't
connect to MySQL server on 'xps8930:3306' (111)
[2023-01-26T18:06:02.541] error: The database must be up when starting
the MYSQL plugin.  Trying again in 5 seconds.

在 中/var/log/slurm/slurmctld.log,我有這個:

[2023-01-26T09:42:33.264] error: Configured MailProg is invalid
[2023-01-26T09:42:33.350] slurmctld version 21.08.5 started on cluster personal
[2023-01-26T09:42:36.121] error: slurm_persist_conn_open_without_init: failed to open persistent connection to host:localhost:6819:
Connection refused
[2023-01-26T09:42:36.121] error: Sending PersistInit msg: Connection refused
[2023-01-26T09:42:36.153] accounting_storage/slurmdbd:  clusteracct_storage_p_register_ctld: Registering slurmctld at port 6817 with slurmdbd
[2023-01-26T09:42:36.153] error: Sending PersistInit msg: Connection refused
[2023-01-26T09:42:36.154] error: Sending PersistInit msg: Connection refused
[2023-01-26T09:42:37.456] No memory enforcing mechanism configured.
[2023-01-26T09:42:39.924] error: mysql_real_connect failed: 2002 Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
[2023-01-26T09:42:39.924] fatal: You haven't inited this storage yet.

我不確定下一步該做什麼或缺少哪些步驟。我想在slurmdbd和之間slurmctld,我應該先關注slurmdbd?一旦它開始工作,那麼要么slurmctld應該出現,並且/或者我可以嘗試讓它工作。

抱歉貼文太長了!任何意見,將不勝感激!

PS:命令munge -n | unmunge成功。

答案1

在把這個問題擱置了好幾個月之後,我終於決定我需要讓它發揮作用。希望這些資訊能夠幫助其他試圖解決這個問題的人。

hostname返回xps8930,這就是我在進行基於文件的會計時使用的。我所要做的就是設定這些值(設定檔中的其他值與問題無關)。

/etc/slurm/slurm.conf

ClusterName=personal
SlurmctldPidFile=/run/slurm/slurmctld.pid
SlurmdPidFile=/run/slurm/slurmd.pid
AccountingStorageHost=localhost
AccountingStoragePass=/var/run/munge/munge.socket.2
AccountingStorageType=accounting_storage/slurmdbd
AccountingStorageUser=slurm
AccountingStoreFlags=job_script,job_env
JobCompHost=localhost
JobCompPass=<some MySQL password>
JobCompType=jobcomp/mysql
JobCompUser=slurm
##  Database defaults to slurm_jobcomp_db
#JobCompLoc=slurm_complete_db

/etc/slurm/slurmdbd.conf

AuthInfo=/var/run/munge/munge.socket.2
AuthType=auth/munge
DbdHost=localhost
DebugLevel=info
LogFile=/var/log/slurm/slurmdbd.log
PidFile=/run/slurm/slurmdbd.pid
SlurmUser=slurm
StorageHost=localhost
StoragePass=<same MySQL password as above, since it's the same user>
StorageType=accounting_storage/mysql
StorageUser=slurm
StorageLoc=slurm_acct_db

AccountingStoragePassAuthInfo第一個文件中的值與第二個文件中的值相同。我想它們可以留空,以便可以使用預設值。一個10歲的孩子發文猜測這可能是個錯誤。但目前的文件因為AuthInfo說這很好。

啟動後slurmdbdsudo service slurmdbd start),sacctmgr可以運行:

$ sudo sacctmgr add cluster personal
 Adding Cluster(s)
  Name           = personal
Would you like to commit changes? (You have 30 seconds to decide)
(N/y): y
$ sacctmgr list cluster
   Cluster     ControlHost  ControlPort   RPC     Share GrpJobs       GrpTRES GrpSubmit MaxJobs       MaxTRES MaxSubmit     MaxWall                  QOS   Def QOS 
---------- --------------- ------------ ----- --------- ------- ------------- --------- ------- ------------- --------- ----------- -------------------- --------- 
  personal                            0     0         1                                                                                           normal

一旦啟動正常,我就啟動了slurmctldslurmd服務。而且,到目前為止一切看起來都很好。

連接埠等保留為預設值。也許可以省略幾個值,因為預設值似乎很好。

簡而言之,與我之前的情況相比,發生了什麼變化:

  • 使用localhostslurmdbd.conf
  • 並且不輸入密碼AccountingStoragePass。由於它有“Pass”,我認為我必須在那裡輸入密碼。

希望這對其他人有用!

相關內容