Перенос виртуальной машины на другую vg » История » Версия 7
Владимир Ипатов, 03.03.2021 23:36
1 | 1 | Владимир Ипатов | h1. Перенос виртуальной машины на другую vg |
---|---|---|---|
2 | 1 | Владимир Ипатов | |
3 | 1 | Владимир Ипатов | h2. Виртуальная машина на одном узле |
4 | 1 | Владимир Ипатов | |
5 | 1 | Владимир Ипатов | Данная операция является потенциально опасной, следует выполнять ее только при полном понимании описываемых операций и последствий. |
6 | 1 | Владимир Ипатов | Данная операция требует остановки машины на все время копирования содержимого. |
7 | 1 | Владимир Ипатов | |
8 | 1 | Владимир Ипатов | h3. Подготовка |
9 | 1 | Владимир Ипатов | |
10 | 1 | Владимир Ипатов | Получить информацию о машине: |
11 | 1 | Владимир Ипатов | <pre> |
12 | 1 | Владимир Ипатов | gnt-instance info ИМЯ |
13 | 1 | Владимир Ипатов | </pre> |
14 | 1 | Владимир Ипатов | |
15 | 1 | Владимир Ипатов | Больше всего будет интересовать информация о диске: |
16 | 1 | Владимир Ипатов | |
17 | 1 | Владимир Ипатов | Например: |
18 | 1 | Владимир Ипатов | <pre> |
19 | 1 | Владимир Ипатов | Disks: |
20 | 1 | Владимир Ипатов | - disk/0: plain, size 10.0G |
21 | 1 | Владимир Ипатов | access mode: rw |
22 | 1 | Владимир Ипатов | logical_id: xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 |
23 | 1 | Владимир Ипатов | on primary: /dev/xenvg/8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 (253:9) |
24 | 1 | Владимир Ипатов | name: None |
25 | 1 | Владимир Ипатов | UUID: 3c7fb626-21d2-4e99-9365-6639a13456b5 |
26 | 1 | Владимир Ипатов | </pre> |
27 | 1 | Владимир Ипатов | |
28 | 1 | Владимир Ипатов | Выключить машину |
29 | 1 | Владимир Ипатов | |
30 | 1 | Владимир Ипатов | <pre> |
31 | 1 | Владимир Ипатов | gnt-instance shutdown ИМЯ |
32 | 1 | Владимир Ипатов | </pre> |
33 | 1 | Владимир Ипатов | |
34 | 1 | Владимир Ипатов | На мастер узле остановить ganeti-watcher, ganeti: |
35 | 1 | Владимир Ипатов | <pre> |
36 | 1 | Владимир Ипатов | service ganeti-watcher stop |
37 | 1 | Владимир Ипатов | service ganeti stop |
38 | 1 | Владимир Ипатов | </pre> |
39 | 1 | Владимир Ипатов | Сделать резервную копию конфига ganeti. |
40 | 1 | Владимир Ипатов | <pre> |
41 | 1 | Владимир Ипатов | cp /var/lib/ganeti/config.data ~/ |
42 | 1 | Владимир Ипатов | </pre> |
43 | 1 | Владимир Ипатов | |
44 | 1 | Владимир Ипатов | берем имя тома из информации об инстансе, после / |
45 | 1 | Владимир Ипатов | <pre> |
46 | 1 | Владимир Ипатов | в нашем случае это 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 |
47 | 1 | Владимир Ипатов | </pre> |
48 | 1 | Владимир Ипатов | |
49 | 1 | Владимир Ипатов | Копируем в буфер обмена |
50 | 1 | Владимир Ипатов | |
51 | 1 | Владимир Ипатов | Также из информации об инстансе берем точный размер тома |
52 | 1 | Владимир Ипатов | |
53 | 1 | Владимир Ипатов | создаем том с таким же именем на новой vg (здесь она будет называться ssd) |
54 | 1 | Владимир Ипатов | |
55 | 1 | Владимир Ипатов | <pre> |
56 | 1 | Владимир Ипатов | lvcreate -L10G -n 8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0 ssd |
57 | 1 | Владимир Ипатов | </pre> |
58 | 1 | Владимир Ипатов | |
59 | 1 | Владимир Ипатов | открываем файл /var/lib/ganeti/config.data, ищем по данному имени, находим блок наподобие этого (json упакован без отступов и перевода строки, читать неудобно, так что нужно пользоваться поиском по подстроке): |
60 | 1 | Владимир Ипатов | |
61 | 1 | Владимир Ипатов | <pre> |
62 | 2 | Владимир Ипатов | "disks": [{"logical_id": ["xenvg", "8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0"], "uuid": "3c7fb626-21d2-4e99-9365-6639a13456b5", "dev_type": "plain", "params": {}, "mode": "rw", "iv_name": "disk/0", "size": 10240}] |
63 | 1 | Владимир Ипатов | </pre> |
64 | 1 | Владимир Ипатов | |
65 | 1 | Владимир Ипатов | вот указание vg и имени тома: |
66 | 1 | Владимир Ипатов | |
67 | 1 | Владимир Ипатов | <pre> |
68 | 1 | Владимир Ипатов | {"logical_id": ["xenvg", "8aea288f-37ad-4cd0-8a76-1e36f4da32cb.disk0"], |
69 | 1 | Владимир Ипатов | </pre> |
70 | 1 | Владимир Ипатов | |
71 | 1 | Владимир Ипатов | В нем меняем vg "xenvg" на "ssd" |
72 | 1 | Владимир Ипатов | |
73 | 1 | Владимир Ипатов | Сохраняем файл. |
74 | 1 | Владимир Ипатов | |
75 | 1 | Владимир Ипатов | Запускаем ганети: |
76 | 1 | Владимир Ипатов | <pre> |
77 | 1 | Владимир Ипатов | service ganeti start |
78 | 1 | Владимир Ипатов | </pre> |
79 | 1 | Владимир Ипатов | |
80 | 1 | Владимир Ипатов | Если в кластере более одного узла, то запускаем копирование конфигурации: |
81 | 1 | Владимир Ипатов | <pre> |
82 | 1 | Владимир Ипатов | gnt-cluster redist-conf |
83 | 1 | Владимир Ипатов | </pre> |
84 | 1 | Владимир Ипатов | |
85 | 1 | Владимир Ипатов | проверяем, применились ли изменения, с помощью команды info: |
86 | 1 | Владимир Ипатов | |
87 | 1 | Владимир Ипатов | <pre> |
88 | 1 | Владимир Ипатов | gnt-instance info ИМЯ |
89 | 1 | Владимир Ипатов | </pre> |
90 | 1 | Владимир Ипатов | |
91 | 1 | Владимир Ипатов | Если все в порядке, то запускаем машину и ganeti-watcher |
92 | 1 | Владимир Ипатов | <pre> |
93 | 1 | Владимир Ипатов | gnt-instance startup ИМЯ |
94 | 1 | Владимир Ипатов | service ganeti-watcher start |
95 | 1 | Владимир Ипатов | </pre> |
96 | 1 | Владимир Ипатов | |
97 | 1 | Владимир Ипатов | |
98 | 3 | Владимир Ипатов | h2. Виртуальная машина на двух узлах |
99 | 3 | Владимир Ипатов | |
100 | 3 | Владимир Ипатов | Возможны два варианта производства этой операции: с остановкой и без. |
101 | 3 | Владимир Ипатов | Вариант без остановки более сложный и трудоемкий. |
102 | 3 | Владимир Ипатов | |
103 | 3 | Владимир Ипатов | h2. Перенос с остановкой |
104 | 3 | Владимир Ипатов | |
105 | 3 | Владимир Ипатов | машину следует перед переносом остановить и перевести в plain (сделать ее машиной на одном узле): |
106 | 3 | Владимир Ипатов | |
107 | 3 | Владимир Ипатов | <pre> |
108 | 3 | Владимир Ипатов | gnt-instance shutdown ИМЯ |
109 | 3 | Владимир Ипатов | gnt-instance modify -t plain ИМЯ |
110 | 3 | Владимир Ипатов | </pre> |
111 | 3 | Владимир Ипатов | |
112 | 3 | Владимир Ипатов | После этого машина останется только на primary узле, дальнейшие операции проводятся так же, как для машины на одном узле, см. выше. |
113 | 3 | Владимир Ипатов | |
114 | 3 | Владимир Ипатов | по завершении переноса машина переводится в drbd режим: |
115 | 3 | Владимир Ипатов | |
116 | 3 | Владимир Ипатов | <pre> |
117 | 3 | Владимир Ипатов | gnt-instance modify -t drbd -n gnt2 ИМЯ |
118 | 3 | Владимир Ипатов | </pre> |
119 | 3 | Владимир Ипатов | где gnt2 - имя нового secondary узла |
120 | 3 | Владимир Ипатов | |
121 | 3 | Владимир Ипатов | h2. Перенос без остановки |
122 | 4 | Владимир Ипатов | |
123 | 4 | Владимир Ипатов | Данная операция является потенциально опасной, следует выполнять ее только при полном понимании описываемых операций и последствий. |
124 | 4 | Владимир Ипатов | |
125 | 4 | Владимир Ипатов | h3. Подготовка |
126 | 4 | Владимир Ипатов | |
127 | 4 | Владимир Ипатов | получаем информацию об инстансе, интересует то, на каком узле он запущен и информация о дисках: |
128 | 4 | Владимир Ипатов | |
129 | 4 | Владимир Ипатов | <pre> |
130 | 4 | Владимир Ипатов | gnt-instance info ИМЯ |
131 | 4 | Владимир Ипатов | </pre> |
132 | 4 | Владимир Ипатов | |
133 | 4 | Владимир Ипатов | <pre> |
134 | 4 | Владимир Ипатов | Disks: |
135 | 4 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
136 | 4 | Владимир Ипатов | access mode: rw |
137 | 5 | Владимир Ипатов | nodeA: gnt2, minor=1 |
138 | 5 | Владимир Ипатов | nodeB: gnt1, minor=1 |
139 | 4 | Владимир Ипатов | port: 11001 |
140 | 4 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
141 | 5 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status ok |
142 | 4 | Владимир Ипатов | name: None |
143 | 4 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
144 | 4 | Владимир Ипатов | child devices: |
145 | 4 | Владимир Ипатов | - child 0: plain, size 10.0G |
146 | 5 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
147 | 4 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4) |
148 | 4 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4) |
149 | 4 | Владимир Ипатов | name: None |
150 | 4 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
151 | 4 | Владимир Ипатов | - child 1: plain, size 128M |
152 | 4 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
153 | 4 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
154 | 1 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
155 | 1 | Владимир Ипатов | name: None |
156 | 1 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
157 | 1 | Владимир Ипатов | |
158 | 5 | Владимир Ипатов | </pre> |
159 | 5 | Владимир Ипатов | |
160 | 5 | Владимир Ипатов | Итак, мы видим, что машина запущена на gnt2, устройство /dev/drbd1, lvm том /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
161 | 5 | Владимир Ипатов | |
162 | 5 | Владимир Ипатов | Далее, нужно запустить мастер на узле, который является *SECONDARY* для виртуальной машины, заходим на него и gnt-cluster master-failover |
163 | 5 | Владимир Ипатов | |
164 | 5 | Владимир Ипатов | затем останавливаем ganeti-watcher НА ОБОИХ узлах: |
165 | 5 | Владимир Ипатов | <pre> |
166 | 5 | Владимир Ипатов | service ganeti-watcher stop |
167 | 5 | Владимир Ипатов | </pre> |
168 | 5 | Владимир Ипатов | |
169 | 5 | Владимир Ипатов | Далее, переходим на узел, где машина secondary (в нашем случае это мастер, gnt1) |
170 | 5 | Владимир Ипатов | |
171 | 5 | Владимир Ипатов | Далее, нужно отцепить drbd от текущего тома старой vg: |
172 | 5 | Владимир Ипатов | <pre> |
173 | 5 | Владимир Ипатов | drbdsetup resource1 down |
174 | 5 | Владимир Ипатов | </pre> |
175 | 5 | Владимир Ипатов | где resource1 - это аналог /dev/drbd1 |
176 | 5 | Владимир Ипатов | |
177 | 5 | Владимир Ипатов | Переименовываем том в старой vg, а также это будет наш бэкап: |
178 | 5 | Владимир Ипатов | <pre> |
179 | 5 | Владимир Ипатов | lvrename ssd 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data gate-disk0 |
180 | 5 | Владимир Ипатов | </pre> |
181 | 5 | Владимир Ипатов | |
182 | 5 | Владимир Ипатов | затем заново активируем drbd: |
183 | 5 | Владимир Ипатов | <pre> |
184 | 5 | Владимир Ипатов | gnt-instance activate-disks ИМЯ |
185 | 5 | Владимир Ипатов | </pre> |
186 | 5 | Владимир Ипатов | |
187 | 5 | Владимир Ипатов | после этого проверяем, что диск проиницализировался заново и он считается Diskless, запускаем команду drbd-overview: |
188 | 5 | Владимир Ипатов | <pre> |
189 | 5 | Владимир Ипатов | 1:??not-found?? Connected Secondary/Primary Diskless/UpToDate |
190 | 5 | Владимир Ипатов | </pre> |
191 | 5 | Владимир Ипатов | |
192 | 6 | Владимир Ипатов | Также видим, что диск считается degraded, missing disk в выводе gnt-instance info: |
193 | 6 | Владимир Ипатов | |
194 | 1 | Владимир Ипатов | <pre> |
195 | 6 | Владимир Ипатов | Disks: |
196 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
197 | 6 | Владимир Ипатов | access mode: rw |
198 | 6 | Владимир Ипатов | nodeA: gnt2.pproduct, minor=1 |
199 | 6 | Владимир Ипатов | nodeB: gnt1.pproduct, minor=1 |
200 | 6 | Владимир Ипатов | port: 11001 |
201 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
202 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK* |
203 | 6 | Владимир Ипатов | name: None |
204 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
205 | 6 | Владимир Ипатов | child devices: |
206 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
207 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
208 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:4) |
209 | 6 | Владимир Ипатов | name: None |
210 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
211 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
212 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
213 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
214 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
215 | 6 | Владимир Ипатов | name: None |
216 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
217 | 6 | Владимир Ипатов | </pre> |
218 | 6 | Владимир Ипатов | |
219 | 6 | Владимир Ипатов | h3. непосредственно перенос |
220 | 6 | Владимир Ипатов | |
221 | 6 | Владимир Ипатов | Останавливаем ganeti на мастере, делаем резервную копию конфига |
222 | 6 | Владимир Ипатов | <pre> |
223 | 5 | Владимир Ипатов | service ganeti stop |
224 | 5 | Владимир Ипатов | cp /var/lib/ganeti/config.data ~ |
225 | 5 | Владимир Ипатов | </pre> |
226 | 5 | Владимир Ипатов | |
227 | 5 | Владимир Ипатов | открываем конфиг, находим по имени тома секцию конфига, относящуюся к диску (там json без отступов и переводов строки, так что пользуемся поиском по подстроке): |
228 | 5 | Владимир Ипатов | <pre> |
229 | 5 | Владимир Ипатов | [{"logical_id": ["8db85567-d4d7-427d-916e-382ab6d9448b", "05ddeac2-8a00-42a5-bf8c-68a440d29d49", 11001, 1, 1, "6adc50aa8fda95beb7b1565c3eb2fd688a9e8a47"], "uuid": "4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2", "dev_type": "drbd", "params": {}, "mode": "rw", "children": [{"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"], "params": {}, "uuid": "4a24c9fb-cd8e-4034-b908-18d3d83c246d", "size": 10240}, {"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"], |
230 | 5 | Владимир Ипатов | </pre> |
231 | 5 | Владимир Ипатов | нас интересует то, что относится к _data, не _meta: |
232 | 5 | Владимир Ипатов | <pre> |
233 | 5 | Владимир Ипатов | {"dev_type": "plain", "logical_id": ["ssd", "590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"], "params": {}, "uuid": "4a24c9fb-cd8e-4034-b908-18d3d83c246d", "size": 10240} |
234 | 5 | Владимир Ипатов | </pre> |
235 | 5 | Владимир Ипатов | меняем в конфиге имя vg на новую (вместо "ssd" - "xenvg"), только для _data, не для _meta |
236 | 5 | Владимир Ипатов | сохраняем конфиг |
237 | 5 | Владимир Ипатов | |
238 | 5 | Владимир Ипатов | затем, на узле, где машина сейчас запущена (т.е. не на том, который сейчас мастер и где мы сейчас редактировали конфиг), создаем том в новой vg. |
239 | 5 | Владимир Ипатов | В нашем примере это узел gnt2. |
240 | 5 | Владимир Ипатов | <pre> |
241 | 5 | Владимир Ипатов | lvcreate -L10G -n 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data xenvg |
242 | 1 | Владимир Ипатов | </pre> |
243 | 6 | Владимир Ипатов | |
244 | 6 | Владимир Ипатов | запускаем ganeti: |
245 | 6 | Владимир Ипатов | <pre> |
246 | 6 | Владимир Ипатов | service ganeti start |
247 | 6 | Владимир Ипатов | </pre> |
248 | 6 | Владимир Ипатов | |
249 | 6 | Владимир Ипатов | делаем gnt-instance info, вывод: |
250 | 6 | Владимир Ипатов | |
251 | 6 | Владимир Ипатов | <pre> |
252 | 6 | Владимир Ипатов | Disks: |
253 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
254 | 6 | Владимир Ипатов | access mode: rw |
255 | 6 | Владимир Ипатов | nodeA: gnt2.pproduct, minor=1 |
256 | 6 | Владимир Ипатов | nodeB: gnt1.pproduct, minor=1 |
257 | 6 | Владимир Ипатов | port: 11001 |
258 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
259 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK* |
260 | 6 | Владимир Ипатов | name: None |
261 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
262 | 6 | Владимир Ипатов | child devices: |
263 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
264 | 6 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
265 | 6 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
266 | 6 | Владимир Ипатов | name: None |
267 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
268 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
269 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
270 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
271 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
272 | 6 | Владимир Ипатов | name: None |
273 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
274 | 6 | Владимир Ипатов | |
275 | 6 | Владимир Ипатов | </pre> |
276 | 6 | Владимир Ипатов | |
277 | 6 | Владимир Ипатов | ганети считает, что drbd собран на /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data, при этом он отсутствует на secondary. На primary том присутствует, но он пока не используется, он только для обмана ganeti. |
278 | 6 | Владимир Ипатов | |
279 | 6 | Владимир Ипатов | Теперь можно запустить процедуру пересоздания томов для drbd: |
280 | 6 | Владимир Ипатов | <pre> |
281 | 6 | Владимир Ипатов | gnt-instance replace-disks -a ИМЯ |
282 | 6 | Владимир Ипатов | </pre> |
283 | 6 | Владимир Ипатов | она проверит, присутствуют ли все тома для этого диска на обоих нодах. У нас отсутствует том _data на secondary ноде, он его создаст, подцепит к drbd, отсинкает. |
284 | 6 | Владимир Ипатов | |
285 | 6 | Владимир Ипатов | После завершения процедуры у нас окажется, что на узле, где крутится машина, drbd собран на старой vg, а на вторичном узле - уже на новой, и все штатно работает. смотрим: |
286 | 6 | Владимир Ипатов | drbd-overview: |
287 | 6 | Владимир Ипатов | <pre> |
288 | 7 | Владимир Ипатов | 1:??not-found?? Connected Secondary/Primary UpToDate/UpToDate |
289 | 6 | Владимир Ипатов | </pre> |
290 | 6 | Владимир Ипатов | |
291 | 6 | Владимир Ипатов | gnt-instance info: |
292 | 1 | Владимир Ипатов | <pre> |
293 | 7 | Владимир Ипатов | Disks: |
294 | 7 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
295 | 7 | Владимир Ипатов | access mode: rw |
296 | 7 | Владимир Ипатов | nodeA: gnt2.pproduct, minor=1 |
297 | 7 | Владимир Ипатов | nodeB: gnt1.pproduct, minor=1 |
298 | 7 | Владимир Ипатов | port: 11001 |
299 | 7 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
300 | 7 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status ok |
301 | 7 | Владимир Ипатов | name: None |
302 | 7 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
303 | 7 | Владимир Ипатов | child devices: |
304 | 7 | Владимир Ипатов | - child 0: plain, size 10.0G |
305 | 7 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
306 | 7 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
307 | 7 | Владимир Ипатов | on secondary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
308 | 7 | Владимир Ипатов | name: None |
309 | 7 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
310 | 7 | Владимир Ипатов | - child 1: plain, size 128M |
311 | 7 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
312 | 7 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
313 | 7 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
314 | 7 | Владимир Ипатов | name: None |
315 | 7 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
316 | 6 | Владимир Ипатов | </pre> |
317 | 6 | Владимир Ипатов | |
318 | 6 | Владимир Ипатов | drbdsetup resource1 show на gnt2 (где запущена машина): |
319 | 6 | Владимир Ипатов | <pre> |
320 | 6 | Владимир Ипатов | resource resource1 { |
321 | 6 | Владимир Ипатов | options { |
322 | 6 | Владимир Ипатов | } |
323 | 6 | Владимир Ипатов | net { |
324 | 6 | Владимир Ипатов | max-buffers 8000; |
325 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
326 | 6 | Владимир Ипатов | shared-secret ""; |
327 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
328 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
329 | 6 | Владимир Ипатов | } |
330 | 6 | Владимир Ипатов | _remote_host { |
331 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
332 | 6 | Владимир Ипатов | } |
333 | 6 | Владимир Ипатов | _this_host { |
334 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
335 | 6 | Владимир Ипатов | volume 0 { |
336 | 6 | Владимир Ипатов | device minor 1; |
337 | 6 | Владимир Ипатов | disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
338 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
339 | 6 | Владимир Ипатов | disk { |
340 | 6 | Владимир Ипатов | size 20971520s; # bytes |
341 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
342 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
343 | 6 | Владимир Ипатов | } |
344 | 6 | Владимир Ипатов | } |
345 | 6 | Владимир Ипатов | } |
346 | 6 | Владимир Ипатов | } |
347 | 6 | Владимир Ипатов | </pre> |
348 | 6 | Владимир Ипатов | см. "disk" |
349 | 6 | Владимир Ипатов | drbdsetup resource1 show на gnt1 (вторичный узел): |
350 | 6 | Владимир Ипатов | <pre> |
351 | 6 | Владимир Ипатов | resource resource1 { |
352 | 6 | Владимир Ипатов | options { |
353 | 6 | Владимир Ипатов | } |
354 | 6 | Владимир Ипатов | net { |
355 | 6 | Владимир Ипатов | max-buffers 8000; |
356 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
357 | 6 | Владимир Ипатов | shared-secret ""; |
358 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
359 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
360 | 6 | Владимир Ипатов | } |
361 | 6 | Владимир Ипатов | _remote_host { |
362 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
363 | 6 | Владимир Ипатов | } |
364 | 6 | Владимир Ипатов | _this_host { |
365 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
366 | 6 | Владимир Ипатов | volume 0 { |
367 | 6 | Владимир Ипатов | device minor 1; |
368 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
369 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
370 | 6 | Владимир Ипатов | disk { |
371 | 6 | Владимир Ипатов | size 20971520s; # bytes |
372 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
373 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
374 | 6 | Владимир Ипатов | } |
375 | 6 | Владимир Ипатов | } |
376 | 6 | Владимир Ипатов | } |
377 | 6 | Владимир Ипатов | } |
378 | 6 | Владимир Ипатов | </pre> |
379 | 6 | Владимир Ипатов | |
380 | 6 | Владимир Ипатов | Таким образом, половина операции завершена. |
381 | 6 | Владимир Ипатов | |
382 | 6 | Владимир Ипатов | h3. Миграция и перенос второго узла. |
383 | 6 | Владимир Ипатов | |
384 | 6 | Владимир Ипатов | первым делом на узле, где крутится машина, удаляем диск, который мы создавали перед заменой vg (т.е. у нас это gnt2): |
385 | 6 | Владимир Ипатов | <pre> |
386 | 6 | Владимир Ипатов | lvremove /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
387 | 6 | Владимир Ипатов | </pre> |
388 | 6 | Владимир Ипатов | Если он говорит, что том занят, значит вы удаляете не то и не там. |
389 | 6 | Владимир Ипатов | |
390 | 6 | Владимир Ипатов | Распространяем обновленную конфигурацию ганети по кластеру (запускается с мастера, все еще gnt1): |
391 | 6 | Владимир Ипатов | <pre> |
392 | 6 | Владимир Ипатов | gnt-cluster redist-conf |
393 | 6 | Владимир Ипатов | </pre> |
394 | 6 | Владимир Ипатов | |
395 | 6 | Владимир Ипатов | Мигрируем машину на secondary узел: |
396 | 6 | Владимир Ипатов | <pre> |
397 | 6 | Владимир Ипатов | gnt-instance migrate ИМЯ |
398 | 6 | Владимир Ипатов | </pre> |
399 | 6 | Владимир Ипатов | |
400 | 6 | Владимир Ипатов | |
401 | 6 | Владимир Ипатов | После миграции машины переводим мастер на новый вторичный узел (у нас это будет gnt2, с него только что уехала машина) |
402 | 6 | Владимир Ипатов | <pre> |
403 | 6 | Владимир Ипатов | gnt-cluster master-failover |
404 | 6 | Владимир Ипатов | </pre> |
405 | 6 | Владимир Ипатов | |
406 | 6 | Владимир Ипатов | на нем же отцепляем том в старой vg от drbd, переименовываем (еще один бэкап): |
407 | 6 | Владимир Ипатов | <pre> |
408 | 6 | Владимир Ипатов | drbdsetup resource1 down |
409 | 6 | Владимир Ипатов | lvrename ssd 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data gate-disk0 |
410 | 6 | Владимир Ипатов | </pre> |
411 | 6 | Владимир Ипатов | |
412 | 6 | Владимир Ипатов | инициализируем drbd в diskless: |
413 | 6 | Владимир Ипатов | <pre> |
414 | 6 | Владимир Ипатов | gnt-instance activate-disks ИМЯ |
415 | 6 | Владимир Ипатов | </pre> |
416 | 6 | Владимир Ипатов | проверяем drbd-overview: |
417 | 6 | Владимир Ипатов | <pre> |
418 | 6 | Владимир Ипатов | 1:??not-found?? Connected Secondary/Primary Diskless/UpToDate |
419 | 6 | Владимир Ипатов | </pre> |
420 | 6 | Владимир Ипатов | проверяем gnt-instance info: |
421 | 6 | Владимир Ипатов | <pre> |
422 | 6 | Владимир Ипатов | Disks: |
423 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
424 | 6 | Владимир Ипатов | access mode: rw |
425 | 6 | Владимир Ипатов | nodeA: gnt1.pproduct, minor=1 |
426 | 6 | Владимир Ипатов | nodeB: gnt2.pproduct, minor=1 |
427 | 6 | Владимир Ипатов | port: 11001 |
428 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
429 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK* |
430 | 6 | Владимир Ипатов | name: None |
431 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
432 | 6 | Владимир Ипатов | child devices: |
433 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
434 | 6 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
435 | 6 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
436 | 6 | Владимир Ипатов | name: None |
437 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
438 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
439 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
440 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
441 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
442 | 6 | Владимир Ипатов | name: None |
443 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
444 | 6 | Владимир Ипатов | </pre> |
445 | 6 | Владимир Ипатов | |
446 | 6 | Владимир Ипатов | запускаем создание томов и ресинк: |
447 | 6 | Владимир Ипатов | <pre> |
448 | 6 | Владимир Ипатов | gnt-instance replace-disks -a ИМЯ |
449 | 6 | Владимир Ипатов | </pre> |
450 | 6 | Владимир Ипатов | |
451 | 6 | Владимир Ипатов | после завершения процесса проверяем, что drbd подцеплен к нужным дискам, на обоих нодах: |
452 | 6 | Владимир Ипатов | gnt1 drbdsetup resource1 show: |
453 | 6 | Владимир Ипатов | <pre> |
454 | 6 | Владимир Ипатов | resource resource1 { |
455 | 6 | Владимир Ипатов | options { |
456 | 6 | Владимир Ипатов | } |
457 | 6 | Владимир Ипатов | net { |
458 | 6 | Владимир Ипатов | max-buffers 8000; |
459 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
460 | 6 | Владимир Ипатов | shared-secret ""; |
461 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
462 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
463 | 6 | Владимир Ипатов | } |
464 | 6 | Владимир Ипатов | _remote_host { |
465 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
466 | 6 | Владимир Ипатов | } |
467 | 6 | Владимир Ипатов | _this_host { |
468 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
469 | 6 | Владимир Ипатов | volume 0 { |
470 | 6 | Владимир Ипатов | device minor 1; |
471 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
472 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
473 | 6 | Владимир Ипатов | disk { |
474 | 6 | Владимир Ипатов | size 20971520s; # bytes |
475 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
476 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
477 | 6 | Владимир Ипатов | } |
478 | 6 | Владимир Ипатов | } |
479 | 6 | Владимир Ипатов | } |
480 | 6 | Владимир Ипатов | } |
481 | 6 | Владимир Ипатов | </pre> |
482 | 6 | Владимир Ипатов | gnt2 drbdsetup resource1 show |
483 | 6 | Владимир Ипатов | <pre> |
484 | 6 | Владимир Ипатов | resource resource1 { |
485 | 6 | Владимир Ипатов | options { |
486 | 6 | Владимир Ипатов | } |
487 | 6 | Владимир Ипатов | net { |
488 | 6 | Владимир Ипатов | max-buffers 8000; |
489 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
490 | 6 | Владимир Ипатов | shared-secret ""; |
491 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
492 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
493 | 6 | Владимир Ипатов | } |
494 | 6 | Владимир Ипатов | _remote_host { |
495 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
496 | 6 | Владимир Ипатов | } |
497 | 6 | Владимир Ипатов | _this_host { |
498 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
499 | 6 | Владимир Ипатов | volume 0 { |
500 | 6 | Владимир Ипатов | device minor 1; |
501 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
502 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
503 | 6 | Владимир Ипатов | disk { |
504 | 6 | Владимир Ипатов | size 20971520s; # bytes |
505 | 6 | Владимир Ипатов | resync-rate 66560k; # bytes/second |
506 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
507 | 6 | Владимир Ипатов | } |
508 | 6 | Владимир Ипатов | } |
509 | 6 | Владимир Ипатов | } |
510 | 6 | Владимир Ипатов | } |
511 | 6 | Владимир Ипатов | </pre> |
512 | 6 | Владимир Ипатов | |
513 | 6 | Владимир Ипатов | gnt-instance info: |
514 | 6 | Владимир Ипатов | <pre> |
515 | 6 | Владимир Ипатов | Disks: |
516 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
517 | 6 | Владимир Ипатов | access mode: rw |
518 | 6 | Владимир Ипатов | nodeA: gnt1.pproduct, minor=1 |
519 | 6 | Владимир Ипатов | nodeB: gnt2.pproduct, minor=1 |
520 | 6 | Владимир Ипатов | port: 11001 |
521 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
522 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status ok |
523 | 6 | Владимир Ипатов | name: None |
524 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
525 | 6 | Владимир Ипатов | child devices: |
526 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
527 | 6 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
528 | 6 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
529 | 6 | Владимир Ипатов | on secondary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
530 | 6 | Владимир Ипатов | name: None |
531 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
532 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
533 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
534 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
535 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
536 | 6 | Владимир Ипатов | name: None |
537 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
538 | 6 | Владимир Ипатов | </pre> |
539 | 6 | Владимир Ипатов | |
540 | 6 | Владимир Ипатов | если все хорошо, запускаем watcher НА ОБОИХ нодах: |
541 | 6 | Владимир Ипатов | <pre> |
542 | 6 | Владимир Ипатов | sudo service ganeti-watcher start |
543 | 6 | Владимир Ипатов | </pre> |
544 | 6 | Владимир Ипатов | |
545 | 6 | Владимир Ипатов | через некоторое время тома в старой vg можно удалить. |