Проект

Общее

Профиль

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

Михаил Шарков, 10.01.2020 20:01

1 1 Владимир Ипатов
h1. НАСТРОЙКА
2 1 Владимир Ипатов
3 2 Владимир Ипатов
{{toc}}
4 2 Владимир Ипатов
5 29 Dmitry Chernyak
[[OVERVIEW]] | [[INSTALL]] | [[SETUP]] | [[OPERATIONS]] | [[LICENSE]]
6 29 Dmitry Chernyak
[[ОБЗОР]] | [[УСТАНОВКА]] | [[НАСТРОЙКА]] | [[ОПЕРАЦИИ]] | [[ЛИЦЕНЗИЯ]]
7 4 Dmitry Chernyak
8 2 Владимир Ипатов
Перед началом настройки убедитесь, что обе ноды включены и функционируют.
9 2 Владимир Ипатов
10 2 Владимир Ипатов
Если Вы планируете использовать второй сетевой адаптер для drbd линка, перед инициализацией кластера Вы должны настроить его.
11 7 Dmitry Chernyak
Войдите на первую ноду через консоль или по ssh. (При соединении по ssh, из-за недоступности в этот момент DNS-сервиса, перед запросом пароля возможна
12 7 Dmitry Chernyak
пауза до минуты).
13 2 Владимир Ипатов
14 1 Владимир Ипатов
h2. Настройка сети
15 2 Владимир Ипатов
16 8 Dmitry Chernyak
Схемы настройки сети могут сильно различаться в зависимости от условий установки и назначения кластера.
17 8 Dmitry Chernyak
Здесь приведена типовая схема с двумя интерфейсами - один для интерлинка (ganeti и drbd), а другой для локальной сети.
18 2 Владимир Ипатов
19 2 Владимир Ипатов
Эта схема предпочтительна для большинства ситуаций.
20 8 Dmitry Chernyak
Она не требует наличия гигабитных коммутаторов, предоставляет неплохую надежность и производительность при низких затратах.
21 8 Dmitry Chernyak
Два гигабитных интерфейса на узлах подключены друг к другу напрямую или через гигабитный коммутатор(если Вы хотите более чем 2 узла в кластере).
22 8 Dmitry Chernyak
Два других интерфейса подключаются к LAN.
23 2 Владимир Ипатов
В этой схеме сбой в локальной сети не влияет на работоспособность кластера.
24 8 Dmitry Chernyak
Пример конфигурации /etc/network/interfaces:
25 32 Олег Пеньков
<pre>auto backbone
26 32 Олег Пеньков
iface backbone inet static
27 2 Владимир Ипатов
	address 192.168.236.1
28 2 Владимир Ипатов
	netmask 255.255.255.0
29 2 Владимир Ипатов
	network 192.168.236.0
30 2 Владимир Ипатов
	broadcast 192.168.236.255
31 2 Владимир Ипатов
        bridge_ports eth0
32 2 Владимир Ипатов
        bridge_stp off
33 2 Владимир Ипатов
        bridge_fd 0
34 13 Владимир Ипатов
#       uncomment it to enable jumbo frame
35 2 Владимир Ипатов
#	up ifconfig eth0 mtu 9000
36 2 Владимир Ипатов
37 32 Олег Пеньков
auto lan
38 32 Олег Пеньков
iface lan inet static
39 2 Владимир Ипатов
	address 192.168.5.55
40 2 Владимир Ипатов
	netmask 255.255.255.0
41 2 Владимир Ипатов
	network 192.168.5.0
42 2 Владимир Ипатов
	broadcast 192.168.5.255
43 2 Владимир Ипатов
	gateway 192.168.5.1
44 2 Владимир Ипатов
	bridge_ports eth1
45 2 Владимир Ипатов
	bridge_stp off
46 2 Владимир Ипатов
	bridge_fd 0
47 2 Владимир Ипатов
</pre>
48 8 Dmitry Chernyak
49 32 Олег Пеньков
Мост backbone используется для drbd и ganeti обмена, он автоматически настраивается при установке узлов.
50 8 Dmitry Chernyak
Также адрес DNS сервера настроен установщиком - это будет адрес нашей сервисной машины(sci).
51 32 Олег Пеньков
Мост lan используется для подключения к локальной сети и должен быть настроен вручную (в файле interfaces есть заготовка).
52 2 Владимир Ипатов
В такой конфигурации Вы должны заполнить следующие переменные в sci.conf:
53 1 Владимир Ипатов
NODE1_IP - Уже настроено установщиком.
54 1 Владимир Ипатов
NODE1_NAME - Уже настроено установщиком.
55 25 Dmitry Chernyak
NODE2_IP - укажите ip адрес второй ноды на интерлинке (например, 192.168.236.2)
56 25 Dmitry Chernyak
NODE2_NAME - укажите имя второй ноды (напр. gnt2)
57 2 Владимир Ипатов
NODE1_LAN_IP - ip адрес первой ноды в локальной сети. Он будет доступен в днс под именем $NODE1_NAME-lan.$DOMAIN(напр. 192.168.5.55)
58 2 Владимир Ипатов
NODE2_LAN_IP - ip адрес второй ноды в локальной сети. Он будет доступен в днс под именем $NODE2_NAME-lan.$DOMAIN(напр. 192.168.5.56)
59 7 Dmitry Chernyak
CLUSTER_IP - Адрес кластера в локальной сети. НЕ должен совпадать с любым другим существующим адресом. Напр. 192.168.5.35.
60 2 Владимир Ипатов
CLUSTER_NAME - Имя кластера в локальной сети. Будет доступно в днс под $CLUSTER_NAME.
61 1 Владимир Ипатов
SCI_LAN_IP - если Вы хотите, чтобы виртуальная машина sci присутствовала в lan, назначьте этот адрес, напр. 192.168.5.95
62 2 Владимир Ипатов
63 8 Dmitry Chernyak
На странице [[Настройка сети]] вы можете посмотреть и выбрать другие схемы на разные случаи жизни.
64 2 Владимир Ипатов
65 3 Владимир Ипатов
h2. Задание параметров для кластера
66 2 Владимир Ипатов
67 3 Владимир Ипатов
Для задания параметров следует отредактировать @/etc/sci/sci.conf@
68 1 Владимир Ипатов
69 3 Владимир Ипатов
Большинство параметров уже было описано выше в секции "Настройка сети".
70 3 Владимир Ипатов
Здесь указаны дополнительные замечания по поводу настройки:
71 2 Владимир Ипатов
72 9 Dmitry Chernyak
* Вы должны указывать параметры двух узлов в соответствии с тем, как Вы их настроили.
73 2 Владимир Ипатов
74 9 Dmitry Chernyak
* *ПРИМЕЧАНИЕ*: Вы можете настроить кластер и с одним узлом. В этом случае оставьте переменные NODE2_* пустыми.
75 3 Владимир Ипатов
По факту это опасная конфигурация, о чем Вы и будете предупреждены во время инициализации кластера.
76 2 Владимир Ипатов
77 24 Владимир Ипатов
Обязательные параметры:
78 1 Владимир Ипатов
79 24 Владимир Ипатов
* CLUSTER_IP - Вы обязательно должны указать ip адрес кластера. Это адрес, по которому можно всегда попасть на мастер ноду кластера.
80 1 Владимир Ипатов
81 25 Dmitry Chernyak
* NODE2_NAME и NODE2_IP - Вы обязательно должны вписать имя и ip адрес второго узла, если он присутствует.
82 24 Владимир Ипатов
83 24 Владимир Ипатов
Необязательные параметры:
84 24 Владимир Ипатов
85 25 Dmitry Chernyak
* NODE#_SAN_IP - ip адрес узлов в отдельной сети для drbd. Используется, если в сети присутствует отдельный сегмент для drbd. Должен быть указан для обоих нод или ни для одной.
86 24 Владимир Ипатов
87 25 Dmitry Chernyak
* NODE#_LAN_IP - ip адрес узлов в LAN подсети. Должен быть указан для обоих нод или ни для одной.
88 1 Владимир Ипатов
89 3 Владимир Ипатов
* Если Вы не имеете подключения к интернету или имеете локальные зеркала для apt, скорректируйте переменные APT_*
90 1 Владимир Ипатов
91 9 Dmitry Chernyak
* Если Вы хотите передавать запросы на сторонние DNS сервера, заполните DNS_FORWARDERS (не забудьте на конце ';').
92 1 Владимир Ипатов
93 9 Dmitry Chernyak
* MASTER_NETDEV - имя сетевого интерфейса для поднятия ip адреса кластера. По умолчанию определяется автоматически.
94 1 Владимир Ипатов
95 9 Dmitry Chernyak
* LAN_NETDEV - Сетевой интерфейс по умолчанию для виртуальных машин. По умолчанию определяется автоматически.
96 1 Владимир Ипатов
97 3 Владимир Ипатов
* RESERVED_VOLS - Список lvm томов, игнорируемых ganeti. Разделяется запятой. Следует указывать VG для каждого элемента списка.
98 1 Владимир Ипатов
99 1 Владимир Ипатов
h2. Инициализация кластера
100 14 Dmitry Chernyak
101 14 Dmitry Chernyak
Удостоверьтесь, что на обоих узлах установлено одинаковое время.
102 14 Dmitry Chernyak
103 14 Dmitry Chernyak
<pre>
104 14 Dmitry Chernyak
# date
105 14 Dmitry Chernyak
Thu Mar 12 12:23:10 MSK 2015
106 14 Dmitry Chernyak
</pre>
107 14 Dmitry Chernyak
108 14 Dmitry Chernyak
Если нет - установите его командой
109 14 Dmitry Chernyak
110 14 Dmitry Chernyak
<pre>
111 14 Dmitry Chernyak
# date -s "12 MAR 2015 12:23:00"
112 14 Dmitry Chernyak
</pre>
113 2 Владимир Ипатов
114 3 Владимир Ипатов
Запустите:
115 2 Владимир Ипатов
116 2 Владимир Ипатов
<pre>
117 2 Владимир Ипатов
# sci-setup cluster
118 2 Владимир Ипатов
</pre>
119 2 Владимир Ипатов
120 3 Владимир Ипатов
Проверьте выведенные настройке и примите их, либо скорректируйте и запустите скрипт еще раз.
121 3 Владимир Ипатов
После принятия настроек запустится процесс инициализации кластера.
122 3 Владимир Ипатов
Далее Вы должны принять ssh ключ для второй ноды и набрать root пароль для второй ноды.
123 3 Владимир Ипатов
В конце Вы увидите вывод команды диагностики кластера. Он будет выглядеть наподобие этого:
124 2 Владимир Ипатов
<pre>
125 2 Владимир Ипатов
Verify
126 1 Владимир Ипатов
Wed Jan 12 15:36:10 2011 * Verifying global settings
127 2 Владимир Ипатов
Wed Jan 12 15:36:10 2011 * Gathering data (1 nodes)
128 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Verifying node status
129 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Verifying instance status
130 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Verifying orphan volumes
131 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Verifying orphan instances
132 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Verifying N+1 Memory redundancy
133 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Other Notes
134 2 Владимир Ипатов
Wed Jan 12 15:36:11 2011 * Hooks Results
135 2 Владимир Ипатов
Node                    DTotal  DFree MTotal MNode MFree Pinst Sinst
136 2 Владимир Ипатов
gnt1.ganeti.example.org 100.0G 100.0G  1020M  379M  625M     0     0
137 2 Владимир Ипатов
gnt2.ganeti.example.org 100.0G 100.0G  1020M  379M  625M     0     0
138 2 Владимир Ипатов
If all is ok, proceed with /usr/local/sbin/sci-setup service
139 2 Владимир Ипатов
</pre>
140 2 Владимир Ипатов
141 3 Владимир Ипатов
h2. Установка сервисной виртуальной машины
142 2 Владимир Ипатов
143 3 Владимир Ипатов
Имя хоста для нашей сервисной виртуальной машине - sci, также имеются несколько алиасов.
144 7 Dmitry Chernyak
Ее основной ip адрес берется из @/etc/resolv.conf@ на первой ноде.
145 3 Владимир Ипатов
Эта виртуальная машина должна присутствовать в @/etc/hosts@ на обоих нодах.
146 2 Владимир Ипатов
147 3 Владимир Ипатов
Запустите:
148 2 Владимир Ипатов
149 2 Владимир Ипатов
<pre>
150 2 Владимир Ипатов
# sci-setup service
151 2 Владимир Ипатов
</pre>
152 2 Владимир Ипатов
153 3 Владимир Ипатов
Вы увидите индикатор процесса синхронизации drbd дисков, затем:
154 2 Владимир Ипатов
<pre>
155 2 Владимир Ипатов
* running the instance OS create scripts...
156 2 Владимир Ипатов
</pre>
157 2 Владимир Ипатов
appears. The further may take a while. The process finishes with
158 2 Владимир Ипатов
<pre>
159 2 Владимир Ипатов
* starting instance...
160 2 Владимир Ипатов
</pre>
161 2 Владимир Ипатов
162 3 Владимир Ипатов
Теперь Вы можете подключиться к консоли виртуальной машины:
163 2 Владимир Ипатов
164 2 Владимир Ипатов
<pre>
165 2 Владимир Ипатов
# gnt-instance console sci
166 2 Владимир Ипатов
</pre>
167 2 Владимир Ипатов
168 3 Владимир Ипатов
Логиньтесь под рутом, пароль пустой.
169 3 Владимир Ипатов
*ПРИМЕЧАНИЕ*: Т.е. рутовый пароль пуст, ssh соединения запрещены. Установите пароль и установите @openssh-server@.
170 2 Владимир Ипатов
171 3 Владимир Ипатов
h2. Автонастройка сервисной машины
172 2 Владимир Ипатов
173 3 Владимир Ипатов
Система будет настроена автоматически посредством puppet.
174 3 Владимир Ипатов
Вы можете следить за процессом выполнения в @/var/log/daemon.log@.
175 3 Владимир Ипатов
Поначалу в системе не будет команды @less@, но Вы можете использовать @more@, @cat@, @tail@ или @tail -f@
176 3 Владимир Ипатов
пока @less@ не будет автоматически установлен.
177 3 Владимир Ипатов
В процессе автонастройки может потребоваться перезапустить puppet. По умолчанию он запускается каждые полчаса.
178 3 Владимир Ипатов
При желании можно перезапустить его руками:
179 2 Владимир Ипатов
<pre>
180 2 Владимир Ипатов
# /etc/init.d/puppet restart
181 2 Владимир Ипатов
</pre>
182 1 Владимир Ипатов
183 2 Владимир Ипатов
Повторяйте это раз в несколько минут, пока не увидите, что puppet больше ничего не делает.
184 3 Владимир Ипатов
185 3 Владимир Ипатов
h2. Установка новых виртуальных машин
186 2 Владимир Ипатов
187 3 Владимир Ипатов
Новые виртуальные машины добавляются стандартными командами ganeti:
188 2 Владимир Ипатов
189 2 Владимир Ипатов
<pre>
190 1 Владимир Ипатов
gnt-instance add -t drbd -o debootstrap+default -s 10g -B memory=256m -n NODE1_NAME:NODE2_NAME INSTANCE_NAME
191 2 Владимир Ипатов
</pre>
192 1 Владимир Ипатов
193 2 Владимир Ипатов
Однако, наш проект дополняет процесс несколькими специфичными хуками:
194 1 Владимир Ипатов
# На каждую машину ставится @puppet@ для автоконфигурации, @openssh-client@ для обмена файлами и т.д.
195 3 Владимир Ипатов
# На каждую машину ставится pygrub.
196 3 Владимир Ипатов
# Сетевые настройки для машины могут быть назначены автоматически(см. ниже).
197 2 Владимир Ипатов
198 3 Владимир Ипатов
h3. Автонастройка сети на виртуальных машинах.
199 2 Владимир Ипатов
200 3 Владимир Ипатов
Если Вам необходимо, чтобы виртуальные машины могли быть подключены к нескольким сетям и Вам необходимы статичные
201 7 Dmitry Chernyak
настройки сети на них, Вы должны заполнить файл @/etc/ganeti/networks@ всеми нужными для подключения машин сетями.
202 3 Владимир Ипатов
Каждая строчка файла имеет формат:
203 2 Владимир Ипатов
204 1 Владимир Ипатов
|NETWORK|NETMASK|BROADCAST|GATEWAY|
205 1 Владимир Ипатов
206 1 Владимир Ипатов
207 3 Владимир Ипатов
Ganeti instance debootstrap хук смотрит в этот файл, находит сеть для заданного ip и настраивает сеть
208 3 Владимир Ипатов
на виртуальной машине автоматически.
209 1 Владимир Ипатов
210 7 Dmitry Chernyak
*ПРИМЕЧАНИЕ*: Этот файл заполняется при инициализации кластера, так что в большинстве случаев Вам не потребуется
211 3 Владимир Ипатов
туда что-то добавлять.
212 7 Dmitry Chernyak
*ПРИМЕЧАНИЕ*: файл networks должен присутствовать на каждой ноде (еще не автоматизировано).
213 1 Владимир Ипатов
214 12 Владимир Ипатов
h2. Добавление фильтра в настройки lvm:
215 11 Владимир Ипатов
216 11 Владимир Ипатов
При дефолтных настройках lvm многие операции с кластером могут быть сильно замедленными при большом количестве lvm томов.
217 19 Владимир Ипатов
Поэтому в sci по умолчанию используется фильтр в /etc/lvm/lvm.conf, который ищет vg только на md:
218 11 Владимир Ипатов
<pre>
219 11 Владимир Ипатов
filter = [ "a/md/", "r/.*/" ]
220 1 Владимир Ипатов
</pre>
221 19 Владимир Ипатов
Если Вы не используете md, фильтр нужно заменить на:
222 19 Владимир Ипатов
<pre>
223 19 Владимир Ипатов
filter = [ "a/.*/" ]
224 19 Владимир Ипатов
</pre>
225 19 Владимир Ипатов
226 11 Владимир Ипатов
и выполнить
227 11 Владимир Ипатов
<pre>
228 11 Владимир Ипатов
vgscan
229 1 Владимир Ипатов
</pre>
230 12 Владимир Ипатов
231 15 Dmitry Chernyak
h2. Добавление дополнительной VG
232 15 Dmitry Chernyak
233 33 Михаил Шарков
Если в сервере есть два типа дисков, например 4xSATA + 2xSSD, то необходимо иницииализировать вторую VG и (при необходимости) сделать ее основной для создания виртуальных машин:
234 16 Dmitry Chernyak
235 22 Владимир Ипатов
Действия выполняются на каждой ноде:
236 1 Владимир Ипатов
Разметить диск:
237 33 Михаил Шарков
</pre>
238 33 Михаил Шарков
 выбираем диск
239 16 Dmitry Chernyak
<pre>
240 33 Михаил Шарков
parted /dev/sdX 
241 1 Владимир Ипатов
</pre>
242 33 Михаил Шарков
выбираем в чем выводиться будет размер диска (в данном примере MiB)
243 1 Владимир Ипатов
<pre>
244 33 Михаил Шарков
unit MiB
245 1 Владимир Ипатов
</pre>
246 33 Михаил Шарков
создаем метку диска в нашем случае это msdos
247 33 Михаил Шарков
<pre>
248 33 Михаил Шарков
mklabel msdos
249 33 Михаил Шарков
</pre>
250 33 Михаил Шарков
Размечаем диск 
251 33 Михаил Шарков
<pre>
252 33 Михаил Шарков
(parted) mkpart
253 33 Михаил Шарков
</pre>
254 33 Михаил Шарков
Выбираем тип раздела диска в нашем случае это primary
255 33 Михаил Шарков
<pre>
256 33 Михаил Шарков
Partition type?  primary/extended? primary
257 33 Михаил Шарков
</pre>
258 33 Михаил Шарков
Выбираем файловую систему в нашем случае ext2
259 33 Михаил Шарков
<pre>
260 33 Михаил Шарков
File system type?  [ext2]? 
261 33 Михаил Шарков
</pre>
262 33 Михаил Шарков
Начало диска у нас с 4MiB
263 33 Михаил Шарков
<pre>
264 33 Михаил Шарков
Start? 4
265 33 Михаил Шарков
</pre>
266 33 Михаил Шарков
Конец диска так как это ссд мы оставляем 1-2GB в MiB
267 33 Михаил Шарков
<pre>
268 33 Михаил Шарков
End? 954000
269 33 Михаил Шарков
</pre>
270 34 Михаил Шарков
*Проинициализировать md, vg*
271 34 Михаил Шарков
272 34 Михаил Шарков
-n2 (количество дисков в рейде) -l1 (какой рейд, в данном варианте рейд1) /dev/md3 (смотрим командой cat /proc/mdstat, свободный md в нашем случае это md3)
273 33 Михаил Шарков
<pre>
274 33 Михаил Шарков
mdadm --create -n2 -l1 /dev/md3 /dev/sda1 /dev/sdb1 
275 22 Владимир Ипатов
pvcreate /dev/md3
276 33 Михаил Шарков
vgcreate ssd /dev/md3</pre>
277 30 Евгений Антонов
 Так же необходимо добавить новый рейд в конфиг mdadm, чтобы он виделся после перезагрузки
278 30 Евгений Антонов
Узнаем его UUID
279 30 Евгений Антонов
<pre>
280 30 Евгений Антонов
mdadm --examine --scan
281 31 Владимир Ипатов
</pre>
282 30 Евгений Антонов
Добавляем строчку с нужным массивом в файл 
283 30 Евгений Антонов
<pre>
284 30 Евгений Антонов
/etc/mdadm/mdamd.conf
285 22 Владимир Ипатов
</pre>
286 30 Евгений Антонов
287 31 Владимир Ипатов
288 30 Евгений Антонов
И пересобираем initrd
289 30 Евгений Антонов
290 31 Владимир Ипатов
<pre>
291 30 Евгений Антонов
dpkg-reconfigure mdadm
292 31 Владимир Ипатов
</pre>
293 22 Владимир Ипатов
И, наконец, настроить кластер по умолчанию на использование новой vg, а также на использование этой vg для метаданных drbd (выполняется 1 раз, на мастере):
294 21 Владимир Ипатов
<pre>
295 15 Dmitry Chernyak
gnt-cluster modify --vg-name=sas --disk-parameters=drbd:metavg=sas
296 15 Dmitry Chernyak
</pre>
297 18 Владимир Ипатов
298 18 Владимир Ипатов
По умолчанию для всех дисков в кластере устанавливается шедулер deadline
299 18 Владимир Ипатов
В случае, если используется аппаратный raid контроллер или отдельное хранилище, подключенное по FC/Infiniband/iSCSI, то, ВОЗМОЖНО, будет иметь смысл поставить шедулер noop. Однако, deadline подходит для всех типов дисков.
300 15 Dmitry Chernyak
301 15 Dmitry Chernyak
Статья про сравнение трех вариантов offset в raid10 (в SCI используется дефолтный, NEAR):
302 15 Dmitry Chernyak
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
303 12 Владимир Ипатов
304 11 Владимир Ипатов
h2. [[Настройка Hugepages]]
305 3 Владимир Ипатов
306 3 Владимир Ипатов
h2. Операции с кластером
307 7 Dmitry Chernyak
308 1 Владимир Ипатов
Читайте в [[ОПЕРАЦИИ]].