Több mint 200 chroot környezetet szeretnék kialakítani PHP-FPM számára. Mivel a PHP használ mysql adatbázist, minden chroot környezetben elérhetővé kell tennem a /var/run/mysql mappát.
Jelenleg ezt a mount --bind paranccsal oldom meg, de ilyen mennyiségnél ez már eléggé időigényes a művelet, és nem is igazán tetszik.
Van bárkinek alternatív ötlete? Sajnos én nem találtam más megoldási lehetőséget. Jó lenne valamilyen mappa hardlink, bár direktben ilyet csinálni nem lehet.
- 1468 megtekintés
Hozzászólások
Az nem jo, ha a mysql-edet halozaton keresztul ered el? PG tudom, hogy tud ilyet, ha jol emlekszem, ez is.
--
When you tear out a man's tongue, you are not proving him a liar, you're only telling the world that you fear what he might say. -George R.R. Martin
- A hozzászóláshoz be kell jelentkezni
Elérni lehetne így, de elvárás, hogy a jelenleg működő PHP kódok változtatás nélkül futhassanak, és ezek jó része socketen keresztül kapcsolódik.
- A hozzászóláshoz be kell jelentkezni
socat-el tudsz socket=>tcp vagy tcp=>socket forwardot, de nem hangzik túl jól, ha fejlesztő/megrendelő képtelen átírni az sql connection stringet...
- A hozzászóláshoz be kell jelentkezni
socat-tal tudsz unix-listen+unix-connect kapcsolatot csinalni, ez futhat a "hoston" is, igy nemkell tcp-vel szarakodni
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Próbáltam utánaolvasni, de nem találtam meg, hogy a socat paranccsal hogyan érhetem el, hogy a /var/run/mysqld/mysqld.sock fájlt a 200 chrooton belül is el lehessen érni.
- A hozzászóláshoz be kell jelentkezni
200 socat-ot kell futtatnod listen:/home/ittvan/var/run/mysqld/mysqld.sock, vagy irsz egy sajat tcp proxy progit, ami minden helyen listenel, es forwardolja a masikra
--
A vegtelen ciklus is vegeter egyszer, csak kelloen eros hardver kell hozza!
- A hozzászóláshoz be kell jelentkezni
Köszönöm, tökéletes! Sokkal gyorsabb, mint a mount. Remélem összességében kevesebb erőforrást is eszik. Kezelni mindenképp könnyebb.
Mivel gyakorlatilag egyetlen olyan példát sem találtam a neten, ahol a chrootban futó mysql szerver eléréséhez a socat parancsot használták volna, álljon itt a csatlakoztató bash kód, hátha valakinek még szüksége lesz rá:
[ -e $CHROOT/var/run/mysqld/mysqld.sock ] || socat UNIX-LISTEN:$CHROOT/var/run/mysqld/mysqld.sock,fork,user=mysql,group=mysql,mode=777 UNIX-CONNECT:/var/run/mysqld/mysqld.sock &
Tetszőleges számú ilyen parancs egymás után megadható.
A kód többszöri futtatása nem okoz hibát.
Az összes forward pedig a
killall socat
paranccsal leállítható.
Egyszerű és nagyszerű. :)
- A hozzászóláshoz be kell jelentkezni
Ilyet ne csinalj. Hasznalj tcp-t.
A chroot helyett kontenereket.
Amugy nem kell a full mappat.
- A hozzászóláshoz be kell jelentkezni
Azt mondod, hogy hardlinkeljem be magát a socket fájlt?
- A hozzászóláshoz be kell jelentkezni
Akar azt is csinalhatod, ha nincsenek kulon particion.
Egyebkent azt mondom, h a socket file-t magat is mountolhatod v. meginkabb azt a konyvtart, amiben a socket file van.
Az adatbazis file-okat felesleges.
De meg1x, ne csinald, magad fogod szopatni vele.
Amugymeg chroot...a 2000-es evek evekben meg elfogadhato volt, de most mar kontenerizalni javasolt.
- A hozzászóláshoz be kell jelentkezni
Ide tök felesleges és php-fpm tud saját chroot-t, gondolom azt a featuret akarja használni.
- A hozzászóláshoz be kell jelentkezni
Igen, a php-fpm chroot-ját használom. Jelenleg is a /var/run/mysqld mappákat mountolom csak, de ez is időigényes.
A konténer nem hiszem, hogy kevesebb erőforrást enne, mint a php-fpm chroot-ja, még mountokkal együtt sem.
- A hozzászóláshoz be kell jelentkezni
attól többet fog kelleni mountolni :)
- A hozzászóláshoz be kell jelentkezni
Jelenleg is a /var/run/mysqld mappákat mountolom csak, de ez is időigényes.
Nem tudom, nálam van 100-as nagyságrendben mount -o bind, és nem lassú. A docker is használja ezt a funkciót, nem tűnt fel, hogy pont ez lassú lenne.
A konténer nem hiszem, hogy kevesebb erőforrást enne, mint a php-fpm chroot-ja, még mountokkal együtt sem.
Kb. pont ugyanannyi erőforrást eszik. A lényeges különbség, hogy egy valag erőforrást/rendszerhívást is tud virtualizálni, amit a sima chroot nem tesz meg (pl. PID name space), illetve ezt az egészet szabványos leíróval teszi, ergó zéró energiával tudod vinni a konténert egyik gépről a másikra.
- A hozzászóláshoz be kell jelentkezni