OpenMosix - кластер балансування навантаження

Матеріал з docs.linux.org.ua — збірника документації з Unix/Linux українською мовою.

(Перенаправлено з OpenMosix)
Перейти до: навігація, пошук
Image:Openmosix-big.png
OpenMosix

OpenMosix (OM) являє собою патч до ядра Лінукса, який дозволяє багатьом комп'ютерам працювати, як єдиний системний образ (single-system image SSI). Тобто багато комп'ютерів працють як єдина машина, але з багатьма процесорами!


версія 1 альфа

Встановлення кластеру OpenMosix для балансування навантаження програм Linux на вузли.

За мотивами:

http://www.gentoo.org/doc/en/openmosix-howto.xml

http://www.intel.com/cd/ids/developer/asmo-na/eng/20445.htm


Зміст

Вступ

OpenMosix (OM) являє собою патч до ядра Лінукса, який дозволяє багатьом комп'ютерам працювати, як єдиний системний образ (single-system image SSI). Тобто багато комп'ютерів працють як єдина машина, але з багатьма процесорами. OpenMosix забезпечує міграцію "важких" процесів особливо при запуску ELF і a.out двійкових файлів, чи коли якийсь "тяжкий" процес використовує функцію fork(). Детальну інформацію можна отримати з http://openmosix.sourceforge.net. В одному кластері всі вузли повинні мати одну і туж версію OpenMosix.

Наш кластер буде складатись з індивідуальних комп'ютерів (вузлів), які розділяють свої системні ресурси для забезпечення збільшення обчислювальних потужностей всіх вузлів. Не всі вузли повинні мати однакову архітектуру, але забезпечивши цю умову адміністрування кластеру буде набагато легшим.

Компіляція ядра Лінукс з підтримкою OpenMosix

Повну інформацію про компіляцію ядра Лінукса можна отримати по цій зсилці, а в даному розділі описані лише особливості пов'язані з openMosix.

Спочатку потрібно мати сирці ядра з OM. Якщо ви користуєтесь Gentoo і ядро 2.6.* то потрібно зробити:

# cat /etc/portage/pakage.keywords
...
sys-kernel/openmosix-sources	~x86
...
# cat /etc/portage/pakage.unmask
...
sys-kernel/openmosix-sources
...

Після цього можна виконати

emerge openmosix-sources

Або використовуючи оверлей DYSTRYK

emerge hardened-om-sources

Завжди можна пропатчити ядро руками. Стягуємо патч ОМ що відповідає саме вашій версії ядра з: http://openmosix.sourceforge.net/ розпаковуємо та патчемо сирці ядра. На даний момент офіційний патч для ядра 2.6.* відсутній, можна взяти робочу версію з CVS хоча це поганий варіант... Щоб стягнути собі версію 2.6.* ОМ з CVS в директорію /usr/src/linux-openmosix-2.6 виконуємо:

# cd /usr/src
# cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/openmosix login

Замість паролю просто тиснемо ввід і виконуємо команду:

# cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/openmosix co -P linux-openmosix-2_6/linux-openmosix-2_6

На даний момент ця версія підходить для ядра 2.6.11.12 отже розпаковуємо і патчемо ванільне ядро до версії 2.6.11.12 у /usr/src/linux-2.6.11.12 після цього просто поверху копіюємо файли стягнуті з CVS:

# cp -rf /usr/src/linux-openmosix-2_6/linux-openmosix-2_6/* /usr/src/linux-2.6.11.12/

Можливо кращий варіант взяти не офіційний патч з: http://openmosix.snarc.org/ але в цьому випадку з репозитарію svn не беріть а зтягніть протестований "реліз" patch-2.6.*-om-*.bz2.

Також викладаю патчі hardened-om-sources

тепер переходимо до конфіґурації ядра, для включення ОМ крім загальних налаштувань необхідно додати:

Ці опції появляться тільки після накладання патчу openMosix.

У випадку ядра 2.6.*

......
Networking
  [*] Networking support 
  Networking options --->
     <*> Packet socket
     [*]   Packet socket: mmapped IO
     <*> Unix domain sockets
     <*> IPsec user configuration interface
     <*> PF_KEY sockets
     [*] TCP/IP networking
     [*]   IP: multicasting
.....
File systems
  .....
  <*> Kernel automounter support
  <*> Kernel automounter version 4 support (also supports v3)
  .....
  Pseudo filesystems  --->
      [*] /proc file system support
      [*]   /proc/kcore support
.....
HPC options
  [ * ] Enable OpenMosix clustering              включає підтримку кластера в ядро
  [ * ]   Enable OpenMosix to be more verbose    для тестування можна додати
  [ * ]     Add some message when migrating      для того щоб впевнитись, що якісь процеси мігрують і наш кластер працює
  [   ]   Enable OpenMosix debug

У випадку ядра 2.4.*

Code maturity level options  --->
   [*] Prompt for development and/or incomplete code/drivers
.......
Networking options --->
   <*> Packet socket
   [ ]   Packet socket: mmapped IO
   < > Netlink device emulation
   [ ] Network packet filtering (replaces ipchains)
   [ ] Socket Filtering
   <*> Unix domain sockets
   [ * ] TCP/IP networking
   [ * ]   IP: multicasting
........
File systems --->
   [ * ] /proc file system support
   [ * ] /dev file system support (EXPERIMENTAL)
   [ * ]   Automatically mount at boot
..........
openMosix --->
   [ * ] openMosix process migration support
   [ ] Support clusters with a complex network topology
   [ * ] Stricter security on openMosix ports
   (1) Level of process-identity disclosure (0-3)
   [ * ] openMosix File-System
   [ ] Poll/Select exceptions on pipes
   [ ] Disable OOM Killer
   [ ] Load Limit

Налаштування вузлів

Встановлення ОМ програм (з 2.6.* ядром --> http://omuscd.sourceforge.net/ !). Перед тим як кластер буде здатний здійснювати міграцію процесів потрібно встановити декілька користувацьких програм. Щоб ОМ запрацював з усіма своїми можливостями та вузли змогли приєднуватись потрібно запустити ОМ сервіс на основному комп'ютері. Для встановлення цих програм виконуємо:

для 2.4

# emerge openmosix-user

для 2.6 з оверлею DYSTRYK

# emerge omuscd

В цей пакет входить сервіс з можливістю автоматично визначати наявність вузлів у мережі, так що у додатковій конфіґурації необхідності нема. Створіть директорію:

mkdir /mnt/mfs

і примонтуйте ОМ файлову систему, якщо хочете мати доступ до всіх Ваших вузлів.

# cat /etc/fstab
none		/mnt/mfs	mfs	noauto,dfsa=1		0 0

Не потрібно щоб всі вузли працювали, щоб кластер нормально функціонував. Вузли можуть приєднуватись і від'єднуватись від кластеру без будь-якої шкоди коли комп'ютери проходять нормальні процеси завантаження-виключення. Для старту ОМ сервісу, який ініціалізує функціональність ОМ частини ядра і слідкує за всіма доступними вузлами виконуємо:

# /etc/init.d/openmosix start

А для автоматичного завантаження ОМ при включені сервера:

# rc-update -a openmosix default

Корисні OpenMosix утиліти

Консольні утиліти

openmosix-user встановлює декілька корисних утиліт: mosmon - OM монітор, дозволяє Вам слідкувати за станом всіх вузлів включаючи завантаження їх процесора, пам'яті, ітд... mtop - розширена версія top яка дозволяє дізнатись на якому вузлі Ваш процес реально виконується. mps - розширена версія ps, яка також показує номер вузлу. mosctl whois - вказує номер вузлу. mosctl whois nodenumber - вказує ІР чи ім'я цього вузла.

Графічні утиліти

Щоб переглядати графічну інтерпретацію Вашого кластеру і наочно спостерігати міграцію процесів, можна встановити графічний пакет утиліт.

# emerge sys-cluster/openmosixview

Далі запускаємо:

# openmosixview

Є ще кращі 3D утилітки для моніторингу, але не дуже стабільні:

# emerge sys-cluster/openmosix-3dmon
# emerge sys-cluster/openmosix-3dmon-stats

Ще одна утилітка для гурманів веб-інтерфейсів, моніторингу ОМ через веб:

# emerge sys-cluster/openmosixwebview

OpenMosix тест

Для тестування чи все на Вашому кластері добре працює і дослідження його роботи при навантажені, можна використати стрес-тест:

# emerge openmosixtest

Література

wiki - офіційне тематичне вікі.

openMosix

Do-It-Yourself Clusters автор Denis Sunko

openMosix: The Other Kind of HPC Cluster автори Moshe Bar and Bruce Knox

Alternate Documentation of openMosix 2.6 Userspace-Tools from Niels

White Paper - Security and openMosix автор Ian Latter

--Svyat 21:41, 27 жов 2005 (EEST)

Особисті інструменти