17
دستورعمل ال ساخت یکستر ک محاسباتی باستفاده ا ازMPI در محیط لینوکسBeowulf Cluster رات نظاه : دکتر امینویسند ن عضو هیأت علمینشگاه دا پیام نور یزد

Administrate a Linux Beowulf Cluster

  • Upload
    amin

  • View
    254

  • Download
    3

Embed Size (px)

DESCRIPTION

A good manual for administrating a linux beowulf cluster

Citation preview

Page 1: Administrate a Linux Beowulf Cluster

کالستر یک ساخت العمل دستور

محیط در MPI از استفاده با محاسباتی

لینوکسBeowulf Cluster

نویسنده : دکتر امین نظارات

یزد نور پیام دانشگاه علمی هیأت عضو

Page 2: Administrate a Linux 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

Page 3: Administrate a Linux Beowulf Cluster

[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

Page 4: Administrate a Linux Beowulf Cluster

[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پیکربندی گره

Page 5: Administrate a Linux Beowulf Cluster

[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

Page 6: Administrate a Linux Beowulf Cluster

[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نام دامنه :

Page 7: Administrate a Linux Beowulf Cluster

[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

Page 8: Administrate a Linux Beowulf Cluster

[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بر روی گره های

Page 9: Administrate a Linux Beowulf Cluster

[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

Page 10: Administrate a Linux Beowulf Cluster

[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

Page 11: Administrate a Linux Beowulf Cluster

[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

Page 12: Administrate a Linux Beowulf Cluster

[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 دستور این

Page 13: Administrate a Linux Beowulf Cluster

[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 نیز

کپی خواهد شد.

Page 14: Administrate a Linux Beowulf Cluster

[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);

Page 15: Administrate a Linux Beowulf Cluster

[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));

Page 16: Administrate a Linux Beowulf Cluster

[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

Page 17: Administrate a Linux Beowulf Cluster

[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