Виртуалды IP мекенжайын ұйымдастыру
Егер кіріс трафикті бірнеше біртипті виртуалды машиналардан тұратын кластер өңдесе, олар үшін виртуалды IP мекенжайын (Virtual IP, VIP) жасауға болады. Мұндай мекенжай осы виртуалды машиналар арқылы кіріс трафикті ақауға төзімді түрде өңдеуді ұйымдастыру үшін қолданылады. Технология былай жұмыс істейді: VIP кластердегі виртуалды машиналардың біріне тағайындалады, ол осы VIP-тен келетін трафикті өңдейді. Осындай мекенжайға жүгінген клиенттер осы виртуалды машинаға бағытталады. Егер виртуалды машина істен шықса, VIP кластердегі басқа виртуалды машинаға ауысады, ал трафикті өңдеу жалғасады. Виртуалды машиналар өз күйін бақылап, VIP тағайындауын VRRP протоколы арқылы басқарады.
Виртуалды IP мекенжайын баптауды көрсету үшін:
- екі виртуалды машина жасалады, олар үшін:
- виртуалды IP мекенжайы жасалады;
- осы IP мекенжайына қызмет көрсету үшін keepalived іске асырылымындағы VRRP бапталады.
- барлық қажетті баптаулар мен жұмысқа қабілеттілікті тексеру орындалатын Floating IP мекенжайы бар үшінші виртуалды машина жасалады.
-
OpenStack клиенті орнатылғанына көз жеткізіңіз және жобада аутентификациядан өтіңіз.
-
Виртуалды машиналар мен виртуалды IP мекенжайы орналастырылатын ішкі желіні таңдаңыз. Олар бір ішкі желіде орналасуы керек.
Егер қажетті ішкі желі болмаса, оны жасаңыз.
Келесі ақпаратты жазып алыңыз:
- ішкі желінің атауы;
- ішкі желі орналасқан желінің атауы.
Мысал ретінде
mynetworkжелісіндегіmysubnetішкі желісі пайдаланылады. -
Виртуалды IP мекенжайы ретінде қай IP мекенжай қолданылатынын анықтаңыз. Бұл IP мекенжайды ешбір объект (мысалы, виртуалды машина немесе жүктеме теңгергіші) пайдаланбауы керек.
Мысал ретінде
192.168.0.254/24мекенжайы пайдаланылады. -
Бұл IP мекенжайдың басқа объектілер тарапынан қолданылмайтынына көз жеткізіңіз (мысалы, виртуалды машинаның немесе жүктеме теңгергішінің портына тағайындалмауы керек). Бұған қол жеткізудің ең қарапайым тәсілдерінің бірі — таңдалған мекенжаймен OpenStack портын жасап, кейін бұл портты еш жерде қолданбау.
Осындай портты жасау үшін OpenStack CLI ішінде команданы орындаңыз:
openstack port create <ИМЯ_ПОРТА> --network mynetwork --fixed-ip subnet=mysubnet,ip-address=192.168.0.254 -
kld-vm1,kld-vm-2жәнеkld-jumphost-vmвиртуалды машиналарын жасаңыз.Бұл виртуалды машиналар тобының өз ішіндегі кез келген кіріс және шығыс трафикке рұқсат етілген қауіпсіздік тобына орналастырылуы керек. Мысалы, мұндай топ —
default.Егер стандартты емес қауіпсіздік топтары қолданылса, оларда мыналарға рұқсат берілуі керек:
kld-vm1жәнеkld-vm-2үшін SSH трафигіне;kld-vm1менkld-vm-2арасындағы VRRP трафигіне;- таңдалған виртуалды IP мекенжайына ICMP трафигіне (жұмысқа қабілеттілікті тексеру үшін).
kld-vm-1kld-vm-2kld-jumphost-vmКелесі параметрлерді орнатыңыз:
- Виртуалды машинаның атауы:
kld-vm-1. - Конфигурациядағы машиналар саны:
1. - Операциялық жүйе:
Ubuntu 22.04. - Желі: бұрын таңдалған желі мен ішкі желі.
- DNS атауы:
kld-vm-1. - Firewall баптаулары:
default. - Сыртқы IP тағайындау: опция таңдалмағанына көз жеткізіңіз.
Виртуалды машинаның қалған параметрлерін өз қалауыңыз бойынша таңдаңыз.
-
kld-vm-1жәнеkld-vm-2виртуалды машиналары виртуалды IP мекенжайымен жұмыс істейтін OpenStack портын анықтаңыз:-
kld-vm-1виртуалды машинасы үшін:-
SSH арқылы қосылыңыз
kld-jumphost-vmвиртуалды машинасына. -
kld-vm-1виртуалды машинасына SSH арқылы қосылыңыз. -
Команданы орындаңыз:
ip route | grep defaultШығыс мысалы:
default via 192.168.0.1 dev ens3 proto dhcp src 192.168.0.11 metric 100Шығыстан келесі ақпаратты жазып алыңыз:
- Желілік интерфейс атауы (
devкейін келеді): бұл мысалдаens3. - Желілік интерфейстің IP мекенжайы (
srcкейін келеді): бұл мысалда192.168.0.11.
- Желілік интерфейс атауы (
-
OpenStack CLI командасын орындаңыз:
openstack port list -c ID --server kld-vm-1 --fixed-ip ip-address=<IP-АДРЕС_СЕТЕВОГО_ИНТЕРФЕЙСА_ИЗ_ПРЕДЫДУЩЕГО_ШАГА>Шығыс мысалы:
+--------------------------------------+| ID |+--------------------------------------+| e1bd636a-aaaa-bbbb-cccc-a673e7cbef83 |+--------------------------------------+Шығыстан OpenStack портының идентификаторын жазып алыңыз.
-
-
kld-vm-2виртуалды машинасында дәл осы әрекеттерді орындаңыз.
-
Барлық алынған деректерді жазып алыңыз. Келтірілген мысал үшін нәтиже:
Объект | Мәні |
|---|---|
kld-vm-1 виртуалды машинасы үшін | |
Желілік интерфейс атауы |
|
Желілік интерфейстің IP мекенжайы |
|
Желілік интерфейс үшін OpenStack портының идентификаторы |
|
kld-vm-2 виртуалды машинасы үшін | |
Желілік интерфейс атауы |
|
Желілік интерфейстің IP мекенжайы |
|
Желілік интерфейс үшін OpenStack портының идентификаторы |
|
Басқа | |
Виртуалды машиналар мен виртуалды IP мекенжайына арналған ішкі желі |
|
Ішкі желінің атауы |
|
Ішкі желі орналасқан желінің атауы |
|
Виртуалды IP мекенжайы |
|
-
keepalivedорнатыңыз:-
kld-vm-1виртуалды машинасы үшін:-
SSH арқылы қосылыңыз
kld-jumphost-vmвиртуалды машинасына. -
kld-vm-1виртуалды машинасына SSH арқылы қосылыңыз. -
Командаларды орындаңыз:
sudo apt updatesudo apt install keepalived
-
-
kld-vm-2виртуалды машинасында дәл осы әрекеттерді орындаңыз.
-
-
keepalivedбаптаңыз:kld-vm-1kld-vm-2-
kld-jumphost-vmвиртуалды машинасына SSH арқылы қосылыңыз. -
kld-vm-1виртуалды машинасына SSH арқылы қосылыңыз. -
/etc/keepalived/keepalived.confфайлын өңдеп, оның мазмұнын келесімен ауыстырыңыз:global_defs{router_id KLD-VM-1}vrrp_instance VI_254{state MASTERinterface ens3virtual_router_id 254priority 120advert_int 1authentication{auth_type PASSauth_pass <ПАРОЛЬ_ДЛЯ_АУТЕНТИФИКАЦИИ>}virtual_ipaddress{192.168.0.254/24}}
Конфигурациялық файлда:
-
router_id—keepalivedмаршрутизаторының идентификаторы, бұл мән әр конфигурация үшін әртүрлі. -
vrrp_instance— VRRP инстансының баптаулары. VRRP инстансының атауы тек жергілікті деңгейде ғана маңызды, сондықтан әртүрлі виртуалды машиналардағы конфигурациялар үшін бірдей болуы мүмкін.state—keepalivedжұмысты бастайтын рөл:MASTERнемесеSLAVE. Кейін шеберді таңдау нәтижесіне қарай рөл өзгеруі мүмкін.interface— VRRP жұмыс істейтін интерфейс атауы. Интерфейс атауы тек жергілікті деңгейде ғана маңызды, сондықтан әртүрлі виртуалды машиналардағы конфигурациялар үшін бірдей болуы мүмкін.virtual_router_id— 0-ден 255-ке дейінгі VRRP маршрутизаторының идентификаторы. Екі конфигурацияда да бірдей болуы керек.priority— VRRP шеберін таңдау жүргізілетін басымдық. Бұл жағдайда шеберkld-vm-1болады, өйткені оның басымдығы ең жоғары.advert_int— VRRP хабарламаларын тарату аралығы (секундпен).authentication— аутентификация параметрлері. Бұл жағдайда аутентификация пароль (PASS) бойынша орындалады. Парольдер (auth_passмәні) барлық конфигурацияларда бірдей болуы керек.virtual_ipaddress— виртуалды IP мекенжайы. Мәндер барлық конфигурацияларда бірдей болуы керек.
Параметрлер туралы толығырақ keepalived құжаттамасында қараңыз.
-
-
keepalivedіске қосыңыз:-
kld-vm-1виртуалды машинасы үшін:-
kld-jumphost-vmвиртуалды машинасына SSH арқылы қосылыңыз. -
kld-vm-1виртуалды машинасына SSH арқылы қосылыңыз. -
Команданы орындаңыз:
sudo systemctl start keepalived -
keepalivedкүйін тексеру үшін команданы орындаңыз:sudo systemctl status keepalivedШығыс мысалы:
● keepalived.service - Keepalive Daemon (LVS and VRRP)Loaded: loaded (/lib/systemd/system/keepalived.service; enabled; vendor preset: enabled)Active: active (running) since Mon 2023-01-09 10:55:35 UTC; 21h ago...keepalivedrunningкүйінде болуы керек.
-
-
kld-vm-2виртуалды машинасында дәл осы әрекеттерді орындаңыз.
-
Виртуалды машиналарда орнатылған keepalived тек 192.168.0.11 және 192.168.0.22 IP мекенжайларынан ғана емес, сонымен қатар 192.168.0.254 виртуалды IP мекенжайынан да трафик жібере алуы керек. VK Cloud ішіндегі OpenStack порттарында IP Source Guard механизмі қолданылатындықтан, виртуалды машиналар порттары үшін виртуалды IP мекенжайынан келетін трафикке рұқсат беріңіз:
-
kld-vm-1үшін:openstack port set e1bd636a-aaaa-bbbb-cccc-a673e7cbef83 --allowed-address ip-address=192.168.0.254/24 -
kld-vm-2үшін:openstack port set 74268d00-xxxx-yyyy-zzzz-cf9f93536d5c --allowed-address ip-address=192.168.0.254/24
Екі терминал сессиясын ашыңыз:
-
Бірінші сессияда:
-
SSH арқылы қосылыңыз
kld-jumphost-vmвиртуалды машинасына. -
Виртуалды IP мекенжайын үздіксіз пингтеуді іске қосыңыз:
ping 192.168.0.254IP мекенжайы сәтті пингтелуі керек.
-
-
Екінші сессияда:
-
kld-jumphost-vmвиртуалды машинасына SSH арқылы қосылыңыз. -
kld-vm-1виртуалды машинасына SSH арқылы қосылыңыз. -
keepalivedпроцесін тоқтатыңыз:sudo systemctl stop keepalivedБұл виртуалды машина шебер рөлінде болғандықтан және трафикті өңдеуді тоқтатқандықтан, енді виртуалды IP мекенжайына келіп түсетін трафикті өңдеу
kld-vm-2виртуалды машинасына ауысады. Бірінші терминал сессиясында іске қосылған пинг процесі үзілмеуі керек. -
keepalivedпроцесін қайта іске қосыңыз:sudo systemctl start keepalivedВиртуалды машина қайтадан шебер рөлін өзіне алып, виртуалды IP мекенжайына келіп түсетін трафикті өңдей бастайды.
-
Команданы орындаңыз:
ip address show dev ens3Виртуалды IP мекенжайы шығыста бар екенін тексеріңіз:
ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000link/ether fa:16:3e:a3:82:f2 brd ff:ff:ff:ff:ff:ffaltname enp0s3inet 192.168.0.4/24 metric 100 brd 192.168.0.255 scope global dynamic ens3valid_lft 523420sec preferred_lft 523420secinet 192.168.0.254/24 scope global secondary ens3valid_lft forever preferred_lft forever
-
Егер жасалған ресурстар енді қажет болмаса, оларды жойыңыз:
- Виртуалды машиналарды жойыңыз.
kld-jumphost-vmвиртуалды машинасына тағайындалған Floating IP мекенжайын жойыңыз.- Виртуалды IP мекенжайы тағайындалған портты жойыңыз.
- Виртуалды машиналар орналастырылған ішкі желіні және желіні жойыңыз.