[ CoyoteKG @ 14.01.2019. 14:03 ] @
Možda mi se ukaže prilika da hostujem neki Magento 1.9 drugaru koji je već u produkciji.

Otprilike mi je ideja da imam jednu EC2 instancu (t3.micro), sa podešenim ASG. Tu bi bio verovatno samo Apache i php.
Pri tom bih bazu držao na RDS MySQL (mozda i redis), a fajlove na EFS.
Svakako i CloudFront.
Pa i WAF.

Sad me interesuje da li imam uopšte potrebe za ELB. ASG bi trebalo da mi podiže mašine u zavisnosti kako podesim threshold i da raspoređuje pravilno posetioce na te mašine?
Vidim da postoji neka praksa da ELB radi zajedno sa ASG imam li ja takve potrebe? Pošto bi to podiglo još cifru za 25$ mesečno, što je više nego trećina svega prethodno nabrojanog (ako sam dobro izračunao, hebe me malo aws matematika)


[ Burgos @ 14.01.2019. 18:50 ] @
Ako usled opterećenja podigneš novu mašinu, ona će dobiti svoju IP adresu. Kako ćeš preusmeriti saobraćaj sa svog domena na nju? Kažeš da ASG to radi, ali nisam siguran. Mislim da ti je potreban load balancer ispred ove grupe koji ima statičku IP adresu koju dodaješ u DNS i koji automatski preusmerava saobraćaj na nove instance kako se podižu.
[ CoyoteKG @ 14.01.2019. 19:02 ] @
Nisam jos koristio ASG, mislio sam da ima neku logiku kako resava to :D.
Ali da, logicno je to sto kazes.
[ Branimir Maksimovic @ 14.01.2019. 19:13 ] @
A cuj ako ti treba load balanser pretpostavljam da zaradjujes mnogo vise od tih 25$ mesecno ;p
[ CoyoteKG @ 14.01.2019. 19:29 ] @
Pa ne treba mi load balanser, nego mi jeftinije da uzmem manju instancu i placam je mesecno, sa retkim iskakanjem u 2-3 instance u pikovima, nego da uzmem odmah veliku instancu koja ce 95% da zvrji neopterecena.

Ali da, 25$ nije realno mnogo. Nego ono, sa svim ovim fensi servisima ce da me izadje 35-40$ mesecno, pa mi LB koji mi na prvi pogled ne treba ispada skup
[ nkrgovic @ 15.01.2019. 11:26 ] @
Moras da imas ELB. ELB gadja TargetGroup, ASG je vezan za TG i dodaje i spusta instance iz/u TG, a ELB u sebe automatski ubacuje sve masine unutar TG-a.

Ne zaboravi da ti treba i image (Launch Configuration), pa onga ASG dize instance na osnovu LC-a, i trpa ih u TG, a ELB gadja TG saobracajam. :D

Trebace ti obavezno da izbacis session storage (moze Redis) i bazu van toga.
[ CoyoteKG @ 15.01.2019. 12:51 ] @
Večeras ću da stavim neki demo sajt na takav setup i da vidim malo te neke magento alate da istestiram i opteretim malo servere.
Kad napravim prvi setup servera, napravicu image, koji ce ASG da koristi za nove instance.

Ne kapiram ovo

Citat:
Trebace ti obavezno da izbacis session storage (moze Redis) i bazu van toga.


Znam da magento moze da pakuje session u bazu, i kao fajlove. Imao sam problema ranije sa jednim jako posecenim sajtom, pa sam kronovima brisao fajlove starije od nedelju dana. Ne znam kako se to resava kada je u bazi.
Redis bih svakako stavio. Nemam iskustva sa tim, ali koliko vidim samo u 2 magento konfiguraciona fajla podesim da se koristi redis. Šta sa redis i sessions? :)

Pošto vidim da imaš iskustva sa Magento. Nemam iskustva sa Varnish keširanjem.
Vidim da je praksa da se koristi Varnish kao reverse proxy. Ima li smisla koristiti Varnish ako budem imao CloudFront?
hm... sad dok pišem razmišljam... CloudFront bi mi pomagao kod statičkih fajlova klasika css, js, fotke... A Varnish pravi od poziva http staticke fajlove? Pa onda u kombinaciji sa CloudFront bi možda to bio pun pogodak.


Ovo je otprilike proračun sa minimalnim mogućim instancama kao neka početna tačka jer ne znam još posećenost

RDS db.t2.micro - 14.88$
Redis cache.t2.micro - 14.14$
EC2 t3.micro - 8.93$
AMI - 0,4$
EFS 5GB Standard Storage - 1,8$
ELB - 20$
CloudFront (EU i AUS 80/20%) ~ 25$
WAF ~ 10$
=======
95,15$

Pored ovoga treba nekako da pristupam ovim instancama. Verovatno Bastion host, što je 3,72$ za micro istancu.
I backup EFS instance.

A posle da smislim kako da kloniram ono što je minimalno potrebno za dev potrebe, i ceo CodePipeline za to.


[Ovu poruku je menjao CoyoteKG dana 15.01.2019. u 15:01 GMT+1]
[ nkrgovic @ 15.01.2019. 13:30 ] @
Za EFS ti treba i neki protok, ako hoces da uopste radi :). Default je spor kao lenji crv.

Redis ti treba kao session storage. Ako hoces sessions u bazu, za pocetak moze. :D Koliko ces moci da uradis sa t2.micro bazom je druga prica.... Nadam se da neces imati previse artikala u bazi, jer mozes da imas problema sa tako malom instancom - Magento je zahtevan za bazu.

Bitno je da ti Redis i MySQL ne budu na ASG-u, jer ce ti ASG gasiti instance. Ako ti ugasi instancu gde je baza - imas problem ;D

Takodje, pitanje je koliko je ASG dobro resenje, kriterijum skaliranja moras da pratis dobro, jer moze da ti skoci opterecenje na instanci, a da dodavanje nove napravi samo veci problem - ako cekas bazu.

Varnish je odlican za Magento, bar za one delove koji nisu shopping cart i admin panel. Jednostavno, kad korisnik gleda sajt on gleda samo varhish cache. Imas kako se integrise varnish sa magentom, predugo je za post na forumu... ;) Ima dobrih tutoriala. Ovo nema veze sa statickim assetima, koji idu na S3 pa kroz cloudfront.
[ CoyoteKG @ 15.01.2019. 14:07 ] @
Gledam sad, pa na AWS WAF moze da zameni i fail2ban.
https://docs.aws.amazon.com/wa...de/tutorials-4xx-blocking.html

Pa meni na EC2 masinama ce bukvalno trebati samo Apache, php i varnish.

MySQL i Redis neće biti na EC2 pa neće imati veze sa ASG. Već kao AWS servis.
Za Redis sad vidim da sam mu pogrešno shvatio namenu. Mislio sam da služi kao neki proxy ispred DB, da kešira upite i rastereti bazu. :)
[ Deunan @ 15.01.2019. 16:35 ] @
Koliko ce poseta biti na tom sajtu? Treba li ti sve to.
Varnish, ASG, load balancer, CloudFront, EFS, redis, ... sve to sto bi trebalo da ti smanji cenu servera kosta nekoliko puta vise nego serveri.

Ne mozes varnish na masine koje se dupliraju (nema poente). Varnish ti je cache sistem. Ide ispred tih masina i sluzi kao proxy i load balancer. Kad primi http request, pogleda da li je kesiran i vrati kes ili posalje na neku od instanci pa kasnije kesira.

Sessions ne mozes da koristis. Svaki server php sessions cuva u tmp direktorijumu na svom hardu. Ako se neko registruje na jednoj masini, a balancer ga sledeci request posalje na neku drugu instancu, on tu vise nije registrovan. Znaci, treba ti poseban server za to, mozes da koristis redis.
Isti slucaj i sa fajlovima (slikama). Ako sacuvas na jednoj instanci, a korisnik pristupa sajtu preko drugog servera, taj fajl ne postoji na tom serveru.

A te cene su posebna prica. Kad stigne racun, vidis da naplacuju sve zivo. Hard za svaku masinu, za bazu, protok, DNS za domen... Ludnica :)









[ nkrgovic @ 15.01.2019. 16:38 ] @
Redis se cesto koristi kao kes za DB, ali sa logikom unutar aplikacije :) - ne bas automagicno. U pitanju je klasican in-memory key-value storage, kao memcached, ako si to koristio.

I da, na EC2 masinama ti treba sam aplikativni sloj, SOLID je vise-manje primenjljiv i na ops, server treba da bude single-responsibility. U ovom slucaju, aplikativni server je samo to, radi aplikativni layer.

Vodi racuna, ono sto si ti dimenzionisao, je za dev, ne za produkcioni sajt. Digni par hiljada artikala i imaces problem sa bazom. Pokreni reindexiranje imaces problem sa svime :) . Realno, AWS je za ovo ne tako sjajno resenje. Ako hoces dobro resenje za klijenta dve klasicne masine, svaka po i7, 64GB RAM, 2x250GB SSD i jedan floating IP izmedju nih ti naprave i HA i sve ostalo, za 70-tak EUR mesecno. Dobijes osetno bolje i performanse i sve... AWS ima smisla kad projekti predju u stotine (i posebno hiljade) EUR mesecno, pa jos imas aplikaciju koja debelo "dise" (ide gore-dole po opterecenju i, kao sto si razumeo, koristi ASG), ali za ove pare ovo ce dati lose performanse za puno para. :)
[ CoyoteKG @ 15.01.2019. 17:22 ] @
@Deunan, fajlovi se nalaze na EFS, koji se mountuje na mašine, tako da sve mašine koriste iste fajlove. Pa ne bi trebalo da bude takvih problema.
Posećenost... ne znam, shop je online vec par godina. Nikako da dobijem access logove.
Ideja drugara je samo da bude bezbedno i brzo pa će on iskalkulisati da li mu se isplati cifra. Ali mislim da ni 100€ neće biti problem.


Nkrgovic, gde ima za 70€ takve dve masine :D
Ja sam jednu placao na hetzneru 95€

Znas li za neki veliki sample data, i kako bih mogao da testiram i opteretim server simulirajuci neki odredjeni broj korisnika?

Ne moram na kraju ni da hostujem, ali bi mi bila uzivancija da namestim sve i istestiram performanse i uporedim sa sadasnjim stanjem.


[Ovu poruku je menjao CoyoteKG dana 15.01.2019. u 19:29 GMT+1]
[ CoyoteKG @ 15.01.2019. 20:13 ] @
Citat:
nkrgovic:
Za EFS ti treba i neki protok, ako hoces da uopste radi :). Default je spor kao lenji crv.

pff uzasno spor je efs. Nisam ni pretpostavljao da je toliko sporo...

Stavio sam sad 10 MiB/s, što može da izađe do 70$ za mesec dana :D
[ nkrgovic @ 15.01.2019. 22:02 ] @
Na hetzner sam mislio, za 35EUR ima ova masina, EX41S-SSD. Po meni, dve takve ce bolje da odrade posao. Jedna za sajt, druga db slave, isti vhostovi, plus dev deo, floating IP da se lako promeni.... Moze uz malo shell skripti da se napravi jednostavno HA resenje, sa vremenom konvergencije ispod 30s, samo je bitno da se dobro detektuje downtime ;) - zbog promene db mastera.
[ CoyoteKG @ 25.01.2019. 07:01 ] @
Citat:
Deunan:
Ne mozes varnish na masine koje se dupliraju (nema poente). Varnish ti je cache sistem. Ide ispred tih masina i sluzi kao proxy i load balancer. Kad primi http request, pogleda da li je kesiran i vrati kes ili posalje na neku od instanci pa kasnije kesira.

Sad tek shvatam.
Namestio sam radi testiranja samo jedan server, mysql kao servis sto je na drugom serveru i isto tako redis na trecem.
Shop je poleteo. Mega menu koji inace drlja po 6-10 sec, ovde je otvarao za manje od 100ms.

Ali sam varnis na istom serveru gde mi je apache. Ne znam moze li mi to praviti problem, ako i ostali serveri iza LB imaju instaliran varnish? Ako je problem samo sto te masine kad se ukljuce imaju prazan kes dok ne dobiju drugi request nije strasno.
Ciscenje kesa posle izmena u admin panelu ce biti problem... kako ocistiti na razlicitim masinama...
Mada mislim da u ovom pluginu turpentine sam video da mogu da stavim vise nodova, pa mozda to bude cistilo cache na svim aktivnim serverima?

Same sesije i redis su aws servis, to nece biti problem valjda