Проект

Общее

Профиль

Апгрейд с wheezy на stretch (2x до 3х) » История » Версия 34

Владимир Ипатов, 18.05.2023 19:28

1 6 Владимир Ипатов
h1. Апгрейд с wheezy на stretch (2.x до 3.х)
2 1 Владимир Ипатов
3 1 Владимир Ипатов
Данный апгрейд может проводиться с минимальным простоем, т.к. внутри одного кластера могут успешно работать узлы версии 2.х и 3.х, в том числе работает репликация DRBD между узлами версии 2.х и 3.х
4 1 Владимир Ипатов
5 1 Владимир Ипатов
В случае Linux виртуальных машин требуется только одна перезагрузка при переносе с 2.x узла на 3.х узла.
6 1 Владимир Ипатов
7 1 Владимир Ипатов
В случае Windows виртуальных машин иногда требуется однократная загрузка в безопасном режиме и/или заход под пользователем в локальную консоль виртуальной машины для установки "нового" эмулируемого диска и сетевой карты.
8 1 Владимир Ипатов
9 1 Владимир Ипатов
h2. Общая процедура апгрейда
10 1 Владимир Ипатов
11 1 Владимир Ипатов
1) обновляются все резервные узлы кластера. Это можно сделать обновлением дистрибутива (см. выше) или переустановкой узлов с нуля. Переустановка узлов с нуля - менее сложный процесс, но более длительный, т.к. придется заново ресинкать все тома всех виртуальных машин.
12 1 Владимир Ипатов
2) после обновления всех резервных узлов делаются настройки кластера, позволяющие работать в смешанном окружении. Смешанный кластер до момента перенастройки не может выполнять операции по старту/остановке виртуальных машин, их переносу, перенастройке и т.д.
13 1 Владимир Ипатов
3) все виртуальные машины переносятся на резервные узлы, их проверяется работоспособность.
14 1 Владимир Ипатов
4) обновляются узлы второй половины кластера.
15 1 Владимир Ипатов
16 1 Владимир Ипатов
h2. Апгрейд узла
17 1 Владимир Ипатов
18 1 Владимир Ипатов
Для апгрейда узла два способа:
19 1 Владимир Ипатов
1) Переустановка узла (легкий, но долгий путь, требует ресинка дрбд на всех виртуальных машинах)
20 1 Владимир Ипатов
2) Обновление пакетов (трудоемкий путь, но позволяет быстрее выполнить миграцию, не требует ресинка дрбд)
21 1 Владимир Ипатов
22 1 Владимир Ипатов
h3. Переустановка узла
23 1 Владимир Ипатов
24 1 Владимир Ипатов
Для апгрейда с переустановкой узла требуется:
25 1 Владимир Ипатов
26 1 Владимир Ипатов
1) сохранить содержимое файла /etc/network/interfaces и /etc/hostname на обновляемом узле
27 1 Владимир Ипатов
2) загрузиться с флешки/диска и установить на обновляемый узел SkyCover 3.x. При этом нужно при установке ввести такой же lan ip, хостнейм, домен, какой был. подробнее: [[УСТАНОВКА]]
28 1 Владимир Ипатов
3) настроить конфиг сетевых интерфейсов /etc/network/interfaces, используя сохраненное содержимое, перезапустить сеть с помощью service networking restart.
29 1 Владимир Ипатов
4) порядок сетевых интерфейсов мог поменяться, проверить пинг до мастера через backbone, lan и т.д. Если что-то не совпадает, то, отключая кабель по одному сетевому интерфейсу и запуска ip link show (показывает, где нет линка) идентифицировать сетевые интерфейсы и переназначить их в /etc/network/interfaces, перезапустить сеть
30 1 Владимир Ипатов
5) с мастера выполнить команды:
31 1 Владимир Ипатов
<pre>
32 1 Владимир Ипатов
gnt-node add --readd ХОСТНЕЙМ
33 1 Владимир Ипатов
gnt-cluster redist-conf
34 1 Владимир Ипатов
</pre>
35 1 Владимир Ипатов
36 1 Владимир Ипатов
h3. Обновление пакетов
37 1 Владимир Ипатов
38 3 Владимир Ипатов
Обновление пакетов идет в 2 приема. с Wheezy на Jessie, с Jessie на Stretch.
39 3 Владимир Ипатов
После обновления с Wheezy на Jessie узел будет в неработособном состоянии, так что оба обновления нужно делать сразу один за другим.
40 3 Владимир Ипатов
41 3 Владимир Ипатов
Отключаем puppet:
42 3 Владимир Ипатов
service puppet stop
43 3 Владимир Ипатов
в /etc/default/puppet прописываем START=no
44 3 Владимир Ипатов
45 3 Владимир Ипатов
Перенастраиваем apt:
46 3 Владимир Ипатов
47 3 Владимир Ипатов
меняем содержимое /etc/apt/sources.list.
48 3 Владимир Ипатов
было:
49 3 Владимир Ипатов
<pre>
50 3 Владимир Ипатов
#
51 3 Владимир Ипатов
# stable
52 3 Владимир Ипатов
#
53 3 Владимир Ипатов
deb http://archive.debian.org/debian wheezy main
54 3 Владимир Ипатов
deb http://archive.debian.org/debian-security wheezy/updates main
55 3 Владимир Ипатов
#
56 3 Владимир Ипатов
# backports
57 3 Владимир Ипатов
#
58 3 Владимир Ипатов
deb http://archive.debian.org/debian/ wheezy-backports main
59 3 Владимир Ипатов
</pre>
60 3 Владимир Ипатов
61 3 Владимир Ипатов
стало:
62 3 Владимир Ипатов
<pre>
63 3 Владимир Ипатов
#
64 3 Владимир Ипатов
# stable
65 3 Владимир Ипатов
#
66 17 Владимир Ипатов
deb http://archive.debian.org/debian jessie main
67 3 Владимир Ипатов
#
68 3 Владимир Ипатов
# backports
69 3 Владимир Ипатов
#
70 3 Владимир Ипатов
deb http://archive.debian.org/debian/ jessie-backports main
71 3 Владимир Ипатов
</pre>
72 3 Владимир Ипатов
73 3 Владимир Ипатов
меняем содержимое /etc/apt/apt.conf.d/99stable
74 3 Владимир Ипатов
<pre>
75 3 Владимир Ипатов
APT::Default-Release "jessie";
76 3 Владимир Ипатов
</pre>
77 3 Владимир Ипатов
78 3 Владимир Ипатов
меняем содержимое /etc/apt/sources.list.d/sci-dev.list
79 3 Владимир Ипатов
<pre>
80 3 Владимир Ипатов
deb http://sci-dev.skycover.ru/apt stretch main
81 3 Владимир Ипатов
</pre>
82 3 Владимир Ипатов
83 3 Владимир Ипатов
скачиваем и устанавливаем новый ключ для sci-dev:
84 3 Владимир Ипатов
<pre>
85 4 Владимир Ипатов
wget -O- http://sci-dev.skycover.ru/apt/stretch.pub|apt-key add -
86 4 Владимир Ипатов
</pre>
87 4 Владимир Ипатов
88 4 Владимир Ипатов
добавляем новый файл /etc/apt/apt.conf.d/10ignore-expired-release
89 4 Владимир Ипатов
<pre>
90 4 Владимир Ипатов
Acquire::Check-Valid-Until "0";
91 4 Владимир Ипатов
</pre>
92 4 Владимир Ипатов
93 20 Владимир Ипатов
Обновляем дистрибутив:
94 1 Владимир Ипатов
95 20 Владимир Ипатов
<pre>
96 20 Владимир Ипатов
aptitude update
97 20 Владимир Ипатов
aptitude full-upgrade
98 20 Владимир Ипатов
</pre>
99 4 Владимир Ипатов
100 4 Владимир Ипатов
После успешного апгрейда перезагружаемся.
101 4 Владимир Ипатов
102 4 Владимир Ипатов
Перенастраиваем apt еще раз
103 4 Владимир Ипатов
/etc/apt/sources.list:
104 4 Владимир Ипатов
<pre>
105 4 Владимир Ипатов
deb http://ftp.debian.org/debian stretch main contrib non-free
106 4 Владимир Ипатов
deb http://ftp.debian.org/debian stretch-updates main contrib non-free
107 4 Владимир Ипатов
deb http://ftp.debian.org/debian stretch-backports main contrib non-free
108 4 Владимир Ипатов
</pre>
109 4 Владимир Ипатов
/etc/apt/apt.conf.d/99stable:
110 4 Владимир Ипатов
<pre>
111 4 Владимир Ипатов
APT::Default-Release "stretch";
112 3 Владимир Ипатов
</pre>
113 3 Владимир Ипатов
114 1 Владимир Ипатов
обновляемся до stretch:
115 5 Владимир Ипатов
116 20 Владимир Ипатов
<pre>
117 1 Владимир Ипатов
aptitude update
118 5 Владимир Ипатов
aptitude full-upgrade
119 20 Владимир Ипатов
</pre>
120 5 Владимир Ипатов
121 10 Владимир Ипатов
перезагрузка
122 5 Владимир Ипатов
123 10 Владимир Ипатов
124 5 Владимир Ипатов
проверяем версии пакетов:
125 14 Владимир Ипатов
dpkg -l|grep ganeti - должны быть 2.15-sciX, instance-debootstrap должн быть 0-16-sciX
126 5 Владимир Ипатов
127 19 Владимир Ипатов
если версии не совпадают, обновить из репозитория sci-dev.skycover.ru/apt
128 19 Владимир Ипатов
если присутствуют ganeti-2.12 в удаленном виде, рекомендуется их вычистить:
129 19 Владимир Ипатов
<pre>
130 19 Владимир Ипатов
aptitude purge ganeti-2.12 ganeti-haskell-2.12 ganeti-htools-2.12
131 19 Владимир Ипатов
</pre>
132 1 Владимир Ипатов
133 5 Владимир Ипатов
если в процессе обновления qemu и qemu-system остались в версии wheezy, то следует их обновить руками:
134 20 Владимир Ипатов
<pre>
135 9 Владимир Ипатов
aptitude install qemu qemu-system
136 20 Владимир Ипатов
</pre>
137 15 Владимир Ипатов
если xen 4.8 не установился сам ,то нужно установить руками:
138 15 Владимир Ипатов
<pre>
139 15 Владимир Ипатов
sudo aptitude install xen-hypervisor-4.8-amd64 xen-utils-4.8
140 15 Владимир Ипатов
</pre>
141 10 Владимир Ипатов
142 24 Владимир Ипатов
добавляем объем памяти для гипервизора:
143 24 Владимир Ипатов
в /etc/default/grub устанавливаем 2048мб для гипервизора:
144 24 Владимир Ипатов
<pre>
145 24 Владимир Ипатов
GRUB_CMDLINE_XEN="dom0_mem=2048M"
146 24 Владимир Ипатов
</pre>
147 24 Владимир Ипатов
переинициализируем конфиг grub:
148 24 Владимир Ипатов
<pre>
149 24 Владимир Ипатов
update-grub
150 24 Владимир Ипатов
</pre>
151 24 Владимир Ипатов
152 25 Владимир Ипатов
меняем в /etc/rc.sci
153 25 Владимир Ипатов
<pre>
154 25 Владимир Ипатов
xm sched-credit -d0 -w512
155 25 Владимир Ипатов
</pre>
156 25 Владимир Ипатов
на
157 25 Владимир Ипатов
<pre>
158 25 Владимир Ипатов
xl sched-credit -d0 -w512
159 25 Владимир Ипатов
</pre>
160 25 Владимир Ипатов
161 10 Владимир Ипатов
удалить systemd:
162 10 Владимир Ипатов
163 10 Владимир Ипатов
<pre>
164 10 Владимир Ипатов
apt-get install -y --force-yes sysvinit-core sysvinit-utils
165 10 Владимир Ипатов
cp /usr/share/sysvinit/inittab /etc/inittab
166 10 Владимир Ипатов
перезагрузка
167 10 Владимир Ипатов
apt-get remove -y --force-yes --purge --auto-remove systemd
168 10 Владимир Ипатов
echo -e 'Package: systemd\nPin: release *\nPin-Priority: -1' > /etc/apt/preferences.d/systemd
169 10 Владимир Ипатов
echo -e '\n\nPackage: *systemd*\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
170 10 Владимир Ипатов
echo -e '\nPackage: systemd:i386\nPin: release *\nPin-Priority: -1' >> /etc/apt/preferences.d/systemd
171 10 Владимир Ипатов
</pre>
172 9 Владимир Ипатов
173 11 Владимир Ипатов
настраиваем ssh на работу с dss ключами:
174 12 Владимир Ипатов
/etc/ssh/sshd_config:
175 12 Владимир Ипатов
<pre>
176 12 Владимир Ипатов
PubkeyAcceptedKeyTypes=+ssh-dss
177 12 Владимир Ипатов
</pre>
178 12 Владимир Ипатов
/etc/ssh/ssh_config:
179 12 Владимир Ипатов
<pre>
180 12 Владимир Ипатов
    PubkeyAcceptedKeyTypes=+ssh-dss
181 12 Владимир Ипатов
</pre>
182 12 Владимир Ипатов
(отступ должен быть сохранен)
183 21 Владимир Ипатов
<pre>
184 13 Владимир Ипатов
service ssh restart
185 21 Владимир Ипатов
</pre>
186 11 Владимир Ипатов
187 11 Владимир Ипатов
на каждом узле должен быть файл /var/lib/ganeti/rapi/users
188 11 Владимир Ипатов
<pre>
189 11 Владимир Ипатов
scweb СЛУЧАЙНЫЙ_ПАРОЛЬ write
190 11 Владимир Ипатов
</pre>
191 1 Владимир Ипатов
192 16 Владимир Ипатов
переинициализируем паппет:
193 16 Владимир Ипатов
<pre>
194 16 Владимир Ипатов
rm -r /var/lib/puppet/ssl
195 16 Владимир Ипатов
в /etc/default/puppet START=yes
196 16 Владимир Ипатов
puppet agent --enable
197 16 Владимир Ипатов
</pre>
198 16 Владимир Ипатов
также в конфиг следует указать новый паппет мастер для новых паппет агентов, т.к. паппетмастер в wheezy не совместим с агентами stretch.
199 22 Владимир Ипатов
200 22 Владимир Ипатов
удаляем лишнюю директорию в ganeti-instance-debootstrap:
201 22 Владимир Ипатов
<pre>
202 22 Владимир Ипатов
cd /usr/share/ganeti/os/
203 22 Владимир Ипатов
rm -r debootstrap
204 22 Владимир Ипатов
ln -s debian/ debootstrap
205 22 Владимир Ипатов
</pre>
206 22 Владимир Ипатов
207 13 Владимир Ипатов
удаляем локальные скрипты старых версий:
208 22 Владимир Ипатов
<pre>
209 13 Владимир Ипатов
rm /usr/local/sbin/*
210 22 Владимир Ипатов
</pre>
211 24 Владимир Ипатов
212 13 Владимир Ипатов
устанавливаем доп пакеты sci:
213 21 Владимир Ипатов
<pre>
214 13 Владимир Ипатов
aptitude install sci-web sci-config sci-scripts sci-udev-netrules
215 21 Владимир Ипатов
</pre>
216 5 Владимир Ипатов
217 1 Владимир Ипатов
h2. Перенастройка кластера для работы в смешанном окружении.
218 1 Владимир Ипатов
219 1 Владимир Ипатов
Смешанный кластер до момента перенастройки не может выполнять операции по старту/остановке виртуальных машин, их переносу, перенастройке и т.д.
220 1 Владимир Ипатов
Суть настроек заключается в том, что в узлах версии 3 больше нет toolstack xm, есть только xl. Поэтому нужно перенастроить все узлы и кластер на использование xl.
221 1 Владимир Ипатов
Также в узлах версии 2.х и 3.х несовпадают некоторые пути, это решается за счет симлинков
222 1 Владимир Ипатов
223 7 Владимир Ипатов
h3. добавление симлинков
224 7 Владимир Ипатов
225 7 Владимир Ипатов
на каждом узле 2.x:
226 7 Владимир Ипатов
<pre>
227 7 Владимир Ипатов
ln -s /usr/lib/xen-4.1 /usr/lib/xen
228 7 Владимир Ипатов
ln -s /usr/lib/xen/bin/qemu-dm /usr/bin/qemu-system-x86_64
229 7 Владимир Ипатов
</pre>
230 7 Владимир Ипатов
231 1 Владимир Ипатов
h3. перенастройка кластера на xl
232 1 Владимир Ипатов
233 7 Владимир Ипатов
на каждом узле 2.х:
234 7 Владимир Ипатов
235 7 Владимир Ипатов
в /etc/xen/xl.conf установить autoballoon=0
236 7 Владимир Ипатов
в /etc/default/xen установить TOOLSTACK=xl
237 7 Владимир Ипатов
service xen restart
238 7 Владимир Ипатов
239 7 Владимир Ипатов
на мастере:
240 7 Владимир Ипатов
241 7 Владимир Ипатов
перенастройка кластера на новые пути:
242 7 Владимир Ипатов
<pre>
243 7 Владимир Ипатов
gnt-cluster modify -H xen-pvm:bootloader_path=/usr/lib/xen/bin/pygrub
244 7 Владимир Ипатов
gnt-cluster modify -H xen-pvm:initrd_path=/boot/initrd.img-xenU
245 7 Владимир Ипатов
gnt-cluster modify -H xen-pvm:kernel_path=/boot/vmlinuz-xenU
246 7 Владимир Ипатов
gnt-cluster modify -H xen-hvm:device_model=/usr/bin/qemu-system-x86_64
247 7 Владимир Ипатов
gnt-cluster modify -H xen-hvm:kernel_path=/usr/lib/xen/boot/hvmloader
248 7 Владимир Ипатов
gnt-cluster modify -H xen-pvm:xen_cmd=xl
249 7 Владимир Ипатов
gnt-cluster modify -H xen-hvm:xen_cmd=xl
250 7 Владимир Ипатов
</pre>
251 1 Владимир Ипатов
252 27 Владимир Ипатов
после всех настроек запустить gnt-cluster verify и устранить оставшиеся проблемы.
253 27 Владимир Ипатов
254 1 Владимир Ипатов
h2. перенос виртуальных машин
255 1 Владимир Ипатов
256 2 Владимир Ипатов
перенос следует делать по одной машине, с проверкой работоспособности
257 2 Владимир Ипатов
258 2 Владимир Ипатов
1) произвести failover виртуальной машины:
259 2 Владимир Ипатов
<pre>
260 2 Владимир Ипатов
gnt-instance failover МАШИНА
261 23 Владимир Ипатов
</pre>
262 2 Владимир Ипатов
263 26 Владимир Ипатов
2) проверить работоспособность машины с помощью ping и захода по ssh/rdp
264 26 Владимир Ипатов
265 30 Владимир Ипатов
В случае windows иногда требуется зайти через vnc на локальную консоль виртуальной машины и однократно либо залогиниться юзером (windows 2008/r2), либо зайти в безопасный режим (windows 2012/r2). После чего перезагрузить систему как обычно.
266 26 Владимир Ипатов
в параметрах сетевого интерфейса в windows нужно переключить checksum offload и large send offload в disabled.
267 26 Владимир Ипатов
если на интерфейсе был статический адрес, то его нужно прописать заново.
268 31 Владимир Ипатов
Также иногда нужно снова прописать точки монтирования для дисков (буквы), кроме системного.
269 26 Владимир Ипатов
270 1 Владимир Ипатов
h2. апгрейд второй половины кластера
271 1 Владимир Ипатов
272 1 Владимир Ипатов
для апгрейда второй половины кластера следует повторить операцию апгрейда узла для оставшихся узлов версии 2.x (процедуру см. выше)
273 29 Владимир Ипатов
274 29 Владимир Ипатов
после апгрейда:
275 29 Владимир Ипатов
276 29 Владимир Ипатов
тюнинг дрбд новой версии:
277 29 Владимир Ипатов
278 29 Владимир Ипатов
<pre>
279 29 Владимир Ипатов
gnt-cluster modify -D drbd:disk-custom=" --c-plan-ahead 0",net-custom=" --max-buffers 8000"
280 29 Владимир Ипатов
</pre>
281 32 Владимир Ипатов
или:
282 32 Владимир Ипатов
<pre>
283 33 Владимир Ипатов
gnt-cluster modify -D drbd:resync-rate=61440,c-max-rate=0,c-min-rate=0,dynamic-resync=False,c-plan-ahead=0,disk-custom='--c-plan-ahead 0',net-custom='--max-buffers 16384 --max-epoch-size 16384'
284 32 Владимир Ипатов
</pre>
285 32 Владимир Ипатов
также можно --sndbuf-size 1024k --rcvbuf-size 2048k в net-custom
286 29 Владимир Ипатов
287 34 Владимир Ипатов
https://linbit.com/blog/how-linbit-improved-drbd-sync-rate-logic/
288 34 Владимир Ипатов
289 29 Владимир Ипатов
затем запустить gnt-cluster verify и решить оставшиеся проблемы