OpenHPC Kurulum Dokümani¶
Genel Hazirlik (Tüm Sunucularda Yapilacak)¶
1. Temiz openSUSE Leap 15.6 Kurulumu¶
Kurulum sirasinda dikkat edilecekler:
- System Role: Server seçilmeli (Desktop environment gereksiz)
- Partitioning: LVM + ext4, swap 2GB yeterli
- Network: Kurulumda DHCP, sonra statik IP atanacak
2. Temel Paket Kurulumu¶
zypper refresh && zypper update
zypper install vim curl wget git net-tools
systemctl enable sshd --now
3. Hostname Ayarlama¶
Her sunucuda ilgili hostname atanir:
4. Hosts Dosyasi (Tüm Sunucularda Ayni)¶
/etc/hosts dosyasina asagidaki satirlar eklenir:
5. IP Adresi Sabitleme¶
openSUSE üzerinde /etc/sysconfig/network/ifcfg-INTERFACE_ADI dosyasi düzenlenir:
Gateway icin /etc/sysconfig/network/routes dosyasina:
Degisiklikleri uygulamak icin:
6. AppArmor Kapatma¶
openSUSE'de SELinux yerine AppArmor bulunur. Lab ortami icin kapatilir:
7. Firewall Kapatma¶
Master Node Üzerinde Yapilan Islemler¶
1. OpenHPC Reposu Ekleme¶
Resmi OpenHPC reposu eklenir. Asagidaki linklerden uyumlu olan kullanilir:
# v3.0 icin:
zypper install -y https://github.com/openhpc/ohpc/releases/download/v3.0.GA/ohpc-release-3-1.leap15.x86_64.rpm
# Eger yukaridaki link calismiyorsa repos.openhpc.community üzerinden:
zypper install -y http://repos.openhpc.community/OpenHPC/3/Leap_15/x86_64/ohpc-release-3-1.leap15.x86_64.rpm
Not: GPG key hatasi alinirsa
--no-gpg-checksparametresi kullanilabilir. Tavuk-yumurta problemi: key'i getiren RPM'in kendisini kurmak icin key gerekir.
2. OpenHPC Base Kurulumu¶
3. Slurm Server Kurulumu¶
Bu komut slurmctld ve munge dahil tüm bagimliliklari kuracaktir:
Kurulan servisler:
- slurmctld: Slurm controller daemon — is kuyruklarini ve node'lari yönetir
- munge: Node'lar arasi authentication saglayan daemon
4. Slurm Client Araclari Kurulumu¶
Master üzerinde de sinfo, squeue gibi komutlarin calisabilmesi icin:
5. Munge Key Olusturma¶
Munge kurulumu sirasinda otomatik olarak key olusur. Dogrulamak icin:
Eger key yoksa manuel olusturulur:
Not: openSUSE'de
create-munge-keykomutu bulunmaz,mungekeykullanilir.
Key'in dogru calistigini dogrulamak icin:
Ciktida STATUS: Success (0) görmek gerekir.
Önemli: Bu key compute node'lara da birebir kopyalanacaktir. Farkli key kullanilirsa node'lar birbiriyle iletisim kuramaz.
6. Spool ve Log Dizinlerinin Hazirlanmasi¶
mkdir -p /var/spool/slurmctld
chown slurm:slurm /var/spool/slurmctld
touch /var/log/slurm/slurmctld.log
chown slurm:slurm /var/log/slurm/slurmctld.log
7. slurmctld Servisinin Root ile Calistirilmasi¶
slurmscriptd alt süreci root yetkisi gerektirdigi icin systemd override olusturulur:
/etc/systemd/system/slurmctld.service.d/override.conf dosyasi olusturulur:
8. slurm.conf Düzenleme¶
/etc/slurm/slurm.conf dosyasi cluster'a göre düzenlenir:
# Cluster Identity
ClusterName=mycluster
SlurmctldHost=master
# Authentication
AuthType=auth/munge
# Logging
SlurmctldLogFile=/var/log/slurm/slurmctld.log
SlurmdLogFile=/var/log/slurm/slurmd.log
# Process IDs
SlurmctldPidFile=/var/run/slurmctld.pid
SlurmdPidFile=/var/run/slurmd.pid
# Scheduling
SchedulerType=sched/backfill
SelectType=select/cons_tres
SelectTypeParameters=CR_Core
# State saving
StateSaveLocation=/var/spool/slurmctld
# Node Definitions
NodeName=node01 NodeAddr=192.168.122.11 CPUs=3 RealMemory=3800 State=UNKNOWN
NodeName=node02 NodeAddr=192.168.122.12 CPUs=3 RealMemory=3800 State=UNKNOWN
# Partition Definition
PartitionName=normal Nodes=node01,node02 Default=YES MaxTime=INFINITE State=UP
9. slurmctld Baslatma¶
Dogrulama:
Beklenen cikti:
Node'larin unk (unknown) göstermesi normaldir — compute node'lar henüz kurulmamistir.
Compute Node'lar Üzerinde Yapilacak Islemler¶
Asagidaki islemler her compute node icin tekrarlanir (node01, node02).
1. OpenHPC Reposu Ekleme¶
Master'daki repo dosyasi kopyalanabilir veya RPM dogrudan kurulabilir:
Yöntem A — Master'dan repo dosyasi kopyalama (master'da calistirilir):
Not: Bu yöntemde GPG key kopyalanmadigi icin
--no-gpg-checkskullanmak gerekecektir.
Yöntem B — RPM'i dogrudan kurma (compute node'da calistirilir):
zypper --no-gpg-checks install -y http://repos.openhpc.community/OpenHPC/3/Leap_15/x86_64/ohpc-release-3-1.leap15.x86_64.rpm
2. Paket Kurulumu¶
3. Munge Key Kopyalama (Master'da calistirilir)¶
scp /etc/munge/munge.key root@192.168.122.11:/etc/munge/munge.key
scp /etc/munge/munge.key root@192.168.122.12:/etc/munge/munge.key
Ön kosul: Compute node'lara SSH key ile baglanmak icin master'da key olusturulup kopyalanmis olmali:
4. Munge Yapilandirma ve Dogrulama (Compute node'da calistirilir)¶
chown munge:munge /etc/munge/munge.key
chmod 400 /etc/munge/munge.key
systemctl enable munge --now
munge -n | unmunge
Ciktida STATUS: Success (0) görmek gerekir.
5. slurm.conf Kopyalama (Master'da calistirilir)¶
scp /etc/slurm/slurm.conf root@192.168.122.11:/etc/slurm/slurm.conf
scp /etc/slurm/slurm.conf root@192.168.122.12:/etc/slurm/slurm.conf
Önemli: Tüm node'lardaki slurm.conf birebir ayni olmalidir.
6. slurmd Baslatma (Compute node'da calistirilir)¶
mkdir -p /var/log/slurm
touch /var/log/slurm/slurmd.log
chown slurm:slurm /var/log/slurm/slurmd.log
mkdir -p /var/spool/slurmd
chown slurm:slurm /var/spool/slurmd
systemctl enable slurmd --now
systemctl status slurmd
active (running) ve slurmd started mesajlari görülmelidir.
Dogrulama¶
Tüm node'lar kurulduktan sonra master üzerinde:
Beklenen cikti:
Node'larin idle durumunda olmasi cluster'in hazir oldugunu gösterir.
Compiler ve MPI Kurulumu¶
1. Paket Kurulumu (Tüm Sunucularda)¶
Master'da:
Node'larda (master üzerinden):
ssh node01 "zypper --no-gpg-checks install -y gnu14-compilers-ohpc openmpi5-gnu14-ohpc"
ssh node02 "zypper --no-gpg-checks install -y gnu14-compilers-ohpc openmpi5-gnu14-ohpc"
2. Modül Sistemi¶
OpenHPC hiyerarsik modül sistemi (Lmod) kullanir. Önce compiler yüklenir, sonra ona bagli MPI modülleri görünür:
module load gnu14 # GCC 14 compiler'i aktif eder
module avail # Simdi openmpi5 ve mpich görünür
module load openmpi5 # Open MPI 5 aktif eder
Yüklü modülleri görmek icin:
3. NFS Paylasim Dizini¶
MPI programlarinin tüm node'lardan erisilebilir olmasi icin NFS gereklidir.
Master'da:
zypper install -y nfs-kernel-server
mkdir -p /shared
echo "/shared 192.168.122.0/24(rw,sync,no_root_squash)" >> /etc/exports
systemctl enable nfs-server --now
exportfs -a
Node'larda:
zypper install -y nfs-client
mkdir -p /shared
mount master:/shared /shared
echo 'master:/shared /shared nfs defaults 0 0' >> /etc/fstab
Dogrulama (master'da):
4. MPI Testi¶
Master'da basit bir MPI programi olusturulur:
module load gnu14
module load openmpi5
cat > /shared/hello_mpi.c << 'EOF'
#include <mpi.h>
#include <stdio.h>
#include <unistd.h>
int main(int argc, char** argv) {
MPI_Init(&argc, &argv);
int rank, size;
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Comm_size(MPI_COMM_WORLD, &size);
char hostname[256];
gethostname(hostname, 256);
printf("Merhaba! Ben rank %d/%d, hostname: %s\n", rank, size, hostname);
MPI_Finalize();
return 0;
}
EOF
mpicc /shared/hello_mpi.c -o /shared/hello_mpi
Slurm üzerinden sbatch ile calistirilir:
cat > /shared/test_mpi.sh << 'EOF'
#!/bin/bash
#SBATCH --job-name=mpi_test
#SBATCH --output=/shared/mpi_test_%j.out
#SBATCH --nodes=2
#SBATCH --ntasks=6
module load gnu14
module load openmpi5
export OMPI_MCA_pml=ob1
srun --mpi=pmix /shared/hello_mpi
EOF
sbatch /shared/test_mpi.sh
Birkaç saniye sonra ciktiyi kontrol et:
Beklenen cikti:
Merhaba! Ben rank 0/6, hostname: node01
Merhaba! Ben rank 3/6, hostname: node02
Merhaba! Ben rank 1/6, hostname: node01
Merhaba! Ben rank 4/6, hostname: node02
Merhaba! Ben rank 2/6, hostname: node01
Merhaba! Ben rank 5/6, hostname: node02
6 MPI process'in 2 node'a dagitildigi ve her birinin farkli rank numarasiyla calistigi görülmelidir.
Not:
srunile dogrudan calistirirken--mpi=pmixparametresi ve sbatch scriptindemodule loadkomutlari gereklidir. Aksi halde node'larda MPI kütüphaneleri bulunamaz veya rank'ler birbirinden habersiz calisir.
Lab Ortami Bilgileri¶
| VM | IP | RAM | Disk | vCPU | Rol |
|---|---|---|---|---|---|
| master | 192.168.122.10 | 6GB | 50GB | 2 | slurmctld, munge, NFS |
| node01 | 192.168.122.11 | 4GB | 30GB | 3 | slurmd — compute node |
| node02 | 192.168.122.12 | 4GB | 30GB | 3 | slurmd — compute node |
- Host OS: Ubuntu 24.04 LTS Desktop
- VM OS: openSUSE Leap 15.6
- Virtualization: KVM + libvirt + virt-manager
- Network: virbr1 (NAT), gateway 192.168.122.1
- Disk format: qcow2 thin provisioned, ext4
Karsilasilan Sorunlar ve Cözümleri¶
slurmctld "Failed to set GID to 0" hatasi¶
Sebep: Systemd servis dosyasi User=slurm ile calistiriyor ama slurmscriptd root gerektiriyor.
Cözüm: Systemd override ile User=root ayarlamak (bkz. Master Node adim 7).
slurmctld log dosyasi bulunamadi¶
Sebep: /var/log/slurm/ dizini var ama log dosyasi olusturulmamis.
Cözüm:
GPG key hatasi (ohpc-release kurulumunda)¶
Sebep: ohpc-release RPM'i GPG key'i iceriyor ama zypper RPM'i kurmadan önce imzasini dogrulamaya calisiyor.
Cözüm: --no-gpg-checks parametresi kullanilir. RPM kurulduktan sonra key sisteme import edilir.
"create-munge-key: command not found"¶
Sebep: create-munge-key RHEL/CentOS'a özgü bir yardimci script, openSUSE'de bulunmaz.
Cözüm: mungekey --create kullanilir. Genellikle munge paketi kurulurken key otomatik olusur.
OpenHPC RPM indirme linki calismadi¶
Sebep: GitHub release linkleri zaman zaman degisebilir veya dosya adi farkli olabilir.
Cözüm: repos.openhpc.community üzerinden veya master'daki repo dosyasini kopyalayarak kurulum yapilir.