آموزش رزبری پای رزبری پای پروژه رزبری پای گنو/لینوکس

آموزش کلاستر برد رزبری پای Raspberry pi – بخش دوم

نوشته شده توسط اروند طباطبایی

در قسمت قبل کارهای اولیه و مورد نیاز برای کلاستر کردن رزبری پای را انجام دادیم و در این بخش میخواهیم دستگاه‌های خود را برای این منظور کانفیگ کنیم.

کانفیگ کردن کلاستر

اولین کاری که باید انجام دهیم این است که جدیدترین نسخه رزبین را برای یک SD پیاده‌سازی کنیم و سپس آن را بر روی ۳ کارت SD دیگر نیز کپی کنیم و به هر رزبری پای یک کارت SD اختصاص دهیم. سپس به وصیله روتر ip های مورد نظر را به دستگاه‌ها اختصاص میدهیم؛ در اینجا من ip با مشخصات : ۱۹۲٫۱۶۸٫۱٫۱۷۳ را برای رزبری اصلی و ۱۷۷ و ۱۷۸ و ۱۸۰ را نیز برای سه رزبری زیر شاخه در نظر گرفته ام.

سپس باید به node ها لاگین کردن و با دستور زیر آها را کانفیگ خواهیم کرد :

sudo raspi-config

 

و به قسمت فایل سیستم‌ها رفته و فایل سیستم روت را expand میکنیم تا حجم آن افزایش پیدا کند و همچنین برای امنیت بیشر پسورد های پیشفرض هر رزبری را نیز عوض میکنیم. پس از آن من node ها را تغییر نام دادم و آن‌ها به صوت زیر نامگذاری کردم :

rpi0 برای گره اصلی یا همان رزبری کنترل کننده بقیه وبرد های دیگر نیز به ترتیب rpi1 و rpi2 و rpi3 نامگذاری شده اند.

پس از انجام این‌ها فایل /etc/hosts را نیز در هر node کمی ویرایش کرده‌ایم و چیزی شبیه به زیر در آن خواهیم داشت :

% cat /etc/hosts
 ۱۲۷٫۰٫۰٫۱ localhost
 ::۱ localhost ip6-localhost ip6-loopback
 fe00::0 ip6-localnet
 ff00::0 ip6-mcastprefix
 ff02::1 ip6-allnodes
 ff02::2 ip6-allrouters

 ۱۲۷٫۰٫۱٫۱ rpi0
 ۱۹۲٫۱۶۸٫۱٫۱۷۳ rpi0 rpi0.local rpi0.lan
 ۱۹۲٫۱۶۸٫۱٫۱۷۷ rpi1 rpi1.local rpi1.lan
 ۱۹۲٫۱۶۸٫۱٫۱۷۸ rpi2 rpi2.local rpi2.lan
 ۱۹۲٫۱۶۸٫۱٫۱۸۰ rpi3 rpi3.local rpi3.lan

 

پس از آن کمی جلوتر رفتیم و ssh key نیز برای همه ۴ گره خود ایجاد کردیم و برای آن‌ها نیز pass phrase در نظر نگرفتیم و کلید پابلیک هر نود را با ۳ نود دیگر به اشتراک گذاشتیم تا ارتباط آن در هنگام کلاستر به راحتی برقرار شود و اینکار بدین معنی است که میتوانیم بدون وارد کردن پسورد به هرکدام از رزبری ها ssh بزنیم اما هنوز هم نیاز به وارد کردن رمز عبور برای node0 یا همان سرشاخه کلاستر داریم.

اضافه کردن دیسک

یکی از چیزهایی که به گره اصلی اضافه کردیم یک فلش مموری ۶۴ گیگابایتی است که بسیار آسان نیز mount خواهد شد.

% mkdir /mnt/usb
% sudo chown -R pi:pi /mnt/usb
% sudo mount /dev/sda1 /mnt/usb -o uid=pi, gid=pi

 

اما اگر میخواهید تا در هنگام بوت به صورت اتوماتیک mount شود نیاز دارید تا فایل /etc/fstab را همانند زیر ویرایش کنید :

/dev/sda1 /mnt/usb auto defaults,user 0 1

 

ما کمی فراتر رفته‌ایم و میخواستیم اوضاع به گونه‌ای باشد که فلش مموری از هر ۳ node دیگر نیز قابل دسترسی باشد. برای اینکار ما از NFS و autoFS استفاده کردیم؛ برای اینکار نیاز داریم تا nfs client را بر روی هر ۴ دستگاه نصب کنیم.

% sudo apt-get install nfs-common

 

و در زیر شاخه‌های سیستم اصلی نیاز داریم تا mount point مناسبی را نیز ایجاد کنیم :

% sudo mkdir /mnt/nfs
% sudo chown -R pi:pi /mnt/nfs

RPiImage3

و سپس در node شماره ۰ یا همان سیستم اصلی نیاز داریم تا nfs server را نصب کنیم

% sudo apt-get install nfs-server

 

سپس فایل /etc/exports را نیز ویرایش میکنیم :

# /etc/exports: the access control list for filesystems which may be exported
/mnt/usb rpi1(rw,sync)
/mnt/usb rpi2(rw,sync)
/mnt/usb rpi3(rw,sync)

 

برای اضافه کردن ۳ گره پجهت پردازش ها بعد از ویرایش این فایل نیاز داریم تا سرویس های RPC را ریستارت کنیم :

% sudo update-rc.d rpcbind enable && sudo update-rc.d nfs-common enable
% sudo reboot

 

پس از ریبوت کردن میتوانید یکی از node ها را چک کنید تا معلوم شود آیا تنظیمات به درستی صورت گرفته است و میتوان به فلش مموری از طریق NFS در هر ۳ گره دسترسی داشته یا نه؟ پس از آن نیاز دارید تا فایل fstab را ویرایش کنید و همانند قبل دیسک ها را به آن اضافه کنید. پس از آن برای جلوگیری از مشکلات بوت شدن باید auto fs را نصب کنیم.

% sudo apt-get install autofs

 

سپس فایل /etc/auto.master را ویرایش کنید و خط زیر را به آن اضافه میکنیم :

/mnt/nfs /etc/auto.nfs

 

و پس از آن نیز فایل /etc/auto.nfs را ایجاد کرده و خط زیر را به آن اضافه کنید :

rpi0   rpi0:/mnt/usb

 

حال باید سرویس auto fs را ریستارت کنیم :

% sudo /etc/init.d/autofs restart.

 

اگر همه چیز به خوبی و بدون مشکل پیش برود و به دایرکتوری /mnt/nfs/rpi0 بروید باید دیسکی که به گره اصلی متصل شده است به صورت خودکار mount شود. میتوانید آن را چک کنید :

% df -h
Filesystem     1K-blocks    Used Available Use% Mounted on
rootfs          14984668 2513228  11812356  18% /
/dev/root       14984668 2513228  11812356  18% /
devtmpfs          470416       0    470416   0% /dev
tmpfs              94944     232     94712   1% /run
tmpfs               5120       0      5120   0% /run/lock
tmpfs             189880       0    189880   0% /run/shm
/dev/mmcblk0p1     57288   19448     37840  34% /boot
rpi0:/mnt/usb   60467008      64  60466944   1% /mnt/nfs/rpi0

 

و اگر آن را در این لیست مشاهده کردید بدین معنی است که دیسک به درستی متصل شده است.

چراغ چشمک‌زن

از آنجایی که یک blinkstick نیز به زیبایی بیشتر رزبری های کلاستر شده ما اضافه میکند تصمیم گرفتیم یکی از آن‌ها را نیز در cluster ها به کار ببریم. میتوانیم نرم‌افزار آن را با دستورات زیر نصب کنیم و سپس آن را از طریق usb به سیستم خود متصل کنید.

% sudo apt-get install -y python-pip python2.7-dev
% sudo pip install blinkstick
% sudo blinkstick --add-udev-rule

blinkstick-rpi-cluster

همچنین دستکاری کردن LED های RGB از داخل ترمینال نیز بسیار آسان است و میتوانید موارد زیبایی را با آن درست کنید.

همچنین میتوانید از blink stick برای نشان دادن وضعیت cluster ها و عملیات های در حال انجام در سیستم استفاده کنید. برای اینکار نیاز دارید تا از api مخصوص استفاده کرده و با زبان برنامه نویسی مورد علاقه خود اینکار را برای برد ها انجام دهید.

 

در قسمت بعد نیز کارهای جالب‌تری با رزبری پای های کلاستر شده انجام خواهیم داد و آموزش را با مواردی اضافه تر برای سیستم های کلاستر شده ادامه میدهیم. 

درباره نویسنده

اروند طباطبایی

بنیانگذار دیجی اسپارک: اولین مرجع تخصصی امبدد سیستم به زبان فارسی / کارشناس سئو و تولید محتوا

هرچه می آموزم میبینم که خیلی کم آموختم. علاقه به رباتیک و تکنولوژی دارم. امیدوارم بتونم دانشی را که آموخته‌ام، به روش‌های مختلفی به کاربران علاقمند منتقل کنم.

تبادل نظر و رفع عیب با ثبت دیدگاه

۲۳ دیدگاه

  • آقای طباطبایی سلام .خسته نباشید
    من مطالب آردوینو سایت را کامل دنبال میکنم ومطالب شمارا روزنامه وار نگاه میکنم.یه نقد کوچولو در مورد کار شما دارم.از هر هزار نفر شاید یک نفر لینوکس کار میکنه اصلا بحث مقایسه با ویندوز نیست.اون یک نفری هم که لینوکس کاره رزبری کار نیست.به نظر من مطالب شما به درد کاربلدها میخوره نه تازه کارها.ممکنه خواهش کنم اگه ممکنه فرض را بر این بگذاریدکه تقریبا تمامی افراد لینوکس کار نیستند وآموزشهاتون را ازمطالب پایه شروع کنید یا یک سایت پایه را معرفی کنید.من مطمئن هستم با تمام زحماتی که شما میکشید شاید تو ایران ۲۰،۳۰ نفری بتونن از مطالب خوب شما استفاده کنن.
    باز هم کمال تشکر را اززحمات شما دارم.

    • درود
      ممنون از اینکه نظرتون رو بیان کردید این باعث میشه که ما تلاش کنیم و نیازهای کاربران را بهتر شناسایی کنیم و مطالب را بر مبنای آن بسازیم و خیلی خوشحال شدم که صادقانه نظر خودتون رو بیان کردید؛ کمی دیر بهتون پاسخ دادم اما سعی کردم بهترین جواب رو با خودم داشته باشم؛ همچنین برنامه‌هایی بر مبنای نظر شما در نظر گرفتم.
      در زمینه مقایسه کاربران لینوکس و ویندوز کاملا حق با شماست اما در زمینه رباتیک موضوع کاملا برعکس است رباتیک مبحثی است شدیداً وابسته به لینوکس و در مواردی همچون هوش مصنوعی لینوکس قدرت خود را به نمایش خواهد گذاشت؛ بنابراین سعی داریم دیجی اسپارک را پایگاهی تخصصی کنیم برای آموزش‌های الکترونیکی و رباتیک و همینطور که میدونید یادگرفتن لینوکس برای این موارد هم نیاز میشه و حتی برای برنامه نویسی و کارهای جانبی نیز لینوکس بهترین ابزار هارو برای اینکار ارائه میده. به همین جهت آموزش‌هایی که میگذاریم قشر خاصی از کاربران رو شامل میشه که در زمینه‌های نامبرده شده فعالیت دارند و برای بهتر شدن هر روزشون توی پروژه ها و کاربا دستگاه‌ها همیشه تلاش میکنیم.
      تیم دانشجوکیت نظر ویژه ای هم به دستگاه های embeded مث رزبری داره و رزبری رو اگر تست کرده باشید بهترین سیستم عامل هایی که میتونید روی اون داشته باشید لینوکسی ها هستن و ویندوز عملا در رزبری کار بسیار خاصی انجام نمیده.
      سعی می کنم یک سری آموزش های پیوسته در این زمینه را شروع کنم با دیدگاه کاربران مبتدی و در این آموزش‌ها لینوکس را از پایه و شروع آموزش بدم و تا جایی که امکان و تواناییشو داشته باشم در این موضوعات پیش خواهم رفت.
      بازهم تشگر میکنم از اینکه نظرتون رو بیان کردید و منتظر آموزش‌های پایه تا پیشرفته ما در مبحث لینوکس باشید 🙂

  • سلام دوست عزیز
    من مدت ۳ سال تخصصی روی رازبری کار کردم و کارگاه و ورکشاپهای زیادی برگزار کردم که البته خارج از ایران بوده . برای تعطیلات به ایران امدم و وقتی دیدم که این سیستم هم به ایران امده با همکاری یکی از دوستان یک مجموعه فیلم آموزشی فارسی که از سطح مبتدی هست رو شروع کردیم که به زودی کار تدوینش تمام خواهد شد. که من اینجا اطلاع رسانی خواهم کرد.
    در ضمن اگر بتوانید یک ورکشاپ گروهی را هماهنگ کنید من میتوانم تدریس کنم . البته تا قبل از رفتنم .
    اگر مایل بودید به فیس بوک تخصصی من هم میتوانید ارتباط داشته باشید.

    • سلام خدمت شما دوست عزیز
      خوشحال میشیم اگه زمینه ها همکاری ما و شما فراهم بشه و از این موضوع استقبال خواهیم کرد.
      و پیشنهاهد هایی که ارائه خواهید داد رو بررسی میکنیم.

    • درود برشما
      بله میتوانید این کار را انجام دهید. ولی دقت داشته باشید که برد رزبری پای یک امبدد سیستم است و با توجه به قیمت تمام شده و نوع تراشه مناسب برای کاربری‌های خاص است. کلاستر کردن این برد باعث میشود که قدرت خروجی این برد افزایش یابد و کاربرد گسترده تری داشته باشد.

  • سلام
    یه سوال داشتم
    مو روی همه ی برد ها سیستم عامل میریزیم درسته؟
    بعد بخوایم روش ماینینگ انجام بدیم
    لازمه ک طبق اون اموزش مانینگ روی هر برد انجام بدیم یا فقط روی هد نود لازمه انجام بدیم؟

    • سلام مجدد
      روی همه بردها سیستم عامل قرار دارد ولی دسترسی شما فقط از طریق یک اینترفیس صورت میگیرد. اون سیستم عامل‌ها روی بردها برای تنظیمات کلاستر هستند. سپس از طریق اینترفیس اصلی، موارد ماینینگ را اجرا می‌کنید.

  • سلام خسته نباشید می خواستم دو رزبری پای رو با هم شبکه کنیم توسط سوییچ غیر هوشمند دی لینک به نحوی که بتوانیم از یک رزبری به رزبری دیگر یک فایل را ارسال کنیم لطفا کمکمون کنید خواهشا

    • با سلام و تشکر از توجه شما
      در این خصوص باید مشخص کنید که این اطلاعات به چه صورت قرار است ارسال شوند؟ آیا اطلاعات یک فایل منحصر به نرم افزار است؟ یا یک اسکریپت ؟ یا یک تصویر؟ یا یک سری فایل متنی ساده؟

  • سلام خسته نباشید
    ببخشید میشه کاری کرد که امکان کپی کردن از برد وجود نداشته باشه
    مثلا وقتی ما یک پروژه تجاری درست میکنیم نمیخوایم راحت رم رزبری در بیارن ازش یک کپی بگیرن
    یا از توی خود رزبری به سورس برناممون دسرسی نداشته باشن؟

    • با سلام
      بله چنین کاری امکان پذیر است. روش‌های مختلفی هم برای این منظور وجود دارد. به عنوان مثال ست کردن مک آدرس پردازنده هر بردی که طراحی میکنید با اسکریپتی که نوشته‌اید. در این حالت با کپی کردن هم به هیچ نتیجه‌ای نخواهند رسید. البته همانطور که گفتم روش‌های مخلتفی وجود داد.

  • سلام من میخوام برای سیستم خانه هوشمند استفاده کنم میخواستم بدونم با این کار من به همه پایه های برد ها دسترسی دارم؟
    یعنی اگر ۵ رزبری پای ۴ داشته باشم هرکدوم ۲۶ پایه GPIOداشته باشه ۱۳۰ تا GPIO دارم

  • سلام و عرض ادب
    بنده یک اورنج پای دارم میخواستم بدونم با این روش شما ممکنه که اون رو وصل کنم به کامپیوترم تا به صورت همزمان به عنوان یک دستگاه واحد با کامپیوتر ازش قابلیت هاش و قدرت پردازشیش استفاده کنم یا نه ممنون میشم جواب بدید

  • سلام ضمن تبریک سال نو وآرزوی سلامتی و بهروزی برای شما و همه هموطنان عزیزم
    خواستم از آموزشهای بسیار خوب شما در موارد گوناگون تشکر کنم
    لطفا یک منبع آموزشی لینوکس ساده معرفی کنید
    منظورم بیشتر اینست که در مورد کاربردهای گوناگون مزایا ومعایب آن وخصوصا نحوه کار با پینهای i/o
    در بردها از طریق لینوکس توضیح دهد.
    با تشکر آموزشهای مفید وسودمند شما

  • خسته نباشید بهتر نیست اخره هر مطلبی که چند قسمته ، لینک قسمت های قبل و بعدم بذارید ؟! ادم قولنج میکنه تو سایتتون