Желілік инфрақұрылымды көшіру
-
Миграция үшін жобаны таңдаңыз.
-
Жобаңызда қандай SDN қосылғанын қараңыз. Егер SDN Sprut қосылмаған болса, техникалық қолдауға жүгініңіз.
-
Миграцияны орындау үшін әкімшінің жұмыс орнын дайындаңыз:
-
Интернетке қолжетімділігі бар ішкі желіде ВМ жасаңыз. Келесі параметрлерді көрсетіңіз:
- Операциялық жүйе: Ubuntu таңдаңыз.
- Firewall баптаулары: CLI арқылы ВМ-ге қол жеткізу үшін
sshкөрсетіңіз. - Сыртқы IP тағайындау: опцияны қосыңыз.
- Қалған параметрлерді өз қалауыңыз бойынша таңдаңыз.
-
ВМ жасалғанын күтіңіз және оған SSH арқылы қосылыңыз.
-
Команданы орындап, пакеттер индекстерін жаңартыңыз:
sudo apt-get update -
jq утилитасын орнатыңыз:
sudo apt-get install -y jq -
OpenStack клиентін орнатыңыз және жоба ішінде аутентификациядан өтіңіз.
-
Миграцияны орындауға арналған скрипттері бар репозиторийді көшіріңіз:
git clone https://github.com/vk-cs/neutron-2-sprut.git -
neutron-2-sprutдиректориясына өтіңіз. -
Осы директориядағы
.shкеңейтімі бар барлық файлдарға орындау құқықтарын қосатын команданы орындаңыз:chmod +x .sh
-
Жобаның желілік инфрақұрылымын бағалап, көшіру қажет мәндерді анықтаңыз:
-
Әкімші ВМ-іне SSH арқылы қосылыңыз.
-
ВМ тізімін алыңыз:
openstack server listЖауаптан келесі мәліметтерді тауып, сақтаңыз:
- Бірнеше желілік интерфейсі бар виртуалды машиналардың ID-лері.
- Тағайындалған Floating IP-адрестері бар виртуалды машиналардың ID-лері және IP-адрестері.
- Көшіру қажет қалған барлық ВМ-дердің ID-лері.
-
Маршрутизаторлар тізімін алыңыз:
openstack router listКөшіру қажет маршрутизаторлардың ID-лерін сақтаңыз.
-
Егер жобаңызда IPsec-туннельдер болса, туннельді құру үшін пайдаланылатын маршрутизаторлардың ID-лерін сақтаңыз.
-
Қауіпсіздік топтарының тізімін алыңыз:
openstack security group listӘдепкі топтардан басқа барлық қауіпсіздік топтарының атауларын сақтаңыз:
all,default,ssh+www. -
Әдепкі
all,default,ssh+wwwтоптарының атаулары SDN Sprut және Neutron ішінде бірдей. Осы топтардың идентификаторларын біліп, сақтаңыз:- VK Cloud жеке кабинетіне өтіңіз.
- Жобаны таңдаңыз.
- Виртуалды желілер → Firewall баптаулары бөліміне өтіңіз.
- SDN Sprut және Neutron ішіндегі
all,default,ssh+wwwтоптарының ID-лерін тауып, сақтаңыз.
-
Әкімші ВМ-іне SSH арқылы қосылып,
neutron-2-sprutдиректориясына өтіңіз. -
Маршрутизаторлар тізімі бар CSV форматындағы конфигурациялық файл жасаңыз. Бұл файл скрипт көмегімен базалық желілік мәндерді көшіру үшін қажет болады.
Файл пішімі:
<МАРШРУТИЗАТОР_1>,<КӨШІРМЕ_ТҮРІ><МАРШРУТИЗАТОР_2>,<КӨШІРМЕ_ТҮРІ>Мұнда:
-
<МАРШРУТИЗАТОР_1>,<МАРШРУТИЗАТОР_2>— маршрутизаторлардың идентификаторлары. -
<КӨШІРМЕ_ТҮРІ>— SDN Sprut-тағы маршрутизатор көшірмесінің түрі:std— көшірме стандартты маршрутизатор түрінде жасалады.adv— көшірме кеңейтілген маршрутизатор түрінде жасалады. Егер жобаңыздағы маршрутизатор IPsec-туннель құру үшін пайдаланылса, осы параметрді көрсетіңіз.
Маршрутизаторларды көшіруге арналған конфигурациялық файл мысалы:
35fbfb7c-aaaa-aaaa-aaaa-c3fb4d833dee,adva2dd20ca-bbbb-bbbb-bbbb-7ea8b00a81a6,std -
-
Маршрутизаторларды миграциялау скриптін іске қосыңыз:
./copy-router-and-networks.sh <ФАЙЛ_АТАУЫ>Мұнда
<ФАЙЛ_АТАУЫ>— маршрутизаторлар тізімі бар конфигурациялық файлдың атауы.Мысал:
./copy-router-and-networks.sh config.csvСкрипт орындалғаннан кейін көрсетілген маршрутизаторлар SDN Sprut-қа статикалық маршруттармен, желілермен және олар қосылған ішкі желілермен бірге көшіріледі. Әрбір көшірілген мәннің атауына
-sprutпостфиксі қосылады.
Көшірілген мәндерді қарап шығып, барлық маршрутизаторлар, желілер және ішкі желілер көшірілгеніне көз жеткізіңіз:
-
Желілер тізімін тексеріңіз:
openstack network list -
Ішкі желілер тізімін тексеріңіз:
openstack subnet list -
Стандартты маршрутизаторлар тізімін тексеріңіз:
openstack router list -
Қосылған кеңейтілген маршрутизаторлар тізімін тексеріңіз. Ол үшін жеке кабинетке өтіңіз немесе REST API сұрауын орындаңыз:
sprut_api_base="https://infra.mail.ru:9696/v2.0"token=$(openstack token issue -c id -f value)sprut_advanced_routers=$(curl -s -X GET "${sprut_api_base}/direct_connect/dc_routers" \-H "Content-Type: application/json" \-H "X-Auth-Token: $token" \-H "X-SDN:SPRUT")echo "Advanced routers collected:"echo "$sprut_advanced_routers" | jq .echo ""
Егер жобада IPsec-туннель пайдаланылса, скрипт жасаған кеңейтілген маршрутизаторды баптаңыз және оны IPsec-туннелін қосуға дайындаңыз.
Бірдей селекторлары (ішкі желілердің бастапқы және мақсатты диапазондары) бар туннельдер, тіпті әртүрлі SDN ішінде болса да, бір уақытта қатар өмір сүре алмайды. Сондықтан SDN Sprut-та SDN Neutron-тағы туннельге ұқсас туннельді алдын ала жасауға болмайды, өйткені бұл бастапқы туннельдің жұмысына қатысты мәселелерге әкеледі.
- SDN Neutron-тағы бастапқы туннельді жойыңыз.
- SDN Sprut-та бапталған кеңейтілген маршрутизатор үшін жаңа VPN-туннелін қосыңыз және IPsec-саясатының параметрлерін орнатыңыз.
-
Әкімші ВМ-іне SSH арқылы қосылыңыз.
-
neutron-2-sprutдиректориясына өтіңіз. -
Қауіпсіздік топтарын SDN Sprut-қа көшіріңіз:
./copy-security-group.sh \--group-mapping=<NEUTRON_ТОП_1>=<SPRUT_ТОП_1>,<NEUTRON_ТОП_2>=<SPRUT_ТОП_2>,... \--groups=<ТОП_3>,<ТОП_4>,...Мұнда:
-
--group-mapping— параметр әртүрлі SDN-дердің бұрыннан бар қауіпсіздік топтарын ID бойынша өзара сәйкестендіруге мүмкіндік береді. Бұл көшірілетін топтарда дереккөз CIDR емес, басқа қауіпсіздік тобы болатын ережелер бар болса қажет. Әдетте, бұлall,default,ssh+wwwтоптары. Параметр аргументтері:<NEUTRON_ТОП_1>,<NEUTRON_ТОП_2>— SDN Neutron ішіндегі қауіпсіздік топтарының идентификаторлары;<SPRUT_ТОП_1>,<SPRUT_ТОП_2>— SDN Sprut ішіндегі қауіпсіздік топтарының идентификаторлары;
-
--groups— параметр SDN Neutron ішіндегі SDN Sprut-қа көшірілуі тиіс қауіпсіздік топтарының атауларын көрсетеді. Параметр аргументтері:<ТОП_3>,<ТОП_4>— көшірілетін топтардың атаулары.
Команда мысалы:
./copy-security-group.sh \--group-mapping=4a361c99-cccc-cccc-cccc-b59fb469d354=121a7574-dddd-dddd-dddd-66baa01400d6,14f303dc-aaaa-aaaa-aaaa-9637c9c342df=3371584a-bbbb-bbbb-bbbb-1cc9f3e89601 \--groups=web-server-security,spark-k8s-6681-master,ml_sec_groupҚауіпсіздік топтары
-sprutпостфиксімен көшіріледі. -
SDN Sprut-тағы қауіпсіздік топтары SDN Neutron-тағы қауіпсіздік топтарына ұқсас екеніне көз жеткізіңіз. SDN Neutron-тан көшірілген SDN Sprut топтарында -sprut постфиксі бар.
-
Әкімші ВМ-іне SSH арқылы қосылып,
neutron-2-sprutдиректориясына өтіңіз. -
Скриптті іске қосыңыз:
./check-if-all-sprut-sg-present.shЕгер барлық қажетті топтар көшірілсе, скрипт орындалуы нәтижесінде келесі хабарлама қайтарылады:
All security groups have corresponding '-sprut' groups.
Floating IP-адрестерін басқа SDN-ге көшіру мүмкін емес. Егер жобаңыздың инфрақұрылымында Floating IP-адрестер болса, SDN Sprut-та жаңаларын жасаңыз және оларды жазып алыңыз.
ВМ-ді SDN Sprut-қа көшіру үшін оның порттарын жаңа ішкі желілерге қосу қажет. Бұл ВМ порттарының санына және қосылу түріне байланысты әртүрлі тәсілдермен орындалады:
-
Бірнеше ВМ-ді бір скриптті орындау арқылы ауыстыруға болады, бірақ бұл ВМ-дерде тек бір желілік интерфейс болуы және сыртқы
ext-netжелісіне тікелей қосылымдары болмауы керек. -
Бір ВМ-ді жеке скриптті орындау арқылы ауыстыруға болады. Бұл тәсіл жобаңызда бірнеше желілік интерфейсі бар, яғни маршрутизатор, прокси немесе шекаралық файервол рөлін атқаратын ВМ болса қолайлы.
-
Егер конфигурацияңызда ВМ сыртқы
ext-netжелісіне тікелей қосылған болса, оны SDN Sprut-қа өзіңізге ыңғайлы кез келген тәсілмен көшіріңіз:- SDN Sprut-та Floating IP-адрес қосыңыз және оны ВМ-ге байланыстырыңыз.
- SDN Sprut-та ВМ-ді қайта жасаңыз және оны сыртқы
internetжелісіне қосыңыз.
-
Әкімші ВМ-іне SSH арқылы қосылып,
neutron-2-sprutдиректориясына өтіңіз. -
Көшіру қажет ВМ тізімі бар CSV форматындағы файл жасаңыз.
Файл пішімі:
<ВМ_1>,<SPRUT_ЖЕЛІ_1>,<SPRUT_ІШКІ_ЖЕЛІ_1>,<SPRUT_FLOATING-IP><ВМ_2>,<SPRUT_ЖЕЛІ_2>,<SPRUT_ІШКІ_ЖЕЛІ_2>Мұнда:
<ВМ_1>,<ВМ_2>— SDN Sprut-қа көшіру қажет ВМ атаулары.<SPRUT_ЖЕЛІ_1>,<SPRUT_ЖЕЛІ_2>— ВМ-ді қосу қажет SDN Sprut-тағы желілердің атаулары.<SPRUT_ІШКІ_ЖЕЛІ_1>,<SPRUT_ІШКІ_ЖЕЛІ_2>— ВМ-ді қосу қажет SDN Sprut-тағы ішкі желілердің атаулары.- (Қосымша)
<SPRUT_FLOATING_IP>— ВМ-ге байланыстыру қажет SDN Sprut-тағы Floating IP-адрес.
ВМ тізімі бар файл мысалы:
web-server-1,web-app-network-sprut,app-subnet-sprut,83.166.236.59web-server-2,web-app-network-sprut,app-subnet-sprut -
Миграция жүргізілетін техникалық терезені бөліңіз. ВМ ауысу кезінде желілік байланысын жоғалтады. Бір ВМ-ді ауыстыру шамамен 45 секунд алады.
-
ВМ-дердің белсенді екеніне көз жеткізіңіз:
openstack server listSDN Sprut-қа көшіру қажет барлық ВМ үшін күйі
ACTIVEболуы тиіс. -
Миграция скриптін іске қосыңыз:
./migrator-multiple.sh <ФАЙЛ_АТАУЫ> \--all-secgroup-sprut-id=<ALL_ТОБЫНЫҢ_ID> \--ssh-www-secgroup-sprut-id=<SSH+WWW_ТОБЫНЫҢ_ID>Мұнда:
<ФАЙЛ_АТАУЫ>— ВМ тізімі бар файл атауы.- (Қосымша )
--all-secgroup-sprut-id—allқауіпсіздік тобы жобаға әдепкі бойынша қосылады және SDN Sprut пен Neutron ішінде бір атауға ие. Егер топ ВМ-де пайдаланылса, OpenStack CLI қауіпсіздік тобының SDN-ге тиесілігін ажырата алуы үшін Sprut-тағы топтың ID-сін көрсетіңіз. Параметр аргументі:<ALL_ТОБЫНЫҢ_ID>— SDN Sprut-тағыallқауіпсіздік тобының идентификаторы. - (Қосымша )
--ssh-www-secgroup-sprut-id—ssh+wwwқауіпсіздік тобы жобаға әдепкі бойынша қосылады және SDN Sprut пен Neutron ішінде бір атауға ие. Егер топ ВМ-де пайдаланылса, OpenStack CLI қауіпсіздік тобының SDN-ге тиесілігін ажырата алуы үшін Sprut-тағы топтың ID-сін көрсетіңіз. Параметр аргументі:<SSH+WWW_ТОБЫНЫҢ_ID>— SDN Sprut-тағыssh+wwwқауіпсіздік тобының идентификаторы.
Команда мысалы:
./migrator-multiple.sh migrate-vm.csv \--all-secgroup-sprut-id=4a361c99-cccc-cccc-cccc-b59fb469d354=121a7574-eeee-eeee-eeee-66baa01400d6 \--ssh-www-secgroup-sprut-id=14f303dc-bbbb-bbbb-bbbb-9637c9c342df=3371584a-dddd-dddd-dddd-1cc9f3e89601 -
Әрбір ВМ үшін консольді ашыңыз немесе SSH арқылы қосылып, қосылған желілік интерфейске IP-адрес алу үшін DHCP-серверге сұрау жіберіңіз:
LinuxWindowsdhclient
Миграциядан кейін барлық ВМ қолжетімділігін тексеріңіз.
Егер SDN Neutron ресурстары енді қажет болмаса, оларды жойыңыз:
- Жобадан Floating IP-адрестерін алып тастаңыз.
- Қауіпсіздік топтарын жойыңыз.
- Желілерді және ішкі желілерді жойыңыз.
- Маршрутизаторларды жойыңыз.