xg-scale

diff xen-drbd-install.tex @ 4:253d66dd74bb

Добавлено подробное описание управления памятью домена и выделением устройств домену
author Igor Chubin <igor@chub.in>
date Sun Jul 06 23:27:46 2008 +0300 (2008-07-06)
parents
children
line diff
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/xen-drbd-install.tex	Sun Jul 06 23:27:46 2008 +0300
     1.3 @@ -0,0 +1,322 @@
     1.4 +\section{Подготовка кластера виртуализации с помощью xen-drbd-install}
     1.5 +
     1.6 +\subsection{Использование}
     1.7 +\begin{verbatim}
     1.8 +Usage:
     1.9 +    xen-drbd-install <network> <command>            (to view)
    1.10 +    xen-drbd-install <network> <command> | sh -s    (to run)
    1.11 +
    1.12 +    <network> is the name of the file, which contains network description
    1.13 +
    1.14 +Commands:
    1.15 +    make-drbd
    1.16 +    make-domains
    1.17 +    make-bridges
    1.18 +    make-links
    1.19 +\end{verbatim}
    1.20 +
    1.21 +\begin{itemize}
    1.22 +\item  \textbf{make-drbd} — подготовка LVM-томов и DRBD-устройств на их основе;
    1.23 +\item  \textbf{make-domains} — создание файловых систем и их наполнение;
    1.24 +\item  \textbf{make-bridges} — создание виртуальных мостов в соответствии с топологией сети;
    1.25 +\item  \textbf{make-links} — создание символических ссылок на файлы блочных устройств DRBD для удобства их использования.
    1.26 +\end{itemize}
    1.27 +
    1.28 +Подкоманда \textit{make-drbd} вызывается при инсталляции на обеих половинах кластера.
    1.29 +
    1.30 +Подкоманда \textit{make-domains} вызывается при инсталляции только на одной половине кластера.
    1.31 +
    1.32 +Подкоманды \textit{make-bridges} и \textit{make-links} вызываются каждый раз при загрузке
    1.33 +системы.
    1.34 +
    1.35 +\subsection{Описание топологии}
    1.36 +Описание топологии используется как на этапе 
    1.37 +инсталляции системы, так и при её повседневной работе.
    1.38 +Фактически, это единственный конфигурационный файл, 
    1.39 +описывающий конфигурацию виртуальной системы.
    1.40 +
    1.41 +Конфигурационный файл имеет синтаксис языка Python.
    1.42 +Нужно выполнить присвоение значений
    1.43 +определённого типа ряду переменных.
    1.44 +Значения могут быть строками, списками или ассоциативными массивами (хэшами).
    1.45 +
    1.46 +\subsubsection{Основные параметры}
    1.47 +\begin{itemize}
    1.48 +\item  \texttt{node1} — имя узла 1 (строка);
    1.49 +\item  \texttt{node2} — имя узла 2 (строка);
    1.50 +\item  \texttt{i\_am} — имя текущего узла; должно быть равно одному из имён \texttt{node1} или \texttt{node2} (строка);
    1.51 +\item  \texttt{node1\_ip} — IP-адрес узла 1; используется при создании конфигурационного файла DRBD (строка);
    1.52 +\item  \texttt{node2\_ip} — IP-адрес узла 2  (строка);
    1.53 +\item  \texttt{domains} — список имён всех доменов (список);
    1.54 +\item  \texttt{domain\_home} — исходное распределение доменов по узлам (хэш);
    1.55 +\item  \texttt{kernel} — путь к файлу ядра, которое должно использоваться в гостевых доменах (строка);
    1.56 +\item  \texttt{ramdisk} — путь к начальному виртуальному диску, который должен использоваться в гостевых доменах (строка);
    1.57 +\item  \texttt{mem\_table} — распределение оперативной памяти для доменов (хэш);
    1.58 +\item  \texttt{vcpus\_table} — виртуальные процессоры доменов (хэш);
    1.59 +\item  \texttt{disk\_table} — дисковые устройства доменов; \textit{подробности ниже} (хэш);
    1.60 +\item  \texttt{bridges} — виртуальные мосты (список);
    1.61 +\item  \texttt{vlans} — номера VLAN\rq{}ов, на которые отражаются виртуальные мосты; перечисляются в том порядке, соответствующем порядку мостов (список);
    1.62 +\item  \texttt{management\_vlan} — управляющий VLAN; через этот VLAN будет осуществляться доступ к узлам (строка);
    1.63 +\item  \texttt{trunk} — какой физический интерфейс используется для соединения с тегированным каналом коммутатора (строка);
    1.64 +\item  \texttt{management\_ip} — IP, который должен быть установлен на интерфейсе узла в управляющем VLAN\rq{}е (строка);
    1.65 +\item  \texttt{management\_netmask} — маска этого интерфейса (строка);
    1.66 +\item  \texttt{management\_gw} — шлюз по умолчанию для узла (строка);
    1.67 +\item  \texttt{vbridges\_table} — сетевая конфигурацию доменов; \textit{поробности ниже} (хэш).
    1.68 +\end{itemize}
    1.69 +
    1.70 +Принцип описания всех параметром интуитивно понятен, 
    1.71 +за исключением двух, требующих некоторых пояснений.
    1.72 +
    1.73 +\paragraph{Параметр disk\_table}
    1.74 +Переменная \texttt{disk\_table} должна содержать ассоциативный массив, 
    1.75 +где в качестве ключей используются названия доменов, 
    1.76 +а в качестве их значений — списки. Каждый список описывает
    1.77 +какие дисковые устройства принадлежат домену.
    1.78 +\begin{verbatim}
    1.79 +  ['drbd8:mail:2G', 'drbd9:maildir:100G']
    1.80 +\end{verbatim}
    1.81 +Описание каждого виртуального дискового устройства состоит 
    1.82 +из трёх элементов:
    1.83 +\begin{enumerate}
    1.84 +\item Имени блочного файла базового DRBD-устройства;
    1.85 +\item Имени дискового устройства (в частности, это имя используется как название логического тома LVM, поверх которого создаётся DRBD-устройство);
    1.86 +\item Размера тома при его создании (впоследствии размер тома можно изменить, но не через конфигурационный  файл и вообще без помощи xen-drbd).
    1.87 +\end{enumerate}
    1.88 +Значение размера используется только на этапе генерации системы. 
    1.89 +Впослесдствии это поле может принимать любые значения — оно игнорируется.
    1.90 +
    1.91 +\paragraph{Параметр vbridges\_table}
    1.92 +
    1.93 +Переменная \texttt{vbridges\_table} должна содержать ассоциативный массив, 
    1.94 +где в качестве ключей используются названия доменов, 
    1.95 +а в качестве их значений — списки. Каждый список описывает
    1.96 +к каким мостам подключаются сетевые интерфейсы домена.
    1.97 +
    1.98 +Например, этот список:
    1.99 +\begin{verbatim}
   1.100 +  ['xenbr501', 'xenbr256', 'xenbr257']
   1.101 +\end{verbatim}
   1.102 +говорит о том, что у домена будет три сетевых интерфейса;
   1.103 +интерфейс \textit{eth0} домена должен быть подключён к мосту \textit{xenbr501},
   1.104 +интерфейс \textit{eth1} — к мосту \textit{xenbr256}, 
   1.105 +а интерфейс \textit{eth2} — к мосту \textit{xenbr257}.
   1.106 +
   1.107 +\subsubsection{Инсталляционные параметры}
   1.108 +
   1.109 +В гостевые домены устанавливается операционная система Debian GNU/Linux.
   1.110 +Если вы хотите использовать другую систему, 
   1.111 +вы можете попробовать модифицировать скрипт самостоятельно или связаться с его разработчиками.
   1.112 +
   1.113 +Эти параметры используются только при генерировании доменов.
   1.114 +
   1.115 +\begin{itemize}
   1.116 +\item  \texttt{ip\_address\_table} — IP-адресов, которые будут установлены на интерфейсах eth0 гостевых доменов (хэш);
   1.117 +\item  \texttt{ip\_network} — сеть на интерфейсе eth0 гостевого домена (строка);
   1.118 +\item  \texttt{ip\_netmask} — сетевая маска интерфейса eth0 гостевого домена (строка);
   1.119 +\item  \texttt{ip\_gateway} — основной шлюз для гостевых доменов (строка);
   1.120 +\item  \texttt{domain\_name} — домен DNS, который указывается в качестве основного для гостевых доменов (строка);
   1.121 +\item  \texttt{ip\_nameserver} — DNS-сервер, который должен использоваться в качестве основного в гостевых доменах (строка);
   1.122 +\item  \texttt{debian\_release} — какой дистрибутив Debian GNU/Linux необходимо использовать при подготовке гостевых доменов (строка);
   1.123 +\item  \texttt{debian\_mirror} — какой репозиторий Debian GNU/Linux должен использоваться для подготовке гостевых доменов (строка);
   1.124 +\item  \texttt{apt\_get\_install} — какие пакеты должны быть сразу же установлены во всех гостевые домены (строка);
   1.125 +\item  \texttt{lvm\_vg\_name} — название группы томов, в которой будут создаваться логические тома для Xen (строка);
   1.126 +\item  \texttt{lvm\_pv\_names} — физические тома, которые должны быть объединены в группу томов (строка);
   1.127 +\item  \texttt{lvm\_lv\_drbd\_meta\_name} — название тома LVM, который будет использоваться как метадиск для DRBD (строка);
   1.128 +\item  \texttt{lvm\_lv\_drbd\_meta\_size} — размер тома LVM, который будет использоваться как метадиск DRBD (строка);
   1.129 +\item  \texttt{mkfs\_options} — опции mkfs, которые необходимо использовать при создании файловых систем (используется файловая система ext3).
   1.130 +\end{itemize}
   1.131 +
   1.132 +\subsection{Пример описания топологии}
   1.133 +
   1.134 +
   1.135 +\begin{verbatim}
   1.136 +   node1='debian'
   1.137 +   node2='mirror'
   1.138 +   #i_am=node1
   1.139 +
   1.140 +   from socket import gethostname; i_am=gethostname()
   1.141 +   if i_am != node1 and i_am != node2:
   1.142 +       raise ValueError, "My hostname (%s) should be equal \
   1.143 +       to node1 (%s) or node2 (%s)" % (i_am, node1, node2)
   1.144 +
   1.145 +   ip_address = {
   1.146 +       node1: '10.0.80.220',
   1.147 +       node2: '10.0.80.221',
   1.148 +   }
   1.149 +
   1.150 +   node1_ip=ip_address[node1]
   1.151 +   node2_ip=ip_address[node2]
   1.152 +
   1.153 +   domains=['gw','igw','dns','vpn','apt','pgw','ldap','mail','uucp','samba',]
   1.154 +
   1.155 +   domain_home = {
   1.156 +           node1 : ['dns','gw','igw','pgw','ldap','mail','vpn','uucp','apt'],
   1.157 +           node2 : ['samba'],
   1.158 +       }
   1.159 +
   1.160 +   kernel = "/boot/vmlinuz-2.6.18-4-xen-686"
   1.161 +   ramdisk = "/boot/initrd.img-2.6.18-4-xen-686-domU"
   1.162 +
   1.163 +   mem_table={
   1.164 +       'dns'   :64,
   1.165 +       'gw'    :64,
   1.166 +       'igw'   :128,
   1.167 +       'pgw'   :64,
   1.168 +       'ldap'  :64,
   1.169 +       'mail'  :256,
   1.170 +       'samba' :512,
   1.171 +       'vpn'   :192,
   1.172 +       'uucp'  :128,
   1.173 +       'apt'   :128,
   1.174 +   }
   1.175 +
   1.176 +   vcpus_table={
   1.177 +       'dns'   :1,
   1.178 +       'gw'    :1,
   1.179 +       'igw'   :1,
   1.180 +       'pgw'   :1,
   1.181 +       'ldap'  :1,
   1.182 +       'mail'  :4,
   1.183 +       'samba' :4,
   1.184 +       'vpn'   :4,
   1.185 +       'uucp'  :4,
   1.186 +       'apt'   :2,
   1.187 +   }
   1.188 +
   1.189 +   disk_table={
   1.190 +       'gw'        : ['drbd1:gw:2G'], 
   1.191 +       'igw'       : ['drbd2:igw:2G'], 
   1.192 +       'dns'       : ['drbd3:dns:2G'], 
   1.193 +       'vpn'       : ['drbd4:vpn:2G'],
   1.194 +       'apt'       : ['drbd5:apt:10G'],
   1.195 +       'pgw'       : ['drbd6:pgw:2G'],
   1.196 +       'ldap'      : ['drbd7:ldap:2G'], 
   1.197 +       'mail'      : ['drbd8:mail:2G','drbd9:maildir:100G'], 
   1.198 +       'uucp'      : ['drbd11:uucp:3G'], 
   1.199 +       'samba'     : [ 
   1.200 +                   'drbd12:samba:3G', 
   1.201 +                   'drbd13:samba-home:100G', 
   1.202 +                   'drbd17:samba-profiles:100G' 
   1.203 +               ],
   1.204 +   }
   1.205 +
   1.206 +   bridges=['tagged0','xenbr1','xenbr256','xenbr257','xenbr3','xenbr4','xenbr501']
   1.207 +   vlans=  ['tagged',       1,       256,       257,       3,       4,       501 ]
   1.208 +   management_vlan=1
   1.209 +   trunk='eth0'
   1.210 +   management_ip=ip_address[i_am]
   1.211 +   management_gw='10.0.80.253'
   1.212 +
   1.213 +   vbridges_table={
   1.214 +       'dns'       : ['xenbr3'], 
   1.215 +       'gw'        : ['xenbr501', 'xenbr256', 'xenbr257'], 
   1.216 +       'igw'       : ['tagged0','xenbr3'], 
   1.217 +       'pgw'       : ['xenbr3','xenbr501'], 
   1.218 +       'ldap'      : ['xenbr3'], 
   1.219 +       'mail'      : ['xenbr3'], 
   1.220 +       'samba'     : ['tagged0', 'xenbr3'],
   1.221 +       'vpn'       : ['xenbr3'],
   1.222 +       'apt'       : ['xenbr3'],
   1.223 +       'uucp'      : ['xenbr3'],
   1.224 +   }
   1.225 +
   1.226 +   # FOR INSTALLATION ONLY
   1.227 +
   1.228 +   ip_network="10.20.30"
   1.229 +   ip_netmask="255.255.255.224"
   1.230 +   domain_name="crimea.example.com"
   1.231 +   ip_nameserver="10.20.30.4"
   1.232 +   ip_gateway="10.20.30.6"
   1.233 +
   1.234 +   ip_address_table={
   1.235 +       "dns"   :"10.20.30.4",
   1.236 +       "gw"    :"10.20.30.254",
   1.237 +       "igw"   :"10.20.30.3",
   1.238 +       "pgw"   :"10.20.30.6",
   1.239 +       "ldap"  :"10.20.30.11",
   1.240 +       "mail"  :"10.20.30.9",
   1.241 +       "samba" :"10.20.30.1",
   1.242 +       "vpn"   :"10.20.30.5",
   1.243 +       "apt"   :"10.20.30.7",
   1.244 +       "uucp"  :"10.20.30.16",
   1.245 +       "jabber":"10.20.30.12",
   1.246 +
   1.247 +   }
   1.248 +
   1.249 +   debian_release="lenny"
   1.250 +   debian_mirror="http://debian.org.ua/debian/"
   1.251 +   apt_get_install="less tcpdump dnsutils vim ntp screen snmpd libc6-xen openssh-server"
   1.252 +
   1.253 +   lvm_vg_name="TURBO"
   1.254 +   lvm_pv_names="/dev/md2"
   1.255 +   lvm_lv_drbd_meta_name="meta"
   1.256 +   lvm_lv_drbd_meta_size="5G"
   1.257 +   mkfs_options="-m1"
   1.258 +\end{verbatim}
   1.259 +
   1.260 +\subsection{Пример использования}
   1.261 +Создаём файл с описанием топологии:
   1.262 +\begin{verbatim}
   1.263 +  %# vi topology1.py
   1.264 +\end{verbatim}
   1.265 +
   1.266 +Проверяем, что топология была распознана верно:
   1.267 +\begin{verbatim}
   1.268 +  %# make-drbd-install topology1 make-drbd | less
   1.269 +\end{verbatim}
   1.270 +
   1.271 +Если ошибок не обнаружено, 
   1.272 +выполняем
   1.273 +\begin{verbatim}
   1.274 +  %# make-drbd-install topology1 make-drbd | sh -s
   1.275 +\end{verbatim}
   1.276 +
   1.277 +Аналогичным образом выполняем команду 
   1.278 +на втором узле кластера:
   1.279 +\begin{verbatim}
   1.280 +  %# make-drbd-install topology1 make-drbd
   1.281 +\end{verbatim}
   1.282 +
   1.283 +В результате на обоих узлах:
   1.284 +\begin{enumerate}
   1.285 +\item Настраивается система LVM (физические тома, группы томов, логические тома);
   1.286 +\item Создаётся конфигурационный файл DRBD;
   1.287 +\item Поверх одного из логических томов создаётся мета-диск для DRBD-устройств;
   1.288 +\item Поверх логических томов LVM создаются DRBD-устройства.
   1.289 +\end{enumerate}
   1.290 +
   1.291 +\subsubsection{Создание и заполнение файловых систем доменов}
   1.292 +Теперь нужно наполнить созданные разделы.
   1.293 +
   1.294 +Наполнение выполняется только на одном из узлов кластера.
   1.295 +Второй получает все данные автоматически с помощью DRBD.
   1.296 +
   1.297 +Проверьте что генерируется правильный скрипт:
   1.298 +
   1.299 +\begin{verbatim}
   1.300 +%# make-drbd-install topology1 make-domains | less
   1.301 +\end{verbatim}
   1.302 +
   1.303 +Если всё в порядке, можно его выполнить:
   1.304 +
   1.305 +\begin{verbatim}
   1.306 +%# make-drbd-install topology1 make-domains | sh -s
   1.307 +\end{verbatim}
   1.308 +
   1.309 +В результате выполнения будут:
   1.310 +\begin{itemize}
   1.311 +\item  созданы файловые системы доменов;
   1.312 +\item  файловые системы доменов смонтированы;
   1.313 +\item  выполнится наполнение файловых систем (с помощью debootstrap);
   1.314 +\item  конфигурационные файлы внутри файловых систем (\texttt{/etc/fstab}, \texttt{/etc/network} и т.д.) модфицированы в соответствии с заданными в описании топологии значениями;
   1.315 +\item  файловые системы доменов размонтированы.
   1.316 +\end{itemize}
   1.317 +
   1.318 +Теперь в системе есть LVM-тома отформатированные и наполненные образами виртуальных систем.
   1.319 +Тома синхронизируются между узлами с помощью DRBD.
   1.320 +
   1.321 +\subsection{Дополнительная информация}
   1.322 +\begin{itemize}
   1.323 +\item \htmladdnormallinkfoot{xen-drbd-install}{http://xgu.ru/wiki/xen-drbd-install} (рус.)
   1.324 +\end{itemize}
   1.325 +