» »

Deployanje baze podatkov na več računalnikov

Deployanje baze podatkov na več računalnikov

chort ::

Živjo,

že dlje časa razvijam šopek Python skript za indeksiranje miljonov fotografij, ki uporabljajo PostgreSQL bazo kot repozitorij za podatke. Ker so baze v uporabi na ladjah, ki imajo izredno slabo internetno povezavo, večina sodobnih oblačnih načinov zagotavljanja storitev in porivanja nadgradenj odpade, ostaja pa problem deploymenta.

Torej, kako bi vi uredili deployment Python + PostgreSQL kombinacije? Virtualka? Docker? Kaj tretjega?

HotBurek ::

A podatki so na celini, ladje pa preko slabe povezave dostopajo do njih?

Ali ladje samo berejo podatke, ali delajo tudi update potem nazaj na celino?

Je opcija HTTP cache (Varnish), ki ga furaš na ladji?
root@debian:/# iptraf-ng
fatal: This program requires a screen size of at least 80 columns by 24 lines
Please resize your window

Mavrik ::

Kot je rekel HotBurek, povej malo več kje točno so podatki in kakšne so omejitve. Tvoje sporočilo ne da dovolj podatkov. Opiši:

1.) Kje so slike?
2.) Kje je indeks?
3.) Kako uporabnik dostopa do njih?
4.) Kakšna oprema je na ladjah in kako zgleda internetna povezava na morju in v pristanišču?
The truth is rarely pure and never simple.

chort ::

Res sem precej butasto napisal :)
Na kratko:
slike, baze in skripte so na eni ladji naenkrat kot zaključen paket. Po zbiranju podatkov migrirajo nazaj v pisarno, kjer se delo nadaljuje.

Na dolgo:
Ladje (trenutno cca 5 njih) oziroma ROV (Remotely Operated Vehicles) upravljani z ladij fotografirajo morsko dno z 1 do 5 kamerami naenkrat, s 3 do 5 12-Mpx fotografijami na sekundo. Te fotografije se shranjujejo na NAS array na vsaki ladji. Hkrati se logira navigacija ROV v text file, prav tako na ladji.

Moje python skripte se sprehajajo po NAS file systemu in berejo imena fotografij (v katerih je timestamp), berejo navigacijo in interpolirajo lokacije, orientacije in kupček ostalih metapodatkov za vsako fotografijo, in le-to zapišejo v PGSQL bazo na ladji.

V postprocessingu (še vedno na posamezni ladji) druge skripte izvajajo za quality control, avtomatizacijo obdelave podatkov itd, prav tako z PGSQL kot glavnim izvorom podatkov. Uporabniki v 99% časa dostopajo do podatkov z iste ladje.

Fotografije in DB dump se po končanem snemanju (lahko po nekaj dneh ali nekaj mesecih, odvisno od trajanja projekta) fizično (na NAS ali USB diskih) odnesejo v pisarno, priklopijo na mrežo, uvozijo v lokalno bazo in procesiranje se nadaljuje.

Primarno torej potrebujem način, za distribucijo python + PGSQL instalacije na vsako ladjo posebaj, in ki bi omogočal relativno neodvisnost baze od PCja, na katerem teče. Pričakovati od ljudi, da bodo vsakič pravilno inštalirali Python in PGSQL (s PostGIS in TimescaleDB), povezali, mapirali in podobno se je izkazalo kot pipe dream, zato potrebujem enostaven način za distribucijo.

Internetna povezava na ladjah je satlink, torej 2 Mbps deljeno z cca 40 ljudmi. Ko so ladje v pristaniščih ali v bližini naftnih ploščadi obstaja možnost 4G, vendar ni zanesljiva. Trenutno uporabljam remote dostop za konfiguracijo posameznih PCjev, vendar mi jemlje preveč časa in poskušam zadevo optimizirati, ker čakanje 1 minuto na command line ne pomaga k mentalnemu zdravju :)

Baja ::

si poskušal spisati kakšno skripto, ki bi v command line-u uredila zadeve namesto tebe. podobno kot delujejo package managerji, prenese paket, razpakira, inštalira, ... pošlje mejl "I'm done".

v tem primeru maš samo minuto čakanja na CL, poženeš skripto, počakaš na mejl.

pegasus ::

Poglej si configuration management orodja ala ansible, chef, puppet. Pomagajo ti, če imaš standardiziran OS na vseh barkah.

Če ga nimaš, moraš v svojo rešitev zapakirati še nek OS layer, torej se razglej po dockerju ali poljubnem hypervisorju (kvm, qemu, vbox, vmware, ...).

c3p0 ::

Docker + neka skripta je tu the way to go.

chort ::

Hvala!
Docker se mi zdi zanimiv in sem si ga ogledoval že pred časom, vendar me je zmotilo, da naj bi imel probleme pri branju/pisanju na CIFS/SMB share (z Windows hostov). Se je to rešilo?
Kako je pa s performance dropom zaradi dodatnega layerja linuxa med hostom in programi?

pegasus je izjavil:

Poglej si configuration management orodja ala ansible, chef, puppet. Pomagajo ti, če imaš standardiziran OS na vseh barkah.

Če ga nimaš, moraš v svojo rešitev zapakirati še nek OS layer, torej se razglej po dockerju ali poljubnem hypervisorju (kvm, qemu, vbox, vmware, ...).


Večina laufa Win7 ali Win10, je to dovolj razlike da lahko povzroča probleme? Če bi bilo nujno bi jih lahko tudi standardiziral.

Zgodovina sprememb…

  • spremenilo: chort ()

pegasus ::

Ne vem, winsi niso moje področje. Kolikor vem na obojih laufa hyperv, tako da lahko pripraviš en image in bi moralo to biti to.

Lonsarg ::

Docker na Linuxu abstrahira več virtualnih okolij na enem kernel in ima torej res res minimalni overhead. Docker na Windowsu pa v ozadju uporablja Hyper-V in je to navadna virtualka, z to pomembno razliko da docker avtomatsko skrbi za konfiguracijo te virtualke in je to tebi nevidno(delaš direkt z aplikacijo).

Je pa overhead virtualke v primeru izbire primernega image (terminal Linux, Windows Server Core,..) zelo minimalen. RAMa sicer nekaj ekstra pobere, CPUja pa zanemarljivo.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

MSSQL na Linuxu

Oddelek: Programska oprema
5742 (520) Iluvatar
»

Kakšno znajne potrebuje Sysadmin/Devops?

Oddelek: Pomoč in nasveti
51202 (708) lebdim
»

[docker] Poganjanje celotne virtual machine v dockerju

Oddelek: Operacijski sistemi
194357 (3781) c3p0
»

Windows Server 2016 je tu z Docker Engine

Oddelek: Novice / Operacijski sistemi
3415613 (12012) krneki0001
»

Microsoftov SQL Server prihaja na Linux (strani: 1 2 3 )

Oddelek: Novice / Ostala programska oprema
12627883 (22568) noraguta

Več podobnih tem