Ana Düğümün Yapılandırılması

Ana düğüm yapmak için en güçlü makineyi seçin. Üzerine, sadece ihtiyacınız olan paketleri seçerek Linux kurun. İhtiyacınız olan şey sadece " Ağ servisleri"dir. Çünkü NFS ve SSH kullanmanız gerekecek. Bütün ihtiyaçlarınız bu kadar. Ama ben Beowulf uygulamaları geliştirecektim, dolayısıyla X ve C geliştiricisi de ekledim.

Deneyimlerime göre gerçekten NFS kullanmaya ihtiyacınız yok. Ama, düğümler arasında dosya kopyalamak ve program kurmayı otomatikleştirmek için, çok faydalı buldum. Belgenin ilerleyen kısımlarında, NFS kullanmadan basit bir Beowulf uygulamasının nasıl çalıştırılabileceğini anlatacağım. Daha karmaşık uygulamalar NFS kullanabilir veya gerçekten ona bağımlı olabilir.

Beowulf sistemlerini araştırmalarınızda ana düğümde, dış dünyadan ona erişiminizi sağlayacak olan ikinci bir ağ kartının nasıl olacağını göreceksiniz. Bu kümeleme işlemleri için gerekli değildir.

Çok katı bir yol öğrendim: Linux dağıtımınız, sizi kullandığınız parolanın güçlü bir parola olmasına zorluyor. Kullanıcım için "a" gibi çok basit bir parola girdim hiçbir şey çalışmadı. Parolamı; sayılar, karakterler, büyük harf ve küçük harfle karıştırdığımda çalıştı.

Eğer ileti aktarım arayüzü olarak LAM kullanırsanız, kılavuzunda okuyacağınız gibi güvenlik duvarınızı devredışı bırakacaksınız, çünkü LAM düğümler arası iletişim için rastgele portlar kullanır. Kural: Eğer kılavuz size bir şeyleri yapmanızı söylüyorsa yapın. LAM kılavuzu size yönetici olmayan bir kullanıcı ile çalışmanızı söyler. Her bir düğüm için aynı kullanıcıyı tanımlayın. Küme üzerindeki herbir düğümü aynı kullanıcı ve parola ile kurun. Ben yönetici olmayan kullanıcıyı "wolf" diye tanımladım.

hosts dosyaları

Öncelikle /etc/hosts dosyasını düzenleyeceğiz. Dosya içinde göreceğiniz gibi açıklamalar size "localhost" satırına dokunmamanızı söyler. Bu tavsiyeyi dikkate almayın ve geridönüş arabiriminin adresini düğümünüzün ismini içermeyecek şekilde değiştirin.

Satırı şöyle değiştirin:

127.0.0.1 wolf00 localhost.localdomain localhost

Eski hali:

127.0.0.1 localhost.localdomain localhost 

İstediğiniz bütün düğümleri kümeye ekleyin. Not: Bu, Beowulf işlemleri için gerekli değildir, sadece daha kullanışlıdır; dolayısıyla küme üzerindeki bir düğüme erişmek istediğinizde 192.168.0.100 gibi sıkıcı bir adres girmek yerine basitçe "wolf01" girerek erişmenizi sağlar.

192.168.0.100 wolf00
192.168.0.101 wolf01
192.168.0.102 wolf02
192.168.0.103 wolf03
192.168.0.104 wolf04

Gruplar

Güvenilir bir küme kurmak için, özellikle düğümlerinizin "kullanıcısı" iseniz, bazı güvenlik önlemleri almalısınız.

Kullanıcıyı oluşturduktan sonra bir grup oluşturun ve kullanıcıları bu gruba ekleyin. Sonra dosya ve dizinlerinizi sadece bu grubun kullanıcıları tarafından erişilebilecek şekilde düzenleyin.

groupadd beowulf usermod -g beowulf wolf 

Aşağıdaki komutu da /home/wolf/.bash_profile dosyasına ekleyin:

umask 007

Artık "wolf" kullanıcısı tarafından oluşturulan herhangi bir dosya, otomatik olarak, sadece "beowulf" grubu veya bu grubun kullanıcıları tarafından yazılabiliyor olacaktır.

NFS

Şu web sitesinden bahsetmek gerekiyor: http://www.ibiblio.org/mdw/HOWTO/NFS-HOWTO/server.html

Bir kenara yazın. Ben size NFS kurmak için sisteminizi nasıl düzenleyeceğinizi anlatacağım, ama bu siteyi de çok faydalı buldum.

Herkesin paylaşması için bir dizin oluşturun:

mkdir /mnt/wolf
chmod 770 /mnt/wolf
chown wolf:beowulf /mnt/wolf -R

/etc dizinine gidin ve shared dizininizi exports dosyasına ekleyin:

# cd /etc
# cat >> exports
/mnt/wolf 192.168.0.100/192.168.0.255 (rw)
<control d>

IP Adresleri

Benim ağım 192.168.0.nnn dir; "özel" bir IP aralığıdır. Thomas Sterling kitabının 106. sayfasında bahsediyor. Güvenlik duvarında da bu aralıkta ve gayet iyi çalışıyor.

192.168.0.100 olan ana düğümümü "wolf00" diye isimlendirdim. Her bir düğümün isimlendirmesi de 192.168.0.100 + nn'e karşılık "wolfnn" olmalıdır. Ben pek çok web sayfasının tavsiyelerini takip ediyorum ve küme ölçeklendirme görevlerini kendim kuruyorum.

Servisler

Çalışmasını istediğimiz süreçleri devreye sokalım:

chkconfig -add sshd
chkconfig -add nfs
chkconfig -add rexec
chkconfig -add rlogin
chkconfig -level 3 rsh on
chkconfig -level 3 nfs on
chkconfig -level 3 rexec on
chkconfig -level 3 rlogin on

Ve, açılış sırasında, çalışmasını istemediğim bazı servisler gördüm. Bana göre silinmeli. Siz de ihtiyacınıza uygun servisleri ekleyip çıkarabilirsiniz; aşağıda görüldüğü gibi:

chkconfig -del atd
chkconfig -del rsh
chkconfig -del sendmail

SSH

Güvenli olması için SSH çalışması yapmalıyız. root olarak sisteme giriş yapıp /etc/ssh/sshd_config dosyasını düzenlemelisiniz. Aşağıdaki satırlardaki gibi:

#RSAAuthentication yes
#AuthorizedKeysFile .ssh/authorized_keys

satırları açıklama satırıdır, dolayısıyla başındaki # işareti kaldırılmalı.

sshd'yi yeniden başlatıp, wolf olarak sisteme giriş yapın. Çünkü küme işlemleriniz daima "wolf" kullanıcısı tarafından yapılabiliyor olacaktır. hosts dosyası değişiklikleri daha önce yapılmalıdır, sistemden çıkış yapılıp tekrar girildiğinde değişiklik yapılamaz. Düğümü yeniden başlatın ve komut istemcisinin "wolf00" sunucu ismini gösterdiğinden emin olun.

Genel ve gizli SSH anahtarlarınızı üretin:

ssh-keygen -b 1024 -f ~/.ssh/id_rsa -t rsa -N "" 

Bazı iletiler gösterecek, genel ve gizli anahtar çiftinin oluşturulduğunu söyleyecek. Siz bu dosyaları görebileceksiniz, /home/wolf/.ssh dizini içinde id_rsa ve id_rsa.pub.

id_rsa.pub dosyasını .ssh dizini içindeki authorized_keys dosyasına kopyalayın. Bu dosyayı daha sonra kullanıyor olacağız. Bu dosyanın sunucu ismini gösterdiğini doğrulayın. Dosyalar ve dizinlerin güvenliğini değiştirin:

chmod 644 ~/.ssh/auth*
chmod 755 ~/.ssh

Ç.N.: ~/.ssh dizini gizli anahtarı içerdiğinden izinlerinin 700 olması gerekir. Mecbur kalmadıkça 755 yapmayın.

LAM kullanıcı gruplarına göre ana düğüm, sadece ikincil düğümlerin erişim kayıtlarını tutmalıdır. Bu nedenle genel anahtar dosyalarını kopyalayacağımız zaman, sadece ana düğümün anahtar dosyasını her bir ikincil düğüme kopyalarız. Bu, authorized_keys dosyalarının bütün düğümlere kopyalanmasından daha basittir. İlerde bunu ayrıntılı olarak tarif edeceğim.

Not

Ben, ileti aktarım arayüzü olarak LAM dağıtımını kullandığım için, sadece onun gereksinimlerini yazıyorum; eğer siz farklı bir ileti aktarım arayüzü seçip küme kurarsanız, sizin ihtiyaçlarınız değişebilir.

/home/wolf/.bash_profile satırının sonuna, aşağıdaki ifadeleri ekleyin:

export LAMRSH='ssh -x'
ssh-agent sh -c 'ssh-add && bash'

MPI

En son düğüme ileti aktarım arayüzünü koyun. Gereksinimler başlığında belirttiğim gibi, ben LAM kullandım. LAM'i buradan http://www.lam-mpi.org/ adresinden edinebilirsiniz.

Ama siz, başka bir ileti aktarım arayüzü ve/veya paralel sanal makine yazılımı kullanabilirsiniz. Tekrar ediyorum, ben kendi çalışmalarımı gösteriyorum.

LAM'i kaynak kodundan derleyebileceğiniz gibi, daha önceden derlenmiş RPM paketini de kullanabilirsiniz. Burada anlatma fırsatım olmadı; ben kaynak kodu indirip kılavuzuna göre derledim, başka bir deneyimimde de RPM paketlerinden kurmuştum. İkisi de gayet iyi çalışıyor. Unutmayın, bütün bunları öğrenmek için yapıyoruz.

LAM ve diğer ileti aktarım arayüzü yazılımları hakkında daha fazla belgeyi buradan bulabilirsiniz.