VK Cloud logo

Желілік инфрақұрылымды көшіру

Дайындық қадамдары

  1. Миграция үшін жобаны таңдаңыз.

  2. Жобаңызда қандай SDN қосылғанын қараңыз. Егер SDN Sprut қосылмаған болса, техникалық қолдауға жүгініңіз.

  3. Миграцияны орындау үшін әкімшінің жұмыс орнын дайындаңыз:

    1. Интернетке қолжетімділігі бар ішкі желіде ВМ жасаңыз. Келесі параметрлерді көрсетіңіз:

      • Операциялық жүйе: Ubuntu таңдаңыз.
      • Firewall баптаулары: CLI арқылы ВМ-ге қол жеткізу үшін ssh көрсетіңіз.
      • Сыртқы IP тағайындау: опцияны қосыңыз.
      • Қалған параметрлерді өз қалауыңыз бойынша таңдаңыз.
    2. ВМ жасалғанын күтіңіз және оған SSH арқылы қосылыңыз.

    3. Команданы орындап, пакеттер индекстерін жаңартыңыз:

      sudo apt-get update
    4. jq утилитасын орнатыңыз:

      sudo apt-get install -y jq
    5. OpenStack клиентін орнатыңыз және жоба ішінде аутентификациядан өтіңіз.

    6. Миграцияны орындауға арналған скрипттері бар репозиторийді көшіріңіз:

      git clone https://github.com/vk-cs/neutron-2-sprut.git
    7. neutron-2-sprut директориясына өтіңіз.

    8. Осы директориядағы .sh кеңейтімі бар барлық файлдарға орындау құқықтарын қосатын команданы орындаңыз:

      chmod +x .sh

1. Миграция үшін жоба инфрақұрылымы туралы деректерді жинаңыз

Жобаның желілік инфрақұрылымын бағалап, көшіру қажет мәндерді анықтаңыз:

  1. Әкімші ВМ-іне SSH арқылы қосылыңыз.

  2. ВМ тізімін алыңыз:

    openstack server list

    Жауаптан келесі мәліметтерді тауып, сақтаңыз:

    • Бірнеше желілік интерфейсі бар виртуалды машиналардың ID-лері.
    • Тағайындалған Floating IP-адрестері бар виртуалды машиналардың ID-лері және IP-адрестері.
    • Көшіру қажет қалған барлық ВМ-дердің ID-лері.
  3. Маршрутизаторлар тізімін алыңыз:

    openstack router list

    Көшіру қажет маршрутизаторлардың ID-лерін сақтаңыз.

  4. Егер жобаңызда IPsec-туннельдер болса, туннельді құру үшін пайдаланылатын маршрутизаторлардың ID-лерін сақтаңыз.

  5. Қауіпсіздік топтарының тізімін алыңыз:

    openstack security group list

    Әдепкі топтардан басқа барлық қауіпсіздік топтарының атауларын сақтаңыз: all, default, ssh+www.

  6. Әдепкі all, default, ssh+www топтарының атаулары SDN Sprut және Neutron ішінде бірдей. Осы топтардың идентификаторларын біліп, сақтаңыз:

    1. VK Cloud жеке кабинетіне өтіңіз.
    2. Жобаны таңдаңыз.
    3. Виртуалды желілерFirewall баптаулары бөліміне өтіңіз.
    4. SDN Sprut және Neutron ішіндегі all, default, ssh+www топтарының ID-лерін тауып, сақтаңыз.

2. Маршрутизаторларды, желілерді және ішкі желілерді SDN Sprut-қа көшіріңіз

  1. Әкімші ВМ-іне SSH арқылы қосылып, neutron-2-sprut директориясына өтіңіз.

  2. Маршрутизаторлар тізімі бар CSV форматындағы конфигурациялық файл жасаңыз. Бұл файл скрипт көмегімен базалық желілік мәндерді көшіру үшін қажет болады.

    Файл пішімі:

    <МАРШРУТИЗАТОР_1>,<КӨШІРМЕ_ТҮРІ><МАРШРУТИЗАТОР_2>,<КӨШІРМЕ_ТҮРІ>

    Мұнда:

    • <МАРШРУТИЗАТОР_1>, <МАРШРУТИЗАТОР_2> — маршрутизаторлардың идентификаторлары.

    • <КӨШІРМЕ_ТҮРІ> — SDN Sprut-тағы маршрутизатор көшірмесінің түрі:

      • std — көшірме стандартты маршрутизатор түрінде жасалады.
      • adv — көшірме кеңейтілген маршрутизатор түрінде жасалады. Егер жобаңыздағы маршрутизатор IPsec-туннель құру үшін пайдаланылса, осы параметрді көрсетіңіз.

    Маршрутизаторларды көшіруге арналған конфигурациялық файл мысалы:

    35fbfb7c-aaaa-aaaa-aaaa-c3fb4d833dee,adva2dd20ca-bbbb-bbbb-bbbb-7ea8b00a81a6,std
  3. Маршрутизаторларды миграциялау скриптін іске қосыңыз:

    ./copy-router-and-networks.sh <ФАЙЛ_АТАУЫ>

    Мұнда <ФАЙЛ_АТАУЫ> — маршрутизаторлар тізімі бар конфигурациялық файлдың атауы.

    Мысал:

    ./copy-router-and-networks.sh config.csv

    Скрипт орындалғаннан кейін көрсетілген маршрутизаторлар SDN Sprut-қа статикалық маршруттармен, желілермен және олар қосылған ішкі желілермен бірге көшіріледі. Әрбір көшірілген мәннің атауына -sprut постфиксі қосылады.

3. Скрипттің орындалуын тексеріңіз

Көшірілген мәндерді қарап шығып, барлық маршрутизаторлар, желілер және ішкі желілер көшірілгеніне көз жеткізіңіз:

  1. Желілер тізімін тексеріңіз:

    openstack network list
  2. Ішкі желілер тізімін тексеріңіз:

    openstack subnet list
  3. Стандартты маршрутизаторлар тізімін тексеріңіз:

    openstack router list
  4. Қосылған кеңейтілген маршрутизаторлар тізімін тексеріңіз. Ол үшін жеке кабинетке өтіңіз немесе 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 ""

4. (Қосымша) Кеңейтілген маршрутизаторды баптаңыз

Егер жобада IPsec-туннель пайдаланылса, скрипт жасаған кеңейтілген маршрутизаторды баптаңыз және оны IPsec-туннелін қосуға дайындаңыз.

5. (Қосымша) IPsec-туннелін көшіріңіз

Бірдей селекторлары (ішкі желілердің бастапқы және мақсатты диапазондары) бар туннельдер, тіпті әртүрлі SDN ішінде болса да, бір уақытта қатар өмір сүре алмайды. Сондықтан SDN Sprut-та SDN Neutron-тағы туннельге ұқсас туннельді алдын ала жасауға болмайды, өйткені бұл бастапқы туннельдің жұмысына қатысты мәселелерге әкеледі.

  1. SDN Neutron-тағы бастапқы туннельді жойыңыз.
  2. SDN Sprut-та бапталған кеңейтілген маршрутизатор үшін жаңа VPN-туннелін қосыңыз және IPsec-саясатының параметрлерін орнатыңыз.

6. Қауіпсіздік топтарын SDN Sprut-қа көшіріңіз

  1. Әкімші ВМ-іне SSH арқылы қосылыңыз.

  2. neutron-2-sprut директориясына өтіңіз.

  3. Қауіпсіздік топтарын 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 постфиксімен көшіріледі.

7. Қауіпсіздік топтарын тексеруді орындаңыз

SDN Sprut-тағы қауіпсіздік топтары SDN Neutron-тағы қауіпсіздік топтарына ұқсас екеніне көз жеткізіңіз. SDN Neutron-тан көшірілген SDN Sprut топтарында -sprut постфиксі бар.

  1. Әкімші ВМ-іне SSH арқылы қосылып, neutron-2-sprut директориясына өтіңіз.

  2. Скриптті іске қосыңыз:

    ./check-if-all-sprut-sg-present.sh

    Егер барлық қажетті топтар көшірілсе, скрипт орындалуы нәтижесінде келесі хабарлама қайтарылады:

    All security groups have corresponding '-sprut' groups.

8. (Қосымша) SDN Sprut-та Floating IP-адрес жасаңыз

Floating IP-адрестерін басқа SDN-ге көшіру мүмкін емес. Егер жобаңыздың инфрақұрылымында Floating IP-адрестер болса, SDN Sprut-та жаңаларын жасаңыз және оларды жазып алыңыз.

9. ВМ желілік интерфейстерін SDN Sprut-қа ауыстырыңыз

ВМ-ді SDN Sprut-қа көшіру үшін оның порттарын жаңа ішкі желілерге қосу қажет. Бұл ВМ порттарының санына және қосылу түріне байланысты әртүрлі тәсілдермен орындалады:

  • Бірнеше ВМ-ді бір скриптті орындау арқылы ауыстыруға болады, бірақ бұл ВМ-дерде тек бір желілік интерфейс болуы және сыртқы ext-net желісіне тікелей қосылымдары болмауы керек.

  • Бір ВМ-ді жеке скриптті орындау арқылы ауыстыруға болады. Бұл тәсіл жобаңызда бірнеше желілік интерфейсі бар, яғни маршрутизатор, прокси немесе шекаралық файервол рөлін атқаратын ВМ болса қолайлы.

  • Егер конфигурацияңызда ВМ сыртқы ext-net желісіне тікелей қосылған болса, оны SDN Sprut-қа өзіңізге ыңғайлы кез келген тәсілмен көшіріңіз:

  1. Әкімші ВМ-іне SSH арқылы қосылып, neutron-2-sprut директориясына өтіңіз.

  2. Көшіру қажет ВМ тізімі бар 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
  3. Миграция жүргізілетін техникалық терезені бөліңіз. ВМ ауысу кезінде желілік байланысын жоғалтады. Бір ВМ-ді ауыстыру шамамен 45 секунд алады.

  4. ВМ-дердің белсенді екеніне көз жеткізіңіз:

    openstack server list

    SDN Sprut-қа көшіру қажет барлық ВМ үшін күйі ACTIVE болуы тиіс.

  5. Миграция скриптін іске қосыңыз:

    ./migrator-multiple.sh <ФАЙЛ_АТАУЫ> \ --all-secgroup-sprut-id=<ALL_ТОБЫНЫҢ_ID> \ --ssh-www-secgroup-sprut-id=<SSH+WWW_ТОБЫНЫҢ_ID>

    Мұнда:

    • <ФАЙЛ_АТАУЫ> — ВМ тізімі бар файл атауы.
    • (Қосымша ) --all-secgroup-sprut-idall қауіпсіздік тобы жобаға әдепкі бойынша қосылады және SDN Sprut пен Neutron ішінде бір атауға ие. Егер топ ВМ-де пайдаланылса, OpenStack CLI қауіпсіздік тобының SDN-ге тиесілігін ажырата алуы үшін Sprut-тағы топтың ID-сін көрсетіңіз. Параметр аргументі: <ALL_ТОБЫНЫҢ_ID> — SDN Sprut-тағы all қауіпсіздік тобының идентификаторы.
    • (Қосымша ) --ssh-www-secgroup-sprut-idssh+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
  6. Әрбір ВМ үшін консольді ашыңыз немесе SSH арқылы қосылып, қосылған желілік интерфейске IP-адрес алу үшін DHCP-серверге сұрау жіберіңіз:

    dhclient

10. Жасалған конфигурацияны тексеріңіз

Миграциядан кейін барлық ВМ қолжетімділігін тексеріңіз.

Пайдаланылмайтын ресурстарды жойыңыз

Егер SDN Neutron ресурстары енді қажет болмаса, оларды жойыңыз:

  1. Жобадан Floating IP-адрестерін алып тастаңыз.
  2. Қауіпсіздік топтарын жойыңыз.
  3. Желілерді және ішкі желілерді жойыңыз.
  4. Маршрутизаторларды жойыңыз.