True64 Alpha Cluster Вопросы Агееву Про clu_create 1. Virtual cluster interconnect device (isc0) 10.0.0.1 Phisical cluster interconnect device (tu0) 10.1.0.1 Зачем дублировать phisical виртуальным и зачем два адреса для CI? Если MC, то IP будет только один. Если LAN - то виртуальный адрес - для эмуляции MC-интерфейса 2. Партиции под root,var,usr нужно размечать заранее врукопашную? Ответ: да 3. Диски для quorum, boot1 clu_create расапартиширует самостоятельно? Ответ: да 4. Где физически живет /cluster/members/{memb} Ответ: соответствующий boot-диск root2_domain#root at /dev/disk/dsk2a Например: /vmunix --> /cluster/members/{memb}/boot_partition/vmunix 5. Как сгенерить ядро для только что вставленного в машину fiber╜ chanel-контроллера >>> boot -file genvmunix -fl s dka300 # doconfig # cp /sys/MOS209/vmunix / Если дравера нет, то поставить NHD (New Hardware Delivery) mount /cdrom /cdrom/nhd_install ну а он запускает setld ставит в т.ч. дравер. Если ставился дравер - то будет перезагрузка и пересборка ядра 6. Какой внешний адрес будет у каждого члена кластера? одинаковый - совпадающий с IP кластера? Как их различать снаружи? Или я буду ходить с узла на узел используя внутренние CI-шные адреса? Phisical или виртуальный? У узла будет несколько IP-адресов. Свой индивидуальный, общекластерный, назначенный на IC-физический, на IC-виртуальный По умолчанию OUT-IP - адрес узла. Если в /etc/cluster_services порту дать атрибут outmulti, то наружу на этот порт пойдем от имени кластера 7. DRD касается только дисков, или другие устройства тоже? (Если да, то какие - com,lpt,ethernet...)? DSK, TAPE 8. О кворуме. Достаточный кворум - контанта, или пропорционален количеству достижимых на данный момент узлов? Т.е. в 8-машинном кластере можно ли добраться вычитанием по одному до 2-узловой конфигурации? Минимальный достаточный кворум - константа. Но ее можно уменьшать в /etc/sysconfigtab Но делать это надо заранее, если останется узлов меньше, чем этот минимум, кластер повиснет в io-suspend 9. По аналогии с симлинками. Где отрабатываюыся cdsl-линки при NFS монтаже? И как обстоит дело с абсолютными и относительными линками? Ответ: Он отдается как симлинк, as is вместе с {memb}. Если я хочу его прочитать, мне придется самому быть trueunix'ом. В кластере NFS-сервер является именно кластерным, и отдает только общую файловую систему. 10. ssh IP-кластера будет кидать на одну и ту же ноду всегда? Или round-robin Если порт зарегистрирован в /etc/cluster_services как in_single (default) - то все приходы форвардятся на одну и ту же ноду (выбранную случайно. Если нода закрыла порт, начинается проброс на другую) in_multi - то приходы форвардятся по нодам в соответствии с атрибутом selection-weight (по умолчанию 3 на одну, затем 3 на другую, и так по кругу) Механическая схема --------------------------------------- eth eth CLUSTER CLUSTER ci ====== ci MEMBER1 MEMBER2 scsi/fc fs \______________|______________________________ RAID SCSI массив диск ci - Cluster interconnect - либо dedicated LAN либо MC - Memory Chanel scsi/fs - общая SCSI шина или Fiber chanel для подключения систем хранения видимых со ввсех членов кластера Всякое забавное О забеге SCSI на сервере DS15 Линейное 1*r-чтение 66M/sec Линейное 2*r-чтение 2*66M/sec Линейное 3*r-чтение 2*66M/sec Линейное 4*r-чтение 2*66M/sec Линейное 1*b-чтение 18M/sec Линейное 2*b-чтение 2*18M/sec Линейное 3*b-чтение 2*18M/sec Линейное 4*b-чтение 2*18M/sec Загрузчик УКАЗАТЕЛЬ | ADVFS-дравер | дисковая метка | партиция а, b, c Изготовление загрузчика dd if=загрузочныйдиск of=новыйдиск nhd Настройки boot у Alpha # только на старых машинах чтоб работал wwidmgr set mod diag # только на старых машинах чтоб работала shared bus set bus_probe_algorithm new set eib0_mode set eib0 FastFD # ee0 = eia0, ee1 = eib0 help wwidmgr # получаем help wwidmgr -show wwid # Получаем список юнитов Назначить диск с udid 131 в переменную wwid0, 132 в wwidmgr -clear all wwidmgr -quickset -item 1 -udid 131 wwidmgr -quickset -item 2 -udid 132 show wwid* # список распознаных fc-юнитов show n* # список видимых портов на raid-массиве это позволит увидеть их в show dev Партиширование дисков disklabel -r dsk8 # Посмотреть disklabel -re dsk8 # Отредактировать с использованием текстового редактора diskconfig # Отредактировать через GUI Партиции /dev/rdisk/dsk[0-9][a-h] # сырые dsk7c "c" партиция на весь дис'к /dev/disk/dsk[0-9][a-h] # блочные a,b,d,e,f,g,h - могут перекрываться CFS - Cluster File system. Все члены кластера видят единую (одинаковую) файловую систему. / /etc /usr и т.д. - одна на всех. Для размещения _различных_ (индивидуальных) файлов используется /cluster/members/member1/... /cluster/members/member2/... /cluster/members/{memb}/ - каталог индивидуальных файлов члена кластера /cluster/members/member --> /cluster/members/{memb} Хотя /etc/ - общий, в нем хочется некоторые файлы иметь индивидуальными. Это делается через Context Dependend Symbolic Link (CDFS) указывающих вовнутрь индивидуального дерева /etc/passwd --> ../cluster/members/{memb}/etc/passwd CFS живет поверх DRD - обращения из файловой системы к дискам проходят сквозь слой Device Request Dispatcher - если диск локальный (т.е. виден с машины напрямую - запрос обрабатывается напрямую, если диск подключен к другому члену кластера - запрос форвардится на него через Cluster Intercon╜ nect каждая файловая система работающая под CFS хостится конкретным узлом, остальные редиректят свои запросы на нее через DRD. В случае гибели узла, автоматически происходит переброс обслуживания fs на другой узел. Failover автоматический, автоматический load-balancing отсутствует. cfsmgr /filesystem - какой узел является сервером для этой fs cfsmgr -a server=system2 / - перебросить обслуживание "/" на system2 CAA - Cluster Aplication Availability Система, обеспечивающая failover для приложений - переброс на другой узел в случае неприятностей на основном узле. Single-instance - одна копия на кластер. CAA обеспечивает ей failover Multi-instance - на каждом узле по копии. Используют locking, чтобы не конфликтовать по общим ресурсам Distributed - на каждом узле по копии. Используют кластерные средства оповещения и блокировки (Distributed Lock Manager) чтобы не конфликтовать по ресурсам /var/cluster/caa/profile/*.cap - Профайлы всех CAA и network-ресурсов /var/cluster/caa/script/*.scr - Скрипты всех CAA ################# Network ############### TYPE = network NAME = net155 DESCRIPTION = Localnetwork of our office SUBNET = 155.208.157.0 FAILURE_TRESHHOLD = 0 FAILURE_INTERVAL = 0 ################# Tape, Mediachanger ############### TYPE = tape # или changer NAME = TapeRMT0 DESCRIPTION = Tape drive 1 DEVICE_NAME = /dev/tape/tape1 FAILURE_TRESHHOLD = 0 FAILURE_INTERVAL = 0 ################# Application ############### TYPE = application NAME = appl DESCRIPTION = Application Description HOSTING_MEMBERS PLACEMENT = balanced # куда уходить favored (по порядку списка, а если нет, где придется), restricted (по порядку списка, и только на нем) REQUIRED_RESOURCES OPTIONAL_RESOURCES CHECK_INTERVAL = 60 FAILURE_TRESHHOLD = 0 FAILURE_INTERVAL = 0 RESTART_ATTEMPTS = 1 FAILOVER_DELAY = AUTO_START = 1 # стартовать ли после reboot ACTION_SCRIPT = appl.scr # starting/stoping,check-running лежит в каталоге /var/cluster/caa/script Аргументы: start/stop/check, код успеха 0 SCRIPT_TIMEOUT = 60 # если скрипт не отработал за 60 сек, то fail ############################################### caa_profile создание caa-профайла caa_register регистрация caa-приложения или цаа-ресурса(netw,tape) caa_start запуск caa-приложения или цаа-ресурса(netw,tape) caa_stop останов caa-приложения (но не ресурса) caa_stat посмотреть статус caa_relocate перебросить на другой узел Кластер и сеть Кластер имеет hostname и IP кластера, дополнительно Каждый член кластера имеет свой собственный hostname и IP Cluster interconnect конфигурится как IP-доступ, с адресами узлов 10.0.0.1, 10.0.0.2,... Дублирование ethernet осуществляет встроенный в операционку механизм NetRain Интерфейсы ee0,ee1,ee2 соединяются в виртуальный интерфейс nr0, на который и вешается IP (в любой момент работает только один интерфейс, остальные - в запасе на горячей подмене) На NetRain садится ClusterInterconnect. Если потребуется резервирование интерфейсов в клиентскую сеть - это делается просто стандартными средствами операцинки, кластер в этом не участвует. Конфигурирование и инсталляция кластера Сперва конфигурируем операционку на одном сервере со всем необходимым софтом. Затем создаем кластер. При этом создается отдельные (новые) диски для общих кластерных файловых систем: / > 125М (лучше 250М) /usr/ > 680М (лучше 1000М) /var/ и т.д. И они _не совпадают_ с "затравочным" диском ка котором жила изначальная операционная система. Для каждого члена кластера создается свой собственный загрузочный диск, на котором живет его загрузочное ядро (и больше ничего). Итого, кластеру потребуются следующие диски (LUN'ы): tru64 (3Гб) - "Затравочный диск" - на него ставится операционка и софт. Нужен только при создании кластера, после сетапа кластера не используется. root (партиция 250M) - общий для всех членов кластера /usr (партиция 1000М) - общий для всех членов кластера /var (партиция 1000М) - общий для всех членов кластера /данные1,2 (по вкусу) - общие для всех членов кластера boo1 (диск 500М) - загрузочный диск для member1 /dev/disk/dsk2a -- root2_domain#root on /cluster/members/{memb}/boot_partition /dev/disk/dsk2b -- swap для member1 /dev/disk/dsk2h -- cnx партиция 1М, в самом конце диска - для синхронизационных заморочек кластера boo2 (диск 500М) - загрузочный диск для member2 quorum (диск 1М) - для голосований (кто останется жить)после распада кластера clu_create - создает кластер - все общие диски и boot1 для member1 затем грузимся с boo1, и уже с созданного member1 генерим все остальные узлы clu_add_client - при этом будут создаваться boot2, boot3,... Команды инсталляции mount /dev/disk/cdrom0c /cdrom setld -l /cdrom/TruCluster/kit # с диска Additional kit 2 umount /cdrom mount /dev/disk/cdrom0c /cdrom # NHD (New Hardware Detect) 1 of 1 cd /cdrom ; ./nhd_install umount /cdrom lmfsetup # ставим лицензию на TruCluster TCS-UA clu_create загрузка на новом узле, на нем: clu_add_member CFS и CDSL Некластерные (индивидуальные) файлы в каждой из файловой систем лежат в /fsdir-name/cluster/members/member[N]/... например /var/adm/abc.log - общекластерный файл mkcdsl -c /var/adm/abc.log перемещает его в member-specific и создает на него CDSL /var/adm/abc.log --> /var/cluster/members/{memb}/adm/abc.log mkcdsl -a /var/adm/abcde - создает локальный файл и cdsl на него на каждом узле кластера Работа с железом dsfmgr - Device Special Files manager hwmgr - Hardware manager drdmgr - Device Request Dispatcher manager hwmgr -scan scsi hwmgr -view devices hwmgr -view devices -cluster hwmgr -view hierarchy -member membername hwmgr -show scsi SCSI DEVICE DEVICE DRIVER NUM DEVICE FIRST HWID: DEVICEID HOSTNAME TYPE SUBTYPE OWNER PATH FILE VALID PATH ------------------------------------------------------------------------- 68: 0 mos214 disk none 0 1 dsk0 [0/0/0] 69: 1 mos214 disk none 0 1 dsk1 [0/1/0] 70: 2 mos214 disk none 2 1 dsk2 [0/3/0] 71: 3 mos214 cdrom none 0 1 cdrom0 [2/0/0] 75: 5 mos214 disk none 0 1 dsk4 [0/2/0] 114: 4 mos214 raid none 0 4 scp1 [6/0/0] 120: 6 mos214 disk none 0 1 dsk5 [6/3/11] 121: 7 mos214 disk none 0 1 dsk6 [6/3/12] 122: 8 mos214 disk none 2 1 dsk7 [6/3/13] 123: 9 mos214 disk none 0 1 dsk8 [6/3/14] 124: 10 mos214 disk none 0 1 dsk9 [6/3/15] 125: 11 mos214 disk none 0 1 dsk10 [6/3/16] hwmgr -delete -id 125 # удаление девайса из таблицы dsfmgr -v - verify корректность назначения драверов dsfmgr -vF - verify & fix корректность назначения драверов drdmgr -a server dsk3 Кто сервер у диска dsk3 drdmgr -h system1 -a accessnode=system2 dsk3 Назначить системе system1 доступ к диску dsk3 через system2 Выполнить на всех узлах: hwmgr -scan comp -cat scsi_bus Найти и назначить новые диски в кластере Команды мониторинга sysman -station --> cluster specific clu_get_info статус кластера и узлов clu_check_config подробная диагностика Разное Удаление узла навсегда member2# shutdown -sh member1# clu_delete_member -m 2 member1# clu_quorum для переопределения условий кворума Удаление узла временно member2: оторвать кабели member1# clu_quorum для переопределения условий кворума Переименование кластера: подправить в /etc/sysconfigtab clubase:cluster_name=newname например сиполнить на каждом узле cat > tmp-file < lbl.txt disklabel -z /dev/rdisk/dsk$2c disklabel -Rr -t advfs /dev/rdisk/dsk$2c lbl.txt /mdec/rzboot.advfs /mdec/bootrz.advfs dd if=/dev/disk/dsk$1a of=/dev/disk/dsk$2a bs=8192k dd if=/dev/disk/dsk$1b of=/dev/disk/dsk$2b bs=8192k dd if=/dev/disk/dsk$1g of=/dev/disk/dsk$2g bs=8192k dd if=/dev/disk/dsk$1h of=/dev/disk/dsk$2h bs=8192k