SLURM(ジョブスケジューリング用)をMySQLデータベースで動作させるのに問題があります。これ参考までに書きましたが、おそらく私は何かを誤解しているかもしれません。私が見逃した点を誰かに教えていただければ幸いです...
これは Ubuntu 22.10 上の SLURM 21.08 です。MySQL 8.0.32 を使用しています。
以前、完了とアカウンティングがファイルに保存されるように SLURM を設定していました。そして、それは正常に動作しているようでした。コントローラーは起動し、1 つまたは 2 つのジョブを正常に実行しました。
その後、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
2 つの 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'@'%';
「show engines」コマンドを使用して、InnoDB サポートが有効になっていることを確認しました。
データベースは空なので、次のステップはデータベースを構成することだと考えます。 ではslurm.conf
、ClusterName を「personal」と名付けました。そこで、次の操作を実行しました。
$ 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
AccountingStoragePass
最初のファイルの値はAuthInfo
2番目のファイルと同じ値です。デフォルトを使用できるように空白のままにしておくこともできると思います。10歳の投稿これはバグかもしれないと推測しました。しかし、現在のドキュメンテーションそれは大丈夫だとAuthInfo
言っています。
slurmdbd
( sudo 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
正常に起動したら、slurmctld
およびslurmd
サービスを起動しました。そして、これまでのところすべて正常に見えます。
ポートなどはデフォルトのままです。また、デフォルトで問題ないと思われるため、いくつかの値は省略できたかもしれません。
簡単に言うと、以前と比べて何が変わったかということです。
- 使用
localhost
中slurmdbd.conf
- そして、パスワードを入力していません
AccountingStoragePass
。「Pass」とあるので、そこにパスワードを入力する必要があると思いました。
これが他の方にも役立つことを願っています!