Проект

Общее

Профиль

НАСТРОЙКА » История » Версия 15

« Предыдущее - Версия 15/36 (Разница(diff)) - Следующее » - Текущая версия
Dmitry Chernyak, 19.03.2015 02:17


НАСТРОЙКА

OVERVIEW | INSTALL | BUILD-ISO | SETUP | OPERATIONS | GITMAGIC | LICENSE | STATUS
на Русском: ОБЗОР | СБОРКА-ISO | УСТАНОВКА | НАСТРОЙКА | ОПЕРАЦИИ | МАГИЯ GIT | ЛИЦЕНЗИЯ | СОСТОЯНИЕ

Перед началом настройки убедитесь, что обе ноды включены и функционируют.

Если Вы планируете использовать второй сетевой адаптер для drbd линка, перед инициализацией кластера Вы должны настроить его.
Войдите на первую ноду через консоль или по ssh. (При соединении по ssh, из-за недоступности в этот момент DNS-сервиса, перед запросом пароля возможна
пауза до минуты).

Настройка сети

Схемы настройки сети могут сильно различаться в зависимости от условий установки и назначения кластера.
Здесь приведена типовая схема с двумя интерфейсами - один для интерлинка (ganeti и drbd), а другой для локальной сети.

Эта схема предпочтительна для большинства ситуаций.
Она не требует наличия гигабитных коммутаторов, предоставляет неплохую надежность и производительность при низких затратах.
Два гигабитных интерфейса на узлах подключены друг к другу напрямую или через гигабитный коммутатор(если Вы хотите более чем 2 узла в кластере).
Два других интерфейса подключаются к LAN.
В этой схеме сбой в локальной сети не влияет на работоспособность кластера.
Пример конфигурации /etc/network/interfaces:

auto xen-br0
iface xen-br0 inet static
    address 192.168.236.1
    netmask 255.255.255.0
    network 192.168.236.0
    broadcast 192.168.236.255
        bridge_ports eth0
        bridge_stp off
        bridge_fd 0
#       uncomment it to enable jumbo frame
#    up ifconfig eth0 mtu 9000

auto xen-lan
iface xen-lan inet static
    address 192.168.5.55
    netmask 255.255.255.0
    network 192.168.5.0
    broadcast 192.168.5.255
    gateway 192.168.5.1
    bridge_ports eth1
    bridge_stp off
    bridge_fd 0

Мост xen-br0 используется для drbd и ganeti обмена, он автоматически настраивается при установке узлов.
Также адрес DNS сервера настроен установщиком - это будет адрес нашей сервисной машины(sci).
Мост xen-lan используется для подключения к локальной сети и должен быть настроен вручную (в файле interfaces есть заготовка).
В такой конфигурации Вы должны заполнить следующие переменные в sci.conf:
NODE1_IP - Уже настроено установщиком.
NODE1_NAME - Уже настроено установщиком.
NODE2_IP - укажите ip адрес второй ноды на интерлинке(например, 192.168.236.2)
NODE2_NAME - укажите имя второй ноды(напр. gnt2)
NODE1_LAN_IP - ip адрес первой ноды в локальной сети. Он будет доступен в днс под именем $NODE1_NAME-lan.$DOMAIN
NODE2_LAN_IP - ip адрес второй ноды в локальной сети. Он будет доступен в днс под именем $NODE2_NAME-lan.$DOMAIN
CLUSTER_IP - Адрес кластера в локальной сети. НЕ должен совпадать с любым другим существующим адресом. Напр. 192.168.5.35.
CLUSTER_NAME - Имя кластера в локальной сети. Будет доступно в днс под $CLUSTER_NAME.
SCI_LAN_IP - если Вы хотите, чтобы виртуальная машина sci присутствовала в lan, назначьте этот адрес, напр. 192.168.5.95

На странице Настройка сети вы можете посмотреть и выбрать другие схемы на разные случаи жизни.

Задание параметров для кластера

Для задания параметров следует отредактировать /etc/sci/sci.conf

Большинство параметров уже было описано выше в секции "Настройка сети".
Здесь указаны дополнительные замечания по поводу настройки:

  • Вы должны указывать параметры двух узлов в соответствии с тем, как Вы их настроили.
  • ПРИМЕЧАНИЕ: Вы можете настроить кластер и с одним узлом. В этом случае оставьте переменные NODE2_* пустыми.
    По факту это опасная конфигурация, о чем Вы и будете предупреждены во время инициализации кластера.
  • Вы обязательно должны указать имя кластера и его ip адрес
  • NODE#_SAN_IP должен быть указан для обоих нод или ни для одной.
  • NODE#_LAN_IP должен быть указан для обоих нод или ни для одной.
  • Если Вы не имеете подключения к интернету или имеете локальные зеркала для apt, скорректируйте переменные APT_*
  • Если Вы хотите передавать запросы на сторонние DNS сервера, заполните DNS_FORWARDERS (не забудьте на конце ';').
  • MASTER_NETDEV - имя сетевого интерфейса для поднятия ip адреса кластера. По умолчанию определяется автоматически.
  • LAN_NETDEV - Сетевой интерфейс по умолчанию для виртуальных машин. По умолчанию определяется автоматически.
  • RESERVED_VOLS - Список lvm томов, игнорируемых ganeti. Разделяется запятой. Следует указывать VG для каждого элемента списка.

Инициализация кластера

Удостоверьтесь, что на обоих узлах установлено одинаковое время.

# date
Thu Mar 12 12:23:10 MSK 2015

Если нет - установите его командой

# date -s "12 MAR 2015 12:23:00" 

Запустите:

# sci-setup cluster

Проверьте выведенные настройке и примите их, либо скорректируйте и запустите скрипт еще раз.
После принятия настроек запустится процесс инициализации кластера.
Далее Вы должны принять ssh ключ для второй ноды и набрать root пароль для второй ноды.
В конце Вы увидите вывод команды диагностики кластера. Он будет выглядеть наподобие этого:

Verify
Wed Jan 12 15:36:10 2011 * Verifying global settings
Wed Jan 12 15:36:10 2011 * Gathering data (1 nodes)
Wed Jan 12 15:36:11 2011 * Verifying node status
Wed Jan 12 15:36:11 2011 * Verifying instance status
Wed Jan 12 15:36:11 2011 * Verifying orphan volumes
Wed Jan 12 15:36:11 2011 * Verifying orphan instances
Wed Jan 12 15:36:11 2011 * Verifying N+1 Memory redundancy
Wed Jan 12 15:36:11 2011 * Other Notes
Wed Jan 12 15:36:11 2011 * Hooks Results
Node                    DTotal  DFree MTotal MNode MFree Pinst Sinst
gnt1.ganeti.example.org 100.0G 100.0G  1020M  379M  625M     0     0
gnt2.ganeti.example.org 100.0G 100.0G  1020M  379M  625M     0     0
If all is ok, proceed with /usr/local/sbin/sci-setup service

Установка сервисной виртуальной машины

Имя хоста для нашей сервисной виртуальной машине - sci, также имеются несколько алиасов.
Ее основной ip адрес берется из /etc/resolv.conf на первой ноде.
Эта виртуальная машина должна присутствовать в /etc/hosts на обоих нодах.

Запустите:

# sci-setup service

Вы увидите индикатор процесса синхронизации drbd дисков, затем:

* running the instance OS create scripts...

appears. The further may take a while. The process finishes with
* starting instance...

Теперь Вы можете подключиться к консоли виртуальной машины:

# gnt-instance console sci

Логиньтесь под рутом, пароль пустой.
ПРИМЕЧАНИЕ: Т.е. рутовый пароль пуст, ssh соединения запрещены. Установите пароль и установите openssh-server.

Автонастройка сервисной машины

Система будет настроена автоматически посредством puppet.
Вы можете следить за процессом выполнения в /var/log/daemon.log.
Поначалу в системе не будет команды less, но Вы можете использовать more, cat, tail или tail -f
пока less не будет автоматически установлен.
В процессе автонастройки может потребоваться перезапустить puppet. По умолчанию он запускается каждые полчаса.
При желании можно перезапустить его руками:

# /etc/init.d/puppet restart

Повторяйте это раз в несколько минут, пока не увидите, что puppet больше ничего не делает.

Установка новых виртуальных машин

Новые виртуальные машины добавляются стандартными командами ganeti:

gnt-instance add -t drbd -o debootstrap+default -s 10g -B memory=256m -n NODE1_NAME:NODE2_NAME INSTANCE_NAME
Однако, наш проект дополняет процесс несколькими специфичными хуками:
  1. На каждую машину ставится puppet для автоконфигурации, openssh-client для обмена файлами и т.д.
  2. На каждую машину ставится pygrub.
  3. Сетевые настройки для машины могут быть назначены автоматически(см. ниже).

Автонастройка сети на виртуальных машинах.

Если Вам необходимо, чтобы виртуальные машины могли быть подключены к нескольким сетям и Вам необходимы статичные
настройки сети на них, Вы должны заполнить файл /etc/ganeti/networks всеми нужными для подключения машин сетями.
Каждая строчка файла имеет формат:

NETWORK NETMASK BROADCAST GATEWAY

Ganeti instance debootstrap хук смотрит в этот файл, находит сеть для заданного ip и настраивает сеть
на виртуальной машине автоматически.

ПРИМЕЧАНИЕ: Этот файл заполняется при инициализации кластера, так что в большинстве случаев Вам не потребуется
туда что-то добавлять.
ПРИМЕЧАНИЕ: файл networks должен присутствовать на каждой ноде (еще не автоматизировано).

Добавление фильтра в настройки lvm:

При дефолтных настройках lvm многие операции с кластером могут быть сильно замедленными при большом количестве lvm томов.
Чтобы этого избежать, нужно в /etc/lvm/lvm.conf добавить фильтр (пример для ноды, использующей mdadm):

filter = [ "a/md/", "r/.*/" ]

и выполнить
vgscan

Добавление дополнительной VG

Если в сервере есть два типа дисков, например 2xSATA + 8xSAS, то необходимо иницииализировать вторую VG и (при необходимости) сделать ее основной для создания виртуальных машин:

mdadm --create -n7 -x1 -l10 /dev/md3 /dev/sdc1 /dev/sdd1 /dev/sde1 /dev/sdf1 /dev/sdg1 /dev/sdh1 /dev/sdi1 /dev/sdj1
vgcreate xenvg1 /dev/md3
gnt-cluster modify --vg-name=xenvg1 --disk-parameters=drbd:metavg=xenvg1

Статья про сравнение трех вариантов offset в raid10 (в SCI используется дефолтный, NEAR):
http://www.ilsistemista.net/index.php/linux-a-unix/35-linux-software-raid-10-layouts-performance-near-far-and-offset-benchmark-analysis.html?start=1

Настройка Hugepages

Операции с кластером

Читайте в ОПЕРАЦИИ.