xg-scale

annotate xen-drbd-install.tex @ 2:ae9c8cec3315

Иправлены небольшие опечатки
и ошибки переноса <pre>-блоков,
которые возникли при автоматическом
создании файла из wiki.
author Igor Chubin <igor@chub.in>
date Tue Jul 01 16:49:38 2008 +0300 (2008-07-01)
parents
children
rev   line source
igor@0 1 \section{Подготовка кластера виртуализации с помощью xen-drbd-install}
igor@0 2
igor@0 3 \subsection{Использование}
igor@0 4 \begin{verbatim}
igor@0 5 Usage:
igor@0 6 xen-drbd-install <network> <command> (to view)
igor@0 7 xen-drbd-install <network> <command> | sh -s (to run)
igor@0 8
igor@0 9 <network> is the name of the file, which contains network description
igor@0 10
igor@0 11 Commands:
igor@0 12 make-drbd
igor@0 13 make-domains
igor@0 14 make-bridges
igor@0 15 make-links
igor@0 16 \end{verbatim}
igor@0 17
igor@0 18 \begin{itemize}
igor@0 19 \item \textbf{make-drbd} — подготовка LVM-томов и DRBD-устройств на их основе;
igor@0 20 \item \textbf{make-domains} — создание файловых систем и их наполнение;
igor@0 21 \item \textbf{make-bridges} — создание виртуальных мостов в соответствии с топологией сети;
igor@0 22 \item \textbf{make-links} — создание символических ссылок на файлы блочных устройств DRBD для удобства их использования.
igor@0 23 \end{itemize}
igor@0 24
igor@0 25 Подкоманда \textit{make-drbd} вызывается при инсталляции на обеих половинах кластера.
igor@0 26
igor@0 27 Подкоманда \textit{make-domains} вызывается при инсталляции только на одной половине кластера.
igor@0 28
igor@0 29 Подкоманды \textit{make-bridges} и \textit{make-links} вызываются каждый раз при загрузке
igor@0 30 системы.
igor@0 31
igor@0 32 \subsection{Описание топологии}
igor@0 33 Описание топологии используется как на этапе
igor@0 34 инсталляции системы, так и при её повседневной работе.
igor@0 35 Фактически, это единственный конфигурационный файл,
igor@0 36 описывающий конфигурацию виртуальной системы.
igor@0 37
igor@0 38 Конфигурационный файл имеет синтаксис языка Python.
igor@0 39 Нужно выполнить присвоение значений
igor@0 40 определённого типа ряду переменных.
igor@0 41 Значения могут быть строками, списками или ассоциативными массивами (хэшами).
igor@0 42
igor@0 43 \subsubsection{Основные параметры}
igor@0 44 \begin{itemize}
igor@0 45 \item \texttt{node1} — имя узла 1 (строка);
igor@0 46 \item \texttt{node2} — имя узла 2 (строка);
igor@0 47 \item \texttt{i\_am} — имя текущего узла; должно быть равно одному из имён \texttt{node1} или \texttt{node2} (строка);
igor@0 48 \item \texttt{node1\_ip} — IP-адрес узла 1; используется при создании конфигурационного файла DRBD (строка);
igor@0 49 \item \texttt{node2\_ip} — IP-адрес узла 2 (строка);
igor@0 50 \item \texttt{domains} — список имён всех доменов (список);
igor@0 51 \item \texttt{domain\_home} — исходное распределение доменов по узлам (хэш);
igor@0 52 \item \texttt{kernel} — путь к файлу ядра, которое должно использоваться в гостевых доменах (строка);
igor@0 53 \item \texttt{ramdisk} — путь к начальному виртуальному диску, который должен использоваться в гостевых доменах (строка);
igor@0 54 \item \texttt{mem\_table} — распределение оперативной памяти для доменов (хэш);
igor@0 55 \item \texttt{vcpus\_table} — виртуальные процессоры доменов (хэш);
igor@0 56 \item \texttt{disk\_table} — дисковые устройства доменов; \textit{подробности ниже} (хэш);
igor@0 57 \item \texttt{bridges} — виртуальные мосты (список);
igor@0 58 \item \texttt{vlans} — номера VLAN\rq{}ов, на которые отражаются виртуальные мосты; перечисляются в том порядке, соответствующем порядку мостов (список);
igor@0 59 \item \texttt{management\_vlan} — управляющий VLAN; через этот VLAN будет осуществляться доступ к узлам (строка);
igor@0 60 \item \texttt{trunk} — какой физический интерфейс используется для соединения с тегированным каналом коммутатора (строка);
igor@0 61 \item \texttt{management\_ip} — IP, который должен быть установлен на интерфейсе узла в управляющем VLAN\rq{}е (строка);
igor@0 62 \item \texttt{management\_netmask} — маска этого интерфейса (строка);
igor@0 63 \item \texttt{management\_gw} — шлюз по умолчанию для узла (строка);
igor@0 64 \item \texttt{vbridges\_table} — сетевая конфигурацию доменов; \textit{поробности ниже} (хэш).
igor@0 65 \end{itemize}
igor@0 66
igor@0 67 Принцип описания всех параметром интуитивно понятен,
igor@0 68 за исключением двух, требующих некоторых пояснений.
igor@0 69
igor@0 70 \paragraph{Параметр disk\_table}
igor@0 71 Переменная \texttt{disk\_table} должна содержать ассоциативный массив,
igor@0 72 где в качестве ключей используются названия доменов,
igor@0 73 а в качестве их значений — списки. Каждый список описывает
igor@0 74 какие дисковые устройства принадлежат домену.
igor@0 75 \begin{verbatim}
igor@0 76 ['drbd8:mail:2G', 'drbd9:maildir:100G']
igor@0 77 \end{verbatim}
igor@0 78 Описание каждого виртуального дискового устройства состоит
igor@0 79 из трёх элементов:
igor@0 80 \begin{enumerate}
igor@0 81 \item Имени блочного файла базового DRBD-устройства;
igor@0 82 \item Имени дискового устройства (в частности, это имя используется как название логического тома LVM, поверх которого создаётся DRBD-устройство);
igor@0 83 \item Размера тома при его создании (впоследствии размер тома можно изменить, но не через конфигурационный файл и вообще без помощи xen-drbd).
igor@0 84 \end{enumerate}
igor@0 85 Значение размера используется только на этапе генерации системы.
igor@0 86 Впослесдствии это поле может принимать любые значения — оно игнорируется.
igor@0 87
igor@0 88 \paragraph{Параметр vbridges\_table}
igor@0 89
igor@0 90 Переменная \texttt{vbridges\_table} должна содержать ассоциативный массив,
igor@0 91 где в качестве ключей используются названия доменов,
igor@0 92 а в качестве их значений — списки. Каждый список описывает
igor@0 93 к каким мостам подключаются сетевые интерфейсы домена.
igor@0 94
igor@0 95 Например, этот список:
igor@0 96 \begin{verbatim}
igor@0 97 ['xenbr501', 'xenbr256', 'xenbr257']
igor@0 98 \end{verbatim}
igor@0 99 говорит о том, что у домена будет три сетевых интерфейса;
igor@0 100 интерфейс \textit{eth0} домена должен быть подключён к мосту \textit{xenbr501},
igor@0 101 интерфейс \textit{eth1} — к мосту \textit{xenbr256},
igor@0 102 а интерфейс \textit{eth2} — к мосту \textit{xenbr257}.
igor@0 103
igor@0 104 \subsubsection{Инсталляционные параметры}
igor@0 105
igor@0 106 В гостевые домены устанавливается операционная система Debian GNU/Linux.
igor@0 107 Если вы хотите использовать другую систему,
igor@0 108 вы можете попробовать модифицировать скрипт самостоятельно или связаться с его разработчиками.
igor@0 109
igor@0 110 Эти параметры используются только при генерировании доменов.
igor@0 111
igor@0 112 \begin{itemize}
igor@0 113 \item \texttt{ip\_address\_table} — IP-адресов, которые будут установлены на интерфейсах eth0 гостевых доменов (хэш);
igor@0 114 \item \texttt{ip\_network} — сеть на интерфейсе eth0 гостевого домена (строка);
igor@0 115 \item \texttt{ip\_netmask} — сетевая маска интерфейса eth0 гостевого домена (строка);
igor@0 116 \item \texttt{ip\_gateway} — основной шлюз для гостевых доменов (строка);
igor@0 117 \item \texttt{domain\_name} — домен DNS, который указывается в качестве основного для гостевых доменов (строка);
igor@0 118 \item \texttt{ip\_nameserver} — DNS-сервер, который должен использоваться в качестве основного в гостевых доменах (строка);
igor@0 119 \item \texttt{debian\_release} — какой дистрибутив Debian GNU/Linux необходимо использовать при подготовке гостевых доменов (строка);
igor@0 120 \item \texttt{debian\_mirror} — какой репозиторий Debian GNU/Linux должен использоваться для подготовке гостевых доменов (строка);
igor@0 121 \item \texttt{apt\_get\_install} — какие пакеты должны быть сразу же установлены во всех гостевые домены (строка);
igor@0 122 \item \texttt{lvm\_vg\_name} — название группы томов, в которой будут создаваться логические тома для Xen (строка);
igor@0 123 \item \texttt{lvm\_pv\_names} — физические тома, которые должны быть объединены в группу томов (строка);
igor@0 124 \item \texttt{lvm\_lv\_drbd\_meta\_name} — название тома LVM, который будет использоваться как метадиск для DRBD (строка);
igor@0 125 \item \texttt{lvm\_lv\_drbd\_meta\_size} — размер тома LVM, который будет использоваться как метадиск DRBD (строка);
igor@0 126 \item \texttt{mkfs\_options} — опции mkfs, которые необходимо использовать при создании файловых систем (используется файловая система ext3).
igor@0 127 \end{itemize}
igor@0 128
igor@0 129 \subsection{Пример описания топологии}
igor@0 130
igor@0 131
igor@0 132 \begin{verbatim}
igor@0 133 node1='debian'
igor@0 134 node2='mirror'
igor@0 135 #i_am=node1
igor@0 136
igor@0 137 from socket import gethostname; i_am=gethostname()
igor@0 138 if i_am != node1 and i_am != node2:
igor@0 139 raise ValueError, "My hostname (%s) should be equal \
igor@0 140 to node1 (%s) or node2 (%s)" % (i_am, node1, node2)
igor@0 141
igor@0 142 ip_address = {
igor@0 143 node1: '10.0.80.220',
igor@0 144 node2: '10.0.80.221',
igor@0 145 }
igor@0 146
igor@0 147 node1_ip=ip_address[node1]
igor@0 148 node2_ip=ip_address[node2]
igor@0 149
igor@0 150 domains=['gw','igw','dns','vpn','apt','pgw','ldap','mail','uucp','samba',]
igor@0 151
igor@0 152 domain_home = {
igor@0 153 node1 : ['dns','gw','igw','pgw','ldap','mail','vpn','uucp','apt'],
igor@0 154 node2 : ['samba'],
igor@0 155 }
igor@0 156
igor@0 157 kernel = "/boot/vmlinuz-2.6.18-4-xen-686"
igor@0 158 ramdisk = "/boot/initrd.img-2.6.18-4-xen-686-domU"
igor@0 159
igor@0 160 mem_table={
igor@0 161 'dns' :64,
igor@0 162 'gw' :64,
igor@0 163 'igw' :128,
igor@0 164 'pgw' :64,
igor@0 165 'ldap' :64,
igor@0 166 'mail' :256,
igor@0 167 'samba' :512,
igor@0 168 'vpn' :192,
igor@0 169 'uucp' :128,
igor@0 170 'apt' :128,
igor@0 171 }
igor@0 172
igor@0 173 vcpus_table={
igor@0 174 'dns' :1,
igor@0 175 'gw' :1,
igor@0 176 'igw' :1,
igor@0 177 'pgw' :1,
igor@0 178 'ldap' :1,
igor@0 179 'mail' :4,
igor@0 180 'samba' :4,
igor@0 181 'vpn' :4,
igor@0 182 'uucp' :4,
igor@0 183 'apt' :2,
igor@0 184 }
igor@0 185
igor@0 186 disk_table={
igor@0 187 'gw' : ['drbd1:gw:2G'],
igor@0 188 'igw' : ['drbd2:igw:2G'],
igor@0 189 'dns' : ['drbd3:dns:2G'],
igor@0 190 'vpn' : ['drbd4:vpn:2G'],
igor@0 191 'apt' : ['drbd5:apt:10G'],
igor@0 192 'pgw' : ['drbd6:pgw:2G'],
igor@0 193 'ldap' : ['drbd7:ldap:2G'],
igor@0 194 'mail' : ['drbd8:mail:2G','drbd9:maildir:100G'],
igor@0 195 'uucp' : ['drbd11:uucp:3G'],
igor@0 196 'samba' : [
igor@0 197 'drbd12:samba:3G',
igor@0 198 'drbd13:samba-home:100G',
igor@0 199 'drbd17:samba-profiles:100G'
igor@0 200 ],
igor@0 201 }
igor@0 202
igor@0 203 bridges=['tagged0','xenbr1','xenbr256','xenbr257','xenbr3','xenbr4','xenbr501']
igor@0 204 vlans= ['tagged', 1, 256, 257, 3, 4, 501 ]
igor@0 205 management_vlan=1
igor@0 206 trunk='eth0'
igor@0 207 management_ip=ip_address[i_am]
igor@0 208 management_gw='10.0.80.253'
igor@0 209
igor@0 210 vbridges_table={
igor@0 211 'dns' : ['xenbr3'],
igor@0 212 'gw' : ['xenbr501', 'xenbr256', 'xenbr257'],
igor@0 213 'igw' : ['tagged0','xenbr3'],
igor@0 214 'pgw' : ['xenbr3','xenbr501'],
igor@0 215 'ldap' : ['xenbr3'],
igor@0 216 'mail' : ['xenbr3'],
igor@0 217 'samba' : ['tagged0', 'xenbr3'],
igor@0 218 'vpn' : ['xenbr3'],
igor@0 219 'apt' : ['xenbr3'],
igor@0 220 'uucp' : ['xenbr3'],
igor@0 221 }
igor@0 222
igor@0 223 # FOR INSTALLATION ONLY
igor@0 224
igor@0 225 ip_network="10.20.30"
igor@0 226 ip_netmask="255.255.255.224"
igor@0 227 domain_name="crimea.example.com"
igor@0 228 ip_nameserver="10.20.30.4"
igor@0 229 ip_gateway="10.20.30.6"
igor@0 230
igor@0 231 ip_address_table={
igor@0 232 "dns" :"10.20.30.4",
igor@0 233 "gw" :"10.20.30.254",
igor@0 234 "igw" :"10.20.30.3",
igor@0 235 "pgw" :"10.20.30.6",
igor@0 236 "ldap" :"10.20.30.11",
igor@0 237 "mail" :"10.20.30.9",
igor@0 238 "samba" :"10.20.30.1",
igor@0 239 "vpn" :"10.20.30.5",
igor@0 240 "apt" :"10.20.30.7",
igor@0 241 "uucp" :"10.20.30.16",
igor@0 242 "jabber":"10.20.30.12",
igor@0 243
igor@0 244 }
igor@0 245
igor@0 246 debian_release="lenny"
igor@0 247 debian_mirror="http://debian.org.ua/debian/"
igor@0 248 apt_get_install="less tcpdump dnsutils vim ntp screen snmpd libc6-xen openssh-server"
igor@0 249
igor@0 250 lvm_vg_name="TURBO"
igor@0 251 lvm_pv_names="/dev/md2"
igor@0 252 lvm_lv_drbd_meta_name="meta"
igor@0 253 lvm_lv_drbd_meta_size="5G"
igor@0 254 mkfs_options="-m1"
igor@0 255 \end{verbatim}
igor@0 256
igor@0 257 \subsection{Пример использования}
igor@0 258 Создаём файл с описанием топологии:
igor@0 259 \begin{verbatim}
igor@0 260 %# vi topology1.py
igor@0 261 \end{verbatim}
igor@0 262
igor@0 263 Проверяем, что топология была распознана верно:
igor@0 264 \begin{verbatim}
igor@0 265 %# make-drbd-install topology1 make-drbd | less
igor@0 266 \end{verbatim}
igor@0 267
igor@0 268 Если ошибок не обнаружено,
igor@0 269 выполняем
igor@0 270 \begin{verbatim}
igor@0 271 %# make-drbd-install topology1 make-drbd | sh -s
igor@0 272 \end{verbatim}
igor@0 273
igor@0 274 Аналогичным образом выполняем команду
igor@0 275 на втором узле кластера:
igor@0 276 \begin{verbatim}
igor@0 277 %# make-drbd-install topology1 make-drbd
igor@0 278 \end{verbatim}
igor@0 279
igor@0 280 В результате на обоих узлах:
igor@0 281 \begin{enumerate}
igor@0 282 \item Настраивается система LVM (физические тома, группы томов, логические тома);
igor@0 283 \item Создаётся конфигурационный файл DRBD;
igor@0 284 \item Поверх одного из логических томов создаётся мета-диск для DRBD-устройств;
igor@0 285 \item Поверх логических томов LVM создаются DRBD-устройства.
igor@0 286 \end{enumerate}
igor@0 287
igor@0 288 \subsubsection{Создание и заполнение файловых систем доменов}
igor@0 289 Теперь нужно наполнить созданные разделы.
igor@0 290
igor@0 291 Наполнение выполняется только на одном из узлов кластера.
igor@0 292 Второй получает все данные автоматически с помощью DRBD.
igor@0 293
igor@0 294 Проверьте что генерируется правильный скрипт:
igor@0 295
igor@0 296 \begin{verbatim}
igor@0 297 %# make-drbd-install topology1 make-domains | less
igor@0 298 \end{verbatim}
igor@0 299
igor@0 300 Если всё в порядке, можно его выполнить:
igor@0 301
igor@0 302 \begin{verbatim}
igor@0 303 %# make-drbd-install topology1 make-domains | sh -s
igor@0 304 \end{verbatim}
igor@0 305
igor@0 306 В результате выполнения будут:
igor@0 307 \begin{itemize}
igor@0 308 \item созданы файловые системы доменов;
igor@0 309 \item файловые системы доменов смонтированы;
igor@0 310 \item выполнится наполнение файловых систем (с помощью debootstrap);
igor@0 311 \item конфигурационные файлы внутри файловых систем (\texttt{/etc/fstab}, \texttt{/etc/network} и т.д.) модфицированы в соответствии с заданными в описании топологии значениями;
igor@0 312 \item файловые системы доменов размонтированы.
igor@0 313 \end{itemize}
igor@0 314
igor@0 315 Теперь в системе есть LVM-тома отформатированные и наполненные образами виртуальных систем.
igor@0 316 Тома синхронизируются между узлами с помощью DRBD.
igor@0 317
igor@0 318 \subsection{Дополнительная информация}
igor@0 319 \begin{itemize}
igor@0 320 \item \htmladdnormallinkfoot{xen-drbd-install}{http://xgu.ru/wiki/xen-drbd-install} (рус.)
igor@0 321 \end{itemize}
igor@0 322