Administrate a Linux Beowulf Cluster
description
Transcript of Administrate a Linux Beowulf Cluster
کالستر یک ساخت العمل دستور
محیط در MPI از استفاده با محاسباتی
لینوکسBeowulf Cluster
نویسنده : دکتر امین نظارات
یزد نور پیام دانشگاه علمی هیأت عضو
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
1 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
محاسباتی را شرح می دهد.لینوکس با دو گره Beowulfاین راهنما نحوه ی ساخت یک کالستر
روی گره نصب سیستم عامل برmaster)مدیر(
پیکربندی گرهmaster به عنوانgateway برای گره هایslave
نصب سیستم عامل بر روی گره هایslave
راه اندازی ( سیستم فایل شبکهNetwork File System)
راه اندازی احراز هویت کاربران NIS
نصب کامپایلرها
Ssh بدون نیاز به پسورد در میان گره ها
نصبMPICH
masterنصب سیستم عامل بر روی گره
: masterبر روی 12.04ابونتو سرور نصب -1
Eth0 اینترنت متصل خواهد شد.اصلی است ، تنها این واسط به ی شبکه کارت
را نصب کنید. openssh server تنها
انتخاب شده است. "master"و نام هاست "hpclab.ir"در این مثال masterنام دامین
با همان نام دامین نام گذاری شده اند. "node02"و "node01"نیز slaveگره های
قبل از نصب دستورات زیر را به ترتیب وارد کنید : -2
sudo apt-get update
sudo apt-get upgrade )ضروری نیست(
sudo apt-get install sysv-rc-conf مشکلی ایجاد نمیشود( )در صورت عدم نصب
sudo apt-get install build-essential linux-headers-
`uname -r`
sudo apt-get remove openssh-server openssh-client
sudo apt-get install openssh-server openssh-client
پیکربندی کارت شبکه ی دوم برای شبکه ی خصوصی -3
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
2 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
eth0را ویرایش کنید . اگر کارت شبکه ی اصلی بر روی etc/network/interfaces/فایل
یل به فابرای اتصال به شبکه داخلی ، خط زیر را است و به صورت درستی اینترنت را دریافت می کنید
اضافه کنید:
auto eth1
iface eth1 inet static
address 10.10.20.101
netmask 255.255.255.0
network 10.10.20.0
broadcast 10.10.20.255
eth1 از طریق یک سوئیچ که سایر گره ها به صورتwired به آن وصل شده اند به شبکه ی خصوصی
متصل میشود.
اجرا شود و همچنین نباید به اینترنت به صورت مستقیم متصل DHCP serverسوئیچ نباید به عنوان
با یکدیگر ارتباط برقرار masterاز eth1و slaveد تا گره های همه این ها اجازه میده د.نگرد
کنند.
بعد از اتمام ویرایش فایل ، کارت شبکه را فعالسازی کنید
sudo ifup eth1
(hosts)میزبانها فایل -4
به وسیله نام slaveشبکه ی خصوصی فعال شد، یک فایل هاست برای شناسایی گره هایکه کارت حال
به دست می آید. ابونتو از این فایل برای etc/hosts/آنها مورد نیاز است. این عمل با استفاده از فایل
اضافه کنید: etc/hosts/مقرر کردن نام ها استفاده می کند.این خطوط را به فایل
10.10.20.101 master.hpclab.ir master
10.10.20.111 node01.hpclab.ir node01
10.10.20.112 node02.hpclab.ir node02
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
3 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
rootفعال سازی -5
کرده ام. روی یک کالستر، حسابهای کاربری تنظیم شده نفعال سازی برای راحتی کار تنهارا rootن م
صورت می NIS. احراز هویت کاربر از طریقhome/بر روی پارتیشن حساب کاربری، معموال تحت
فراهم نمیشود، masterلزوما به وسیله ی گره NISو سرور NFSگیرد. گاهی اوقات سرویس
در این مورد سرویس با و قادر نباشد با موفقیت الگین کند بنابراین یک کاربر معمولی ممکن است
، یک الگین با تنها منابع محلی تضمین شده root شکست مواجه میشود. به وسیله فعال سازی کاربر
است.
sudo passwd
تغییر نام دامنه و سیستم
نام دامنه تنها تا زمانی که سیستم به صورت مجدد راه اندازی شود domainnameبا استفاده از
که به عنوان نام دامنه در را hpclab.irدن آن، در این مثال کر دائمیتنظیم شده باقی می ماند. برای
:اضافه می کنیم etc/defaultdomain/فایل این در نظر گرفته ایم
$sudo nano /etc/defaultdomain hpclab.ir
$domainname hpclab.ir
$sudo nano /etc/hostname
master
$sudo hostname master
slaveبرای گره های gatewayبه عنوان masterپیکربندی گره
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
4 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
به اینترنت از slaveدو کارت شبکه دارد و مستقیما به اینترنت متصل است. گره های masterگره
دسترسی خواهند داشت. masterطریق گره
: ufwاز طریق gatewayبه عنوان masterبرای تنظیم گره
فعال سازی ارسال بسته ها : -1
را DEFAULT_FORWARD_POLICYگزینه ی etc/default/ufw/در فایل
تغییر دهید : ”ACCEPT“به
DEFAULT_FORWARD_POLICY="ACCEPT"
کنید : uncommentخطوط زیر را etc/ufw/sysctl.conf/در فایل
net.ipv4.ip_forward=1
net.ipv6.conf.default.forwarding=1
: ufwافزودن قوانین ارسال به -2
به صورت پیشفرض تنها جدول فیلتر اضافه می کنیم. etc/ufw/before/قوانین را به فایل حال
اضافه کنید :االی فایل بعد از کامنتهای سربرگ پیکربندی می شود. خطوط زیر را به ب
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from private network through eth0,
the Internet iface on master.
-A POSTROUTING -s 10.10.20.0/24 -o eth0 -j MASQUERADE
# don't delete the 'COMMIT' line or these nat table
rules won't be processed
COMMIT
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
5 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
ufwروشن کردن -3
: را می پذیرد 22پورت ufwاطمینان حاصل کنید که قبل از روشن کردن فایروال
sudo ufw allow 22
کردن شبکه ی خصوصی امن
sudo ufw allow from 10.10.20.0/24
sudo ufw allow to 10.10.20.0/24
natتغییر کار ایجاد با ufwراه اندازی مجدد **
sudo ufw disable && sudo ufw enable
slaveنصب سیستم عامل برروی گره های
متفاوت IPنصب و راه اندازی میشوند البته آنها باید نام و masterبه همان روش slaveدو گره
داشته باشند.
نصب کردن : -1
پیکربندی شده است به عنوان slave.گره های نصب کردم USB driveمن سیستم عامل را از
open ssh server.
IP 10.10.20.111 برایnode01 ،10.10.20.112 برایnode02.
Gateway :10.10.20.101
DNS :DNS مورد استفاده برای گرهmaster
hpclab.irنام دامنه :
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
6 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
میزبانهافایل -2
: اضافه کنید Slaveدر هر دو کامپیوتر etc/hosts/خطوط زیر را به فایل
10.10.20.101 master.hpclab.ir master
10.10.20.111 node01.hpclab.ir node01
10.10.20.112 node02.hpclab.ir node02
کارت شبکه : -3
masterگره مطابق gatewayباید etc/network/interfaces/در فایل کارت شبکه
auto eth0تنظیم شود:
iface eth0 inet static
address 10.10.20.111
netmask 255.255.255.0
network 10.10.20.0
broadcast 10.10.10.255
gateway 10.10.20.101
# dns-* options are implemented by the
resolvconf package, if installed
dns-nameservers (fill in your dns server)
dns-search hpclab.ir
خارجی باشد. ipقادر به پینگ slaveحال باید گره
قبل از نصب -4
sudo apt-get update
sudo apt-get upgrade
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
7 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
نصب کرده اید و نیازی به گنوم ندارید با دستور slaveنسخه ی دسکتاب ابونتو را برای گره ی اگر شما
زیر می توانید آن را حذف کنید:
sudo apt-get remove ubuntu-desktop
sudo apt-get autoromove
(Network File Systemشبکه )نصب سیستم فایل
اکسپورت خواهد slaveبه همه ی گره های NFSبه عنوان را home/پوشه masterگره
کرد.
:masterبر روی
sudo aptitude install nfs-kernel-server
: نماییدو خط زیر را به آن اضافه ویرایش کنید را etc/exports/فایل سپس
/home
10.10.20.0/255.255.255.0(async,rw,no_root_squash,no_w
delay)
به اشتراک *.IP 10.10.20در همه ی گره ها با home/این دستور باعث میشوند تا پوشه ی
به یک پارتیشن مجزا اختصاص ندارد ولی ما این امر را پیشنهاد می home/گذاشته شود. دایرکتوری
کنیم.
: NFSراه اندازی مجدد سرویس
sudo /etc/init.d/nfs-kernel-server restart
: slaveبر روی گره های
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
8 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
nfs client نصب کنیدرا:
sudo apt-get install portmap nfs-common
home/با فرض اینکه دایرکتوری را ویرایش کنید و خط زیر را به آن اضافه کنید، etc/fstab/فایل
است:خالی slaveموجود بر روی گره های
master:/home /home nfs
rw,hard,intr,bg,rsize=8192,wsize=8192,timeo=14,retran
s=10 0 0
Mount کردن دایرکتوری /home:
sudo mount /home sudo nano /etc/rc.local( برای اینکه در هر بار ریست شدن سیستم نیاز با اتصال
(مجدد نباشد دستور مربوطه را به این فایل اضافه کنید
mount /home (این خط را به انتهای فایل بیفزایید)
در راه اندازی بعدی سیستم به home/به درستی صورت گرفته باشد ، دایرکتوری Mount اگر عمل
خواهد شد. Mountصورت خودکار
جهت احراز هویت کاربر : NISراه اندازی
ها به صورت slaveو masterربر و اطالعات حساب باید بین گره بر روی کالستر ، احراز هویت کا
و masterروی بر NIS serverهماهنگ شده باشد. یک راه ساده برای انجام این کار راه اندازی
NIS client بر رویslave .ها است
: masterبرروی گره NIS serverنصب
: NISنصب -1
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
9 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
sudo apt-get install portmap nis
NIS. نام دامنه ی است "hpclab.ir" که در این مثال در طول نصب نام دامنه را از شما خواهد پرسید
با دستور زیر برگشت داده میشود.
nisdomainname
"OPTIONS="-i 127.0.0.1 را به این صورت etc/default/portmap/فایل -2
ویرایش کنید.
NISSERVER = masterرا به NISSERVERخط etc/default/nis/در فایل -3
تنظیم کنید.
:etc/yp.conf/ویرایش فایل -4
domain hpclab.ir server master
ypserver master.hpclab.ir
، انجام این عمل الزم است. می باشد nis clientنیز یک masterاز آنجا که گره
. var/yp/Makefile/ویرایش فایل -5
. برای اینکار بخش var/yp/را در دایرکتوری NISترجیح میدهد پسوردهای گاهی اوقات یک مدیر
دهید.با آن را در این فایل تغییر طهای مرتب
ALL"استفاده می کنید، خط passwdو groupاگر شما هم مانند من از احراز هویت
= passwd group #hosts rpc services netid protocols netgrp" را
کنید نیازی به تغییر دیگری و مانند استفاده می etc/passwd/تغییر دهید . در صورتی که تنها از
آن را دخیره کرده و ببندید. نیست
: etc/ypserv.securenets/ویرایش فایل -6
#0.0.0.0 0.0.0.0
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
11 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
host 1........... # IP of eth0
host 10.10.20.101 # IP of eth1
host 10.10.20.111 # node01
host 10.10.20.112 # node02
: NISمقدار دهی اولیه ی -7
sudo /usr/lib/yp/ypinit -m
اضافه کنید ها NIS clientبر روی etc/passwd/خط زیر را به انتهای فایل -8
)سرور نیز یک کالینت است( :
+:::::: : etc/group/خط زیر را به انتهای فایل
+:::
:NISراه اندازی مجدد
sudo /etc/init.d/portmap restart
sudo /etc/init.d/nis restart
: slaveبر روی گره های NIS clientبرای نصب
: NISنصب -1
sudo apt-get install portmap nis
: etc/yp.conf/ویرایش فایل -2
ypserver master
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
11 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
را و به انتهای آن خط زیر را اضافه کنید : etc/passwd/ویرایش کنید فایل -3
+:::::: را با افزودن خط زیر ویرایش کنید : etc/group/فایل
+:::
را نیز با افزودن خط زیر ویرایش کنید : etc/shadow/فایل
+::::::::
: NISراه اندازی مجدد -4
sudo /etc/init.d/nis restart
(test) آزمایش
و باالتر. به 1000با NIS maps userشروع می شود و 1000کاربر از idبه صور پیشفرض
کار میکند مگر اینکه رمز عبور شما از جای دیگری منتقل شده محدودهخارج از NISعبارت دیگر
**باشد.
، اجرا کنید: slaveیا masterکار می کند، بر روی NISبرای چک کردن اینکه
ypcat passwd
نصب کامپایلرها
دهش نصب پایه کامپایلرهای که شویم مطمئن دهید اجازه موازی، نویسی برنامه ابزار ،mpich نصب از قبل
: ضروری هستند کامپایلرها این علمی، محاسبات محیط یک در. است
gcc ، gfortran، و g77
مطلوب این است اوقات گاهی ،کند کامپایلرا 77fortran اکثر کدهای تواند می gfortran چه اگر
را داشته باشیم. 77fortranکه کامپایلر کامل
: را نصب می کندgcc دستور این
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
12 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
sudo apt-get install build-essential linux-headers-
`uname -r`
را نصب میکند f77و gfortranاین دستور
sudo aptitude install gfortran fort77
Ssh بدون نیاز به پسورد(Passwordless )در میان گره ها
انجام داده می شود. masterگره homeاین کار بر روی دایرکتوری
را ندارید ، دستور زیر را اجرا کنید : ssh/id_rsa.pub.اگر فایل
cd /home
ssh-keygen -t rsa
را داشته اید( : ssh/id_rsa.pub.سپس )یا اگر قبال فایل
ssh-copy-id -i ~/.ssh/id_rsa.pub node01
ssh node01
ها از شما برای بار اول رمز را می خواهد که بایستی وارد نمایید، این رمز در یک Slaveبه هنگام ورود به
فایل ذخیره می شود. دقت نمایید در دفعات بعدی رمزی از شما نخواهد خواست.
داشته باشند : بدون پسورد sshکه قابلیت ( جدید accountsحساب های )برای ساخت
sudo cp -r .ssh /etc/skel
Adduser این دایرکتوری را به دایرکتوری کاربران جدید کپی خواهد کرد، بنابراین راه انداز ssh نیز
کپی خواهد شد.
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
13 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
MPICHنصب
:Slaveو Masterاعم از ها گرههمه ی بر روی MPICHنصب -1
sudo aptitude install mpich-bin mpich-mpd-bin mpich-
shmem-bin libmpich1.0-dev
: mpiنمونه برنامه ی -2
#include "mpi.h"
#include <stdio.h>
#include <math.h>
double f(double);
double f(double a)
{
return (4.0 / (1.0 + a*a));
}
int main(int argc,char *argv[])
{
int done = 0, n, myid, numprocs, i;
double PI25DT = 3.141592653589793238462643;
double mypi, pi, h, sum, x;
double startwtime = 0.0, endwtime;
int namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc,&argv);
MPI_Comm_size(MPI_COMM_WORLD,&numprocs);
MPI_Comm_rank(MPI_COMM_WORLD,&myid);
MPI_Get_processor_name(processor_name,&namelen);
fprintf(stdout,"Process %d of %d on %s\n",
myid, numprocs, processor_name);
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
14 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
n = 0;
while (!done)
{
if (myid == 0)
{
/*
printf("Enter the number of intervals: (0
quits) ");
scanf("%d",&n);
*/
if (n==0) n=10000; else n=0;
startwtime = MPI_Wtime();
}
MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD);
if (n == 0)
done = 1;
else
{
h = 1.0 / (double) n;
sum = 0.0;
/* A slightly better approach starts from
large i and works back */
for (i = myid + 1; i <= n; i += numprocs)
{
x = h * ((double)i - 0.5);
sum += f(x);
}
mypi = h * sum;
MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE,
MPI_SUM, 0, MPI_COMM_WORLD);
if (myid == 0)
{
printf("pi is approximately %.16f,
Error is %.16f\n",
pi, fabs(pi - PI25DT));
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
15 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
endwtime = MPI_Wtime();
printf("wall clock time = %f\n", endwtime-
startwtime);
fflush( stdout );
}
}
}
MPI_Finalize();
return 0;
}
کامپایل برنامه باال : -3
mpicc -o cpi cpi.c
: masterبر روی mpiتست اجرای -4
mpirun -np 2 cpi
اجرا شود . masterباید قادر باشد تا بر روی گره این برنامه -5
مشاهده وضعیت اجرای برنامه و تعداد پردازه هایی که ایجاد می شوند می توان از دستور برای
زیر استفاده کرد.
top –p $(pgrep -d ‘,’ cpi)
: slaveتست اجرا بر روی گره -6
mpirun -nolocal -np 2 cpi
[email protected]نویسنده: دکتر امین نظارات - MPIدستور العمل ساخت یک کالستر محاسباتی با استفاده از
: مهدیه معمارزادهراستار وی
16 }yazdpnu.ac.ir,gmail.comaminnezarat@{ www.hpclab.ir
مشخص کردن تعداد هسته های کاری )برایرا دارید"node01:2"، شما خط machineدر فایل
.برای هر گره(
sudo aptitude remove rsh-redone-client rsh-redone-
server
در تمام گره ها : machine fileایجاد -7
نوشته می شود :را می پذیرند mpiهای jobدر این سه فایل نام تمامی گره هایی که
/etc/mpich/machines.LINUX :
/etc/mpich-mpd/machines.LINUX :
/etc/mpich-shmem/machines.LINUX:
به این صورت :
master
node01
node02