Sziasztok!
Van esetleg valakinek olyan toolra tippje, ami virtuális IP címeket kezel több gépen mint erőforrás? Igen, tudom corosync, RHCS, stb.stb. A gondom az, hogy a feladat annyi lenne, hogy egymástól független gépeken 1-1 virtuális IP címet kellene mozgatni leállás/probléma esetén a többi node-ra és vissza.
Tehát az alapfelállás:
server1 IP: 10.0.10.1
server1 VIP: 10.0.10.11
server2 IP: 10.0.10.2
server2 VIP: 10.0.10.12
serverN IP: 10.0.10.N
serverN VIP: 10.0.10.1N
Tételezzük fel, hogy lerohad a server1 (vagy a rajta futó X process), ezt a topológiát kellene baromi gyorsan elérni:
server1 DOWN
server2 IP: 10.0.10.2
server2 VIP: 10.0.10.12
server2 VIP2: 10.0.10.11
serverN IP: 10.0.10.N
serverN VIP: 10.0.10.1N
Corosynccel tudom a megoldást, keepalived esetén nem tudom h. ezt tudnám-e valahogy kezelni, viszont ezeket szinte mindet bonyolultnak érzem és nem ugrik be semmi szimpla megoldás. Barkács megoldást nem szeretnék (értsd python, bash, stb), csak valami lightweight cuccot, ami ezt tudja kezelni.
Ha nincs ilyen, akkor kénytelen leszek corosyncezni, de nagyon ágyúval verébre lenne érzésem szerint.
Köszi mindenkinek!
- 374 megtekintés
Hozzászólások
anycast?
- A hozzászóláshoz be kell jelentkezni
A service több IP-re tud bindolni, de unicast címek kellenek neki sajnos. Egyébként nem szupertitkos a dolog, SipWise rtpengine az állat, amit szeretnék horizontálisan skálázni. Odáig oké h. redisben tárolja minden node h. nála milyen rtp folyamatok vannak, a többi tudja is ezeket folytatni, de az IP címeket muszáj mozgatni, mert azon kell h. folytatódjon a megszakadt kommunikáció, mert a kliens felé nem tudom updatelni az rtp szerver címét menet közben (vagy ha van ilyen SDP, akkor még azt valahogy lehetne implementálni :) )
- A hozzászóláshoz be kell jelentkezni
az anycast is egy sima unicast cim, csak tobb iranybol routeolod. amelyik nem él, azt nem..
- A hozzászóláshoz be kell jelentkezni
Viszont itt egy subnet vn mindössze, ha jól értem a dolgot. Ez nem az anycast terepe.
- A hozzászóláshoz be kell jelentkezni
semennyiböl nem tart átrakni L3-ba.... amúgy se szerencsés ha direktben csesztetia kliens - akkor meg mindenképp routeolva van.
- A hozzászóláshoz be kell jelentkezni
Bevallom anycast teren hianyosak az ismereteim.
Pont ez lenne a bonyolult benne. De ahogy nezem egyebkent tok jo lenne, mert nagyjabol pont azt csinalja ami nekem kell. Csak a proxy iranyabol mas mas weight kellene tartozzon az osszes backendhez es ha egy ledurran akkor megy tovabb ha jol ertem.
Letezik ebbol “for dummies” konyv? :)
- A hozzászóláshoz be kell jelentkezni
Ez nem egy for dummies topic. Ha hajlandó vagy a mostani hálózatot átalakítani amiatt, hogy szerviz IP címek hirdethetőek legyenek, így az ugyanazt a szolgáltatást adó IP-t a másik szerveren éred el (minden gépen felkonfigurálva minden IP vagy csak 1/2 IP címet hagyva a megmaradó IP cím(ek)). Ebben az esetben még mindig ott a feladat, hogy biztosítsd a session persistence-t és a szolgáltatás elérhetőséget minden szerveren ( nem írtad mi a szolgáltatás, biztos nem ICMP echo )
A témakör nem egyszerű, sőt ha picit megbolondítjuk valami HA-val (nem csak az IP hanem a szerviz működését is vizsgálni kell OpenBFDD, frr bfd, haproxy,.... ) akkor még bonyolultabb lesz. Említettél valami proxy-t azaz ezek backend szolgáltatások, de nem értelmezhető, ha van HA már a proxyn miért kellene ide extra logika.
- A hozzászóláshoz be kell jelentkezni
Ezt en is sejtettem. Mar h nem for dummies topic, ezt akarta jelenteni a kerdes utan az emoji.
az h az alkalmazas kezelje a helyzetet meg van oldva.
a jelenlegi mukodes az h van 2,3,n gep, mindenkinek van egy egy fix ip cime, arra mennek a requstek.
ha kihal egy backend akkor az azon folyo hangcsatorna megszakad.
ha kezzel az ip cimet attolom egy masik node-ra, akkor folytatodik a hangcsatorna.
tehat alkalmazas oldalon jok vagyunk, csak az ipket kell a szolgaltatas mukodesetol fuggoen koltoztetgetni a node-ok kozott.
barmely node barmely kiesett node sessionjet tudja folytatni, igy full random is lehet a dolog.
a vrrp/carp/keepalived tema ehhez tul szimpla, mert 2 gep az alapfelallas ugye, szoval ugy velem h vagy network oldalrol kell kozeliteni (ospf, bgp, anycast), vagy corosync pacemaker.
a corosync pacemakerrel is az a baj h nem az a kategoria amit barmelyik linuxos “szaki” hajnal 2-kor megszerel ha szethullik.
ez az alap problemam gyakorlatilag.
de valoszinu nem nagyon tudok mas iranyba menni, mert ez meg mindig egyszerubb mint pl egy bgp.
- A hozzászóláshoz be kell jelentkezni
VRRP-nel nem csak 2 gep lehet egy groupban.
- A hozzászóláshoz be kell jelentkezni
Ez igaz, de ebben a setupban annyi instance group kell ahany gep van a backend oldalon.
ugyanakkor ezt sem lehetetlen karbantartani.
- A hozzászóláshoz be kell jelentkezni
statet hogy szinkronizalod?
- A hozzászóláshoz be kell jelentkezni
Azt az alkalmazas szinkronizalja egy redis clusterben.
- A hozzászóláshoz be kell jelentkezni
VRRP?
- A hozzászóláshoz be kell jelentkezni
Arra van megoldas h tobb node-ot is kezeljen es ne egy helyre vezessenek a VIP-ek?
- A hozzászóláshoz be kell jelentkezni
keepalived?
- A hozzászóláshoz be kell jelentkezni
Keepalived lesz a barátod és track_process direktíva.
https://www.redhat.com/sysadmin/advanced-keepalived
De erre csak olyan szolgáltatást bízz, ami nem érzékeny a netsplitre (webszerver, load balancer stb)
virtual_ipaddress -nél meg tudsz adni max 20 ip címet.
- A hozzászóláshoz be kell jelentkezni
Igen, ez ismerős, de mi van ha 3-4-5-6 gépem van és a cél az amit fentebb írtam is h. minden gépnek van egy virtual IP-je alapjáraton, amit bármelyik másik gépre kell átrántani probléma esetén?
- A hozzászóláshoz be kell jelentkezni
Ja értem. Akkor egyszerűen több vrrp instance-t csinálsz. És úgy súlyozod őket, hogy a priority mindig a VIP tulajdonosáé legyen a legnagyobb.
- A hozzászóláshoz be kell jelentkezni
Igen, ez nekem is eszembe jutott, de valahogy nem tetszik a megoldás. Ennél már akkor a corosync-es IpAddr2 resource és preferred node beállítás is elegánsabb talán.
- A hozzászóláshoz be kell jelentkezni
"valahogy nem tetszik a megoldás."
Ez ellen nehéz lesz szakmailag érvelni. :D
Ennél egyszerűbbet nem fogsz találni. Az elegánsabb megoldások (pl dinamikus routing használata, layer4 load balancing) konfigurálása ennél csak bonyolultabb lesz.
- A hozzászóláshoz be kell jelentkezni
A “szerintem csunya” valoban nem tul szakmai erv. De erted a problemam, kulonbozo vrrp instanceok, osszevissza sok gep kozott, hat na, nem tul atlathato.
- A hozzászóláshoz be kell jelentkezni
A keepalived-t én mindig a faék egyszerűsége miatt szerettem. Egyetlen config file, gépenként kicsit eltérően paraméterezve.
De nem szeretnélek meggyőzni, ha te nem érzed komfortosnak, akkor ne ebbe indulj el.
- A hozzászóláshoz be kell jelentkezni
Mint “szaki” jobban bejonne a corosync az egyszerubb es szamomra atlathatobb konfig es resource kezelese miatt.
de mint “architekt” a keepalived-t mar hasznaljuk masra, tul lehet elni a szerverek szamaval megegyezo instance groupok kezeleset, monitorozasunk is van ra es egyszerubb hibat kezelnj vele, mint kb barmi massal.
futok egy minta konfigot a keepalived-vel is, aztan meglatjuk hogy nez ez ki mondjuk 4 szerverrel, 4 instance grouppal osszerakva.
- A hozzászóláshoz be kell jelentkezni
Keepalived -ban van vrrp_sync_group
- A hozzászóláshoz be kell jelentkezni
Ezt nem úgy szokták, hogy HA vagy load balancer vagy valami hasonló van előttük?
HaProxy is tud olyat, hogy több node-on egy közös virtualIP alatt futnak és azok továbbítják a nodeokhoz a kéréseket. Kieshet proxy node is és feladatvégő node is.
Meg amúgy ezt manapság nem mezitlábas gépekkel szokták, hanem valami konténeres rendszerben, ami szét tudja tenni a terhelést és redundanciát, hibatűrést is tud.
- A hozzászóláshoz be kell jelentkezni
Igen, ezt úgy szokták, kivéve ha RTP és 10k portot kell tudni nyitni per VM :)
Ha ez HTTP lenne nem lenne még kérdés sem róla, csak ez elég spec dolog. Sajnos nem tudom azt megcsinálni, amit írtál, mert alkalmazás szinten meg van oldva a state tárolás (értsd HA), csak az IP címeket kellene a gépek között mozgatni ha probléma van valamelyikkel.
Külön "gáz", hogy elég gyorsan kellene mozgatni, hogy minél rövidebb ideig szakadjon meg a hangátvitel.
- A hozzászóláshoz be kell jelentkezni
Ha jól emlékszem esxi alatt nem egy gépnek, hanem egy gépcsoportnak lehet virtuális ip-je, ami pont azért közös, hogy bármelyik kieshet mögüle. Kell egy réteg, ami továbbítja az élő vm-hez és a vm-eken valami, ami követi az állapotokat.
Terheléseloszlás és nodeszám skálázódás kapcsán úgy emlékszem opensips-et is használtunk. Lehet rtpproxyval együtt.
https://blog.opensips.org/2021/06/09/media-re-anchoring-using-opensips-…
- A hozzászóláshoz be kell jelentkezni
Ez sipwise rtpengine, megoldja a state syncet szepen redisben, de kell neki h az IP cim menjen at valamelyik eletben maradt nodera.
Ugye itt az a scenario van h a proxybol lenne 2-nel tobb.
- A hozzászóláshoz be kell jelentkezni
Mondjuk azt meg megnezem h a Kamailio tud e hasonlot, de szinte biztos.
Koszi!
- A hozzászóláshoz be kell jelentkezni
Igen, amit írsz az OpenSIP-el valóban megvalósítható lenne, csak Kamailio-ban ezt _még_ nem csinálták meg. Szóval marad h. az IP címeket valahogy kezelem kell.
- A hozzászóláshoz be kell jelentkezni
ucarp
Egyszerű mint egy faék.
- A hozzászóláshoz be kell jelentkezni
Csak azzal nem tudok 3,4,N hostot megoldani sajnos.
- A hozzászóláshoz be kell jelentkezni