Проект

Общее

Профиль

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

Владимир Ипатов, 15.12.2020 01:03

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 26 Владимир Ипатов
В случае windows иногда требуется зайти через vnc на локальную консоль виртуальной машины и однократно либо залогиниться юзером, либо зайти в безопасный режим. После чего перезагрузить систему как обычно.
266 26 Владимир Ипатов
в параметрах сетевого интерфейса в windows нужно переключить checksum offload и large send offload в disabled.
267 26 Владимир Ипатов
если на интерфейсе был статический адрес, то его нужно прописать заново.
268 26 Владимир Ипатов
269 1 Владимир Ипатов
h2. апгрейд второй половины кластера
270 1 Владимир Ипатов
271 1 Владимир Ипатов
для апгрейда второй половины кластера следует повторить операцию апгрейда узла для оставшихся узлов версии 2.x (процедуру см. выше)
272 29 Владимир Ипатов
273 29 Владимир Ипатов
после апгрейда:
274 29 Владимир Ипатов
275 29 Владимир Ипатов
тюнинг дрбд новой версии:
276 29 Владимир Ипатов
277 29 Владимир Ипатов
<pre>
278 29 Владимир Ипатов
gnt-cluster modify -D drbd:disk-custom=" --c-plan-ahead 0",net-custom=" --max-buffers 8000"
279 29 Владимир Ипатов
</pre>
280 29 Владимир Ипатов
281 29 Владимир Ипатов
затем запустить gnt-cluster verify и решить оставшиеся проблемы