Перенос виртуальной машины на другую vg » История » Версия 6
Владимир Ипатов, 03.03.2021 23:22
| 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 | 6 | Владимир Ипатов | |
| 289 | 6 | Владимир Ипатов | </pre> |
| 290 | 6 | Владимир Ипатов | |
| 291 | 6 | Владимир Ипатов | gnt-instance info: |
| 292 | 6 | Владимир Ипатов | <pre> |
| 293 | 6 | Владимир Ипатов | |
| 294 | 6 | Владимир Ипатов | </pre> |
| 295 | 6 | Владимир Ипатов | |
| 296 | 6 | Владимир Ипатов | drbdsetup resource1 show на gnt2 (где запущена машина): |
| 297 | 6 | Владимир Ипатов | <pre> |
| 298 | 6 | Владимир Ипатов | resource resource1 { |
| 299 | 6 | Владимир Ипатов | options { |
| 300 | 6 | Владимир Ипатов | } |
| 301 | 6 | Владимир Ипатов | net { |
| 302 | 6 | Владимир Ипатов | max-buffers 8000; |
| 303 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
| 304 | 6 | Владимир Ипатов | shared-secret ""; |
| 305 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
| 306 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
| 307 | 6 | Владимир Ипатов | } |
| 308 | 6 | Владимир Ипатов | _remote_host { |
| 309 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
| 310 | 6 | Владимир Ипатов | } |
| 311 | 6 | Владимир Ипатов | _this_host { |
| 312 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
| 313 | 6 | Владимир Ипатов | volume 0 { |
| 314 | 6 | Владимир Ипатов | device minor 1; |
| 315 | 6 | Владимир Ипатов | disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
| 316 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
| 317 | 6 | Владимир Ипатов | disk { |
| 318 | 6 | Владимир Ипатов | size 20971520s; # bytes |
| 319 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
| 320 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
| 321 | 6 | Владимир Ипатов | } |
| 322 | 6 | Владимир Ипатов | } |
| 323 | 6 | Владимир Ипатов | } |
| 324 | 6 | Владимир Ипатов | } |
| 325 | 6 | Владимир Ипатов | </pre> |
| 326 | 6 | Владимир Ипатов | см. "disk" |
| 327 | 6 | Владимир Ипатов | drbdsetup resource1 show на gnt1 (вторичный узел): |
| 328 | 6 | Владимир Ипатов | <pre> |
| 329 | 6 | Владимир Ипатов | resource resource1 { |
| 330 | 6 | Владимир Ипатов | options { |
| 331 | 6 | Владимир Ипатов | } |
| 332 | 6 | Владимир Ипатов | net { |
| 333 | 6 | Владимир Ипатов | max-buffers 8000; |
| 334 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
| 335 | 6 | Владимир Ипатов | shared-secret ""; |
| 336 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
| 337 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
| 338 | 6 | Владимир Ипатов | } |
| 339 | 6 | Владимир Ипатов | _remote_host { |
| 340 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
| 341 | 6 | Владимир Ипатов | } |
| 342 | 6 | Владимир Ипатов | _this_host { |
| 343 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
| 344 | 6 | Владимир Ипатов | volume 0 { |
| 345 | 6 | Владимир Ипатов | device minor 1; |
| 346 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
| 347 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
| 348 | 6 | Владимир Ипатов | disk { |
| 349 | 6 | Владимир Ипатов | size 20971520s; # bytes |
| 350 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
| 351 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
| 352 | 6 | Владимир Ипатов | } |
| 353 | 6 | Владимир Ипатов | } |
| 354 | 6 | Владимир Ипатов | } |
| 355 | 6 | Владимир Ипатов | } |
| 356 | 6 | Владимир Ипатов | </pre> |
| 357 | 6 | Владимир Ипатов | |
| 358 | 6 | Владимир Ипатов | Таким образом, половина операции завершена. |
| 359 | 6 | Владимир Ипатов | |
| 360 | 6 | Владимир Ипатов | h3. Миграция и перенос второго узла. |
| 361 | 6 | Владимир Ипатов | |
| 362 | 6 | Владимир Ипатов | первым делом на узле, где крутится машина, удаляем диск, который мы создавали перед заменой vg (т.е. у нас это gnt2): |
| 363 | 6 | Владимир Ипатов | <pre> |
| 364 | 6 | Владимир Ипатов | lvremove /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
| 365 | 6 | Владимир Ипатов | </pre> |
| 366 | 6 | Владимир Ипатов | Если он говорит, что том занят, значит вы удаляете не то и не там. |
| 367 | 6 | Владимир Ипатов | |
| 368 | 6 | Владимир Ипатов | Распространяем обновленную конфигурацию ганети по кластеру (запускается с мастера, все еще gnt1): |
| 369 | 6 | Владимир Ипатов | <pre> |
| 370 | 6 | Владимир Ипатов | gnt-cluster redist-conf |
| 371 | 6 | Владимир Ипатов | </pre> |
| 372 | 6 | Владимир Ипатов | |
| 373 | 6 | Владимир Ипатов | Мигрируем машину на secondary узел: |
| 374 | 6 | Владимир Ипатов | <pre> |
| 375 | 6 | Владимир Ипатов | gnt-instance migrate ИМЯ |
| 376 | 6 | Владимир Ипатов | </pre> |
| 377 | 6 | Владимир Ипатов | |
| 378 | 6 | Владимир Ипатов | |
| 379 | 6 | Владимир Ипатов | После миграции машины переводим мастер на новый вторичный узел (у нас это будет gnt2, с него только что уехала машина) |
| 380 | 6 | Владимир Ипатов | <pre> |
| 381 | 6 | Владимир Ипатов | gnt-cluster master-failover |
| 382 | 6 | Владимир Ипатов | </pre> |
| 383 | 6 | Владимир Ипатов | |
| 384 | 6 | Владимир Ипатов | на нем же отцепляем том в старой vg от drbd, переименовываем (еще один бэкап): |
| 385 | 6 | Владимир Ипатов | <pre> |
| 386 | 6 | Владимир Ипатов | drbdsetup resource1 down |
| 387 | 6 | Владимир Ипатов | lvrename ssd 590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data gate-disk0 |
| 388 | 6 | Владимир Ипатов | </pre> |
| 389 | 6 | Владимир Ипатов | |
| 390 | 6 | Владимир Ипатов | инициализируем drbd в diskless: |
| 391 | 6 | Владимир Ипатов | <pre> |
| 392 | 6 | Владимир Ипатов | gnt-instance activate-disks ИМЯ |
| 393 | 6 | Владимир Ипатов | </pre> |
| 394 | 6 | Владимир Ипатов | проверяем drbd-overview: |
| 395 | 6 | Владимир Ипатов | <pre> |
| 396 | 6 | Владимир Ипатов | 1:??not-found?? Connected Secondary/Primary Diskless/UpToDate |
| 397 | 6 | Владимир Ипатов | </pre> |
| 398 | 6 | Владимир Ипатов | проверяем gnt-instance info: |
| 399 | 6 | Владимир Ипатов | <pre> |
| 400 | 6 | Владимир Ипатов | Disks: |
| 401 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
| 402 | 6 | Владимир Ипатов | access mode: rw |
| 403 | 6 | Владимир Ипатов | nodeA: gnt1.pproduct, minor=1 |
| 404 | 6 | Владимир Ипатов | nodeB: gnt2.pproduct, minor=1 |
| 405 | 6 | Владимир Ипатов | port: 11001 |
| 406 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
| 407 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status *DEGRADED* *MISSING DISK* |
| 408 | 6 | Владимир Ипатов | name: None |
| 409 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
| 410 | 6 | Владимир Ипатов | child devices: |
| 411 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
| 412 | 6 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
| 413 | 6 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
| 414 | 6 | Владимир Ипатов | name: None |
| 415 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
| 416 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
| 417 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
| 418 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
| 419 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:5) |
| 420 | 6 | Владимир Ипатов | name: None |
| 421 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
| 422 | 6 | Владимир Ипатов | </pre> |
| 423 | 6 | Владимир Ипатов | |
| 424 | 6 | Владимир Ипатов | запускаем создание томов и ресинк: |
| 425 | 6 | Владимир Ипатов | <pre> |
| 426 | 6 | Владимир Ипатов | gnt-instance replace-disks -a ИМЯ |
| 427 | 6 | Владимир Ипатов | </pre> |
| 428 | 6 | Владимир Ипатов | |
| 429 | 6 | Владимир Ипатов | после завершения процесса проверяем, что drbd подцеплен к нужным дискам, на обоих нодах: |
| 430 | 6 | Владимир Ипатов | gnt1 drbdsetup resource1 show: |
| 431 | 6 | Владимир Ипатов | <pre> |
| 432 | 6 | Владимир Ипатов | resource resource1 { |
| 433 | 6 | Владимир Ипатов | options { |
| 434 | 6 | Владимир Ипатов | } |
| 435 | 6 | Владимир Ипатов | net { |
| 436 | 6 | Владимир Ипатов | max-buffers 8000; |
| 437 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
| 438 | 6 | Владимир Ипатов | shared-secret ""; |
| 439 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
| 440 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
| 441 | 6 | Владимир Ипатов | } |
| 442 | 6 | Владимир Ипатов | _remote_host { |
| 443 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
| 444 | 6 | Владимир Ипатов | } |
| 445 | 6 | Владимир Ипатов | _this_host { |
| 446 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
| 447 | 6 | Владимир Ипатов | volume 0 { |
| 448 | 6 | Владимир Ипатов | device minor 1; |
| 449 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
| 450 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
| 451 | 6 | Владимир Ипатов | disk { |
| 452 | 6 | Владимир Ипатов | size 20971520s; # bytes |
| 453 | 6 | Владимир Ипатов | resync-rate 122880k; # bytes/second |
| 454 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
| 455 | 6 | Владимир Ипатов | } |
| 456 | 6 | Владимир Ипатов | } |
| 457 | 6 | Владимир Ипатов | } |
| 458 | 6 | Владимир Ипатов | } |
| 459 | 6 | Владимир Ипатов | </pre> |
| 460 | 6 | Владимир Ипатов | gnt2 drbdsetup resource1 show |
| 461 | 6 | Владимир Ипатов | <pre> |
| 462 | 6 | Владимир Ипатов | resource resource1 { |
| 463 | 6 | Владимир Ипатов | options { |
| 464 | 6 | Владимир Ипатов | } |
| 465 | 6 | Владимир Ипатов | net { |
| 466 | 6 | Владимир Ипатов | max-buffers 8000; |
| 467 | 6 | Владимир Ипатов | cram-hmac-alg "md5"; |
| 468 | 6 | Владимир Ипатов | shared-secret ""; |
| 469 | 6 | Владимир Ипатов | after-sb-0pri discard-zero-changes; |
| 470 | 6 | Владимир Ипатов | after-sb-1pri consensus; |
| 471 | 6 | Владимир Ипатов | } |
| 472 | 6 | Владимир Ипатов | _remote_host { |
| 473 | 6 | Владимир Ипатов | address ipv4 10.101.200.11:11001; |
| 474 | 6 | Владимир Ипатов | } |
| 475 | 6 | Владимир Ипатов | _this_host { |
| 476 | 6 | Владимир Ипатов | address ipv4 10.101.200.12:11001; |
| 477 | 6 | Владимир Ипатов | volume 0 { |
| 478 | 6 | Владимир Ипатов | device minor 1; |
| 479 | 6 | Владимир Ипатов | disk "/dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data"; |
| 480 | 6 | Владимир Ипатов | meta-disk "/dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta"; |
| 481 | 6 | Владимир Ипатов | disk { |
| 482 | 6 | Владимир Ипатов | size 20971520s; # bytes |
| 483 | 6 | Владимир Ипатов | resync-rate 66560k; # bytes/second |
| 484 | 6 | Владимир Ипатов | c-plan-ahead 0; # 1/10 seconds |
| 485 | 6 | Владимир Ипатов | } |
| 486 | 6 | Владимир Ипатов | } |
| 487 | 6 | Владимир Ипатов | } |
| 488 | 6 | Владимир Ипатов | } |
| 489 | 6 | Владимир Ипатов | </pre> |
| 490 | 6 | Владимир Ипатов | |
| 491 | 6 | Владимир Ипатов | gnt-instance info: |
| 492 | 6 | Владимир Ипатов | <pre> |
| 493 | 6 | Владимир Ипатов | Disks: |
| 494 | 6 | Владимир Ипатов | - disk/0: drbd, size 10.0G |
| 495 | 6 | Владимир Ипатов | access mode: rw |
| 496 | 6 | Владимир Ипатов | nodeA: gnt1.pproduct, minor=1 |
| 497 | 6 | Владимир Ипатов | nodeB: gnt2.pproduct, minor=1 |
| 498 | 6 | Владимир Ипатов | port: 11001 |
| 499 | 6 | Владимир Ипатов | on primary: /dev/drbd1 (147:1) in sync, status ok |
| 500 | 6 | Владимир Ипатов | on secondary: /dev/drbd1 (147:1) in sync, status ok |
| 501 | 6 | Владимир Ипатов | name: None |
| 502 | 6 | Владимир Ипатов | UUID: 4dd153b6-f975-4c3f-a2f7-9dddbd6a3dc2 |
| 503 | 6 | Владимир Ипатов | child devices: |
| 504 | 6 | Владимир Ипатов | - child 0: plain, size 10.0G |
| 505 | 6 | Владимир Ипатов | logical_id: xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data |
| 506 | 6 | Владимир Ипатов | on primary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
| 507 | 6 | Владимир Ипатов | on secondary: /dev/xenvg/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_data (253:19) |
| 508 | 6 | Владимир Ипатов | name: None |
| 509 | 6 | Владимир Ипатов | UUID: 4a24c9fb-cd8e-4034-b908-18d3d83c246d |
| 510 | 6 | Владимир Ипатов | - child 1: plain, size 128M |
| 511 | 6 | Владимир Ипатов | logical_id: ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta |
| 512 | 6 | Владимир Ипатов | on primary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
| 513 | 6 | Владимир Ипатов | on secondary: /dev/ssd/590d122d-57bb-4a3d-a6d4-95542d42cf26.disk0_meta (253:20) |
| 514 | 6 | Владимир Ипатов | name: None |
| 515 | 6 | Владимир Ипатов | UUID: 37dc4222-a29a-42d0-a1a5-3e2c9b0aec8a |
| 516 | 6 | Владимир Ипатов | </pre> |
| 517 | 6 | Владимир Ипатов | |
| 518 | 6 | Владимир Ипатов | если все хорошо, запускаем watcher НА ОБОИХ нодах: |
| 519 | 6 | Владимир Ипатов | <pre> |
| 520 | 6 | Владимир Ипатов | sudo service ganeti-watcher start |
| 521 | 6 | Владимир Ипатов | </pre> |
| 522 | 6 | Владимир Ипатов | |
| 523 | 6 | Владимир Ипатов | через некоторое время тома в старой vg можно удалить. |