Версія 1 (альфа)

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

За мотивами:


Вступ

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

Завжди можна пропатчити ядро руками: звантажуємо патч ОМ, що відповідає саме вашій версії ядра з офіційного сайту, розпаковуємо та патчимо сирці ядра.

На даний момент офіційний патч для ядра 2.6 відсутній, можна взяти робочу версію з CVS, хоча це поганий варіант... Щоб стягнути собі версію OM для 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.

Тепер переходимо до конфіґурації ядра, для роботи OM, крім загальних налаштувань, необхідно увімкнути наступне (ці опції появляться тільки після накладання патчу 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
    

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

Встановлення утиліт OM (для ядра 2.6 — http://omuscd.sourceforge.net/).

Перед тим як кластер буде здатний здійснювати міграцію процесів потрібно встановити декілька користувацьких програм. Щоб OM запрацював з усіма своїми можливостями та вузли змогли приєднуватись, потрібно запустити сервіс OM на основному комп'ютері.

Для встановлення цих програм виконуємо:

  • Для 2.4:

     # emerge openmosix-user
    
  • Для 2.6 з оверлею DYSTRYK:

     # emerge omuscd
    

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

mkdir /mnt/mfs

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

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

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

Для старту сервісу OM, який ініціалізує функціональність OM у ядрі і слідкує за всіма доступними вузлами, виконуємо:

# /etc/init.d/openmosix start

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

# rc-update -a openmosix default

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

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

openmosix-user встановлює декілька корисних утиліт:

mosmon : Монітор OM, дозволяє вам слідкувати за станом всіх вузлів, зокрема завантаження їх процесора, пам'яті тощо.

mtop : Розширена версія top, яка дозволяє дізнатись на якому саме вузлі ваш процес реально виконується.

mps : Розширена версія ps, яка також показує номер вузла.

mosctl whois : Вказує номер вузла.

mosctl whois nodenumber : Вказує IP чи ім'я цього вузла.

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

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

# emerge sys-cluster/openmosixview

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

# openmosixview

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

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

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

# emerge sys-cluster/openmosixwebview

Тестування OpenMosix

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

# emerge openmosixtest

Література

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