Portál AbcLinuxu, 20. dubna 2024 04:23


Dotaz: Výběr ze dvou serverů a zamaskování za jednu adresu

20.3.2017 15:08 BouHou | skóre: 3
Výběr ze dvou serverů a zamaskování za jednu adresu
Přečteno: 453×
Odpovědět | Admin

Ahoj,řeším následující problém s komunikací mezi PLC. Mám dva komunikační CPU, které se chovají jako server (dostávají pomocí protokolu MODBUS dotazy a na ty odpovídají). Oba servery (CPU) jsou v redundantní konfiguraci. Tzn. že v obou je úplně stejný program, jenom má každý jinou IP adresu. Problém je, že v jednom okamžiku je aktivní vždy jenom jeden server. Ten druhý neodpovídá.

Potřeboval bych oba servery zamaskovat pod jednu adresu (což by pomocí routeru s NATem nebyl problém), ale lze nějak udělat, aby se vytvořilo spojení vždy na aktivní server (to by se přepínalo, když by do určitého času nedostal od serveru odpověď).

Potřebuji, aby se to navenek tvářilo, že se připojuji na jedno zařízení bez ohledu na to, které CPU zrovna běží. Nějaké napády nebo i tipy na HW, který by to dokázal?

Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

20.3.2017 15:18 NN
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Problém je, že v jednom okamžiku je aktivní vždy jenom jeden server.
Muzes to rozvest? Jak se pozna, ktery je aktivni? Obycejne ICMP to asi nebude..
20.3.2017 16:01 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Nemám teď sice HW u sebe (abych to mohl na 100% otestovat), ale ICMP podle mě fungovat bude.
20.3.2017 17:22 NN
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Nerikam, ze to fungovat nebude, ale ten redundantni HW se musi nejak domluvit mezi sebou => bude existovat presna moznost jak zjistit, ktery je aktivni. ICMP je v tomto smeru dost nespolehlive, co kdyz zrovna po kontrole dojde ke zmene roli?

Na reseni takovych situaci existuji GLBP protokoly(HSRP,VRRP,NHRP etc..).
21.3.2017 09:23 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu

Všem moc díky za jejich nápady. Musím promyslet a pozjišťovat co všechno se dá na PLC-CPU (serverech) a na clientovi nastavit.

    Jenom pro shrnutí:
  • Zařízení je druhém konci světa bez možnosti remote connection - je to rafinerie a jakékoliv připojení zvenčí je pro ně nepřípustné. Takže mám trošku svázané ruce a nemám možnost testování dopředu. Vše si musím promyslet a nachystat doma, abych to potom na jednu návštěvu na místě dokázal rozchodit.
  • Nejlepší by bylo použít nějaký ze zmíněných protokolů mezi servery, aby si navzájem vyjednali IP adresu, ale spíš to vypadá, že to nepůjde použít.
  • Zatím to vypadá na řešení s routerem a NATem, kdy by přepínal spojení podle toho, který server je aktivní.
  • Na řešení, že si client bude zkoušet postupně oba servery jsem dopředu spoléhal, ale momentálně se ukazuje, že to asi nebude možné.
  • Řešení s relé mi nepřijde dobré, protože tím sice přepojím fyzické spojení, ale nezměním IP adresu, která je nastavená u připojení na clientovi.
  • Další řešení, které mě napadlo je kompletně předělat komunikaci ze client->server na server<-client. Tzn. prohodit role client-server. CPU by byli oba clienti a komunikovali by s druhým zařízením (nynější client, který není redundantní), ale to by bylo poněkud pracné.
Josef Kufner avatar 21.3.2017 10:43 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Řešení s relé mi nepřijde dobré, protože tím sice přepojím fyzické spojení, ale nezměním IP adresu, která je nastavená u připojení na clientovi.
Aby relé mělo smysl, musejí mít oba servery stejnou IP adresu. Nicméně pokud to je rafinerie na konci světa, tak se na relé vykašli, neboť to nebude otestované a snadno nahraditelné. Raději omez vše, co se může podělat, i za cenu složitějšího klienta. Co takhle aby se klient připojil na oba servery současně a pak používal ten zdravější?
Hello world ! Segmentation fault (core dumped)
22.3.2017 08:52 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
S tím musím souhlasit, nic netestované ani nic co by nebylo snadno nahraditelné. Stejné IP adresy nemůžou být, to je dáno HW a systém neumožnuje konfigurovat dvě zařízení se stejnou IP.
21.3.2017 15:34 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Jsem myslel že se potřebuješ připojit zvnějšku a proto to musí mít jednu IP, ale když je to uzavřený systém tak mě nenapadá proč by jsi to měl maskovat za jednu IP?

Normálně ať klient kontroluje obě adresy a která bude reagovat tak ty data budu vypisovat ukládat a i můžu zobrazovat který je funkční.....

Klidně můžeš komunikovat s obouma naráz ne čemu by to vadilo......

A nebo máš pouze nějaký automat co umí komunikovat pouze s jednou IP?
22.3.2017 08:59 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
No pro mě je ten client "blackbox" na zákazníkově straně a nevím jaké má nebo nemá možnosti. Proto jsem zvažoval vše zamaskovat pod jednu adresu,aby se můj systém vůdči němu tvářil jako "standardní" systém a on jenom provedl "standardní" konfiguraci.
20.3.2017 15:24 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Jednoduše pořídit router do kterého se dá dát alternativní fw LEDE (OpenWRT) a napsat si skript.

Buď bude pingat na IP těch serverů, nebo jinak zjištovat kdo je aktivní a podle toho přepíše port forward na příslušný PC.

Případně mikrotik tam se dají taky spouštět nějaké skripty, ale v tomto se nevyznám.....
20.3.2017 16:29 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
No to by asi mohlo fungovat. Jenom místo pingů bych musel dávat requesty na MODBUS zprávu. Můžeš prosím doporučit nějaký robustní HW, na kterém by se to dalo rozběhat? Ideálně něco "průmyslového", aby se to dalo dát do rozváděče na DIN lištu.
20.3.2017 16:01 alkoholik | skóre: 40 | blog: Alkoholik
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Muzes na tech serverech rozjet VRRP? Dal bys jim jednu adresu navic o kterou by se dohadovaly. Normalne se na to pouziva keepalived.
20.3.2017 16:23 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Bohužel VRRP se tam rozjet nedá.
20.3.2017 17:02 j
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevim teda co mas za aplikaci a jaky mas moznosti, ale ... zcela standardni chovani pokud jednomu dns zaznamu pridelis dve (nebo vic) adres je to, ze klient postupne zkousi vsechny. Jakou veme prvni pak vetsinou nemuzes ovlivnit, protoze i dns to vraci (umyslne) v ruznym poradi.

Tzn standardni klient by nepouzival IP ale DNS jmeno, a to jmeno by mu vratilo ty dve (nebo vic) ruznych adres, a komunikaci by zahajil s tou, ktera by mu odpovedela. Tedy klidne s tou, co odpovi nejdriv(zahajit muze na vsechny) - podobne se umej chovat browsery ve vztahu ipv4/v6, ale je to v tomto pripade v rozporu s rfc (prednost ma dostat v6, ne treba jen o par ms rychlejsi v4).
20.3.2017 19:10 NN
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
komunikaci by zahajil s tou, ktera by mu odpovedela.
Pri statickem DNS zaznamu to snad vrati zaznam vzdy bez ohledu na stav zarizeni. Jak to resi vypadek?
20.3.2017 17:37 Ovrscout
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi je to jasné a možná že to ve vaší situaci ani jinak udělat nejde - V tom případě se za hloupé poznámky omlouvám :)

Ale projistotu: Nejlepší je to asi vyřešit přímo na tom klientu, pokud to jde, ale víc asi neporadím.

P.S. Nápad "j" na použití DNS se mi líbí, tam alespoň většinou lze zadat i záložní dns server. Záleží ale co a jak ten konkrétní klient podporuje.

20.3.2017 19:31 jeniceek
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Asi by se dalo použít HAProxy.
Josef Kufner avatar 20.3.2017 19:32 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
V zásadě to můžeš řešit na klientovi, nebo na serverech, nebo na routeru před servery.

Pokud to budeš řešit na klientovi, dáš mu seznam adres a on se zkusí připojit na všechny (postupně či najednou, to už je jedno).

Pokud to budeš řešit na serverech, dáš všem stejnou IP adresu a po jiném komunikačním kanále zajistíš, že aktivní bude jen jeden.

Pokud to budeš řešit na routeru před servery, uděláš prostý NAT dle potřeby a necháš ho automaticky přenastavovat. Takto se obvykle řeší load-balancing, jen ty routery jsou občas zdvojené, pro případ, že by jeden upadl.

Alternativa k routeru je prosté relé, které fyzicky přepojí kabel, a nějaká triviální logika na jeho přepínání připojená na GPIO piny (pokud jsou).
Hello world ! Segmentation fault (core dumped)
20.3.2017 19:58 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Vidíš relé mě nenapadlo a stačí to připojit na nějaký zdroj toho PC a pokud bude zapnuté tak kabel připojen k němu pokud bude vypnuté tak kabel k záložnímu....

A nebo na nějaký pin a přepínat pomocí SW.
Josef Kufner avatar 21.3.2017 00:09 Josef Kufner | skóre: 70
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
K tomu relé by to chtělo nějaký monostabilní klopný obvod, který by bylo potřeba pravidelně tahat za nohu, aby držel relé sepnuté. Je totiž potřeba řešit nejen zapnutí počítače, ale i to, že něco smysluplného dělá (watchdog). Pak je také vhodné, aby ten druhý počítač mohl odpojit ten první, pokud zjistí, že přestal fungovat.

Asi bych vzal ATtiny441, připojil přes sériové porty servery (ATtiny441 má dva) a přihodil pár relé. Program by byl vcelku jednoduchý – pár primitivních textových příkazů na odpojení/připojení/… a ovládalo by se to prostým echo X >/dev/ttyS0.
Hello world ! Segmentation fault (core dumped)
21.3.2017 14:45 R
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tieto routery, rele a podobne nezmysly budu single point of failure. Najprv by som si teda polozil otazku: budu spolahlivejsie ako samotny server?
22.3.2017 08:48 BouHou | skóre: 3
Rozbalit Rozbalit vše Re: Výběr ze dvou serverů a zamaskování za jednu adresu
To by neměl být problém, protože tato komunikace s clientem je jenom dohledový systém. Veškeré kritické řízení, kvůli kterému jsou tam redundantní CPU, probíhá po jiné - redundantní - komunikaci.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.