Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Escalando Apps PHP - Maceió DEV Meetup #1

Escalando Apps PHP - Maceió DEV Meetup #1

Palestra no primeiro Maceió DEV Meetup sobre escalabilidade. Embora o tema da palestra tenha sido Escalando Apps PHP, os conceitos apresentados (LoadBalancing e DNS) se aplicam a qualquer linguagem/stack.

Link do evento: http://www.meetup.com/maceio-dev-meetup/events/218622546/

Tony Messias

November 26, 2014
Tweet

More Decks by Tony Messias

Other Decks in Programming

Transcript

  1. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) Escalando Apps PHP Maceió Dev Meetup #1
  2. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) quem sou eu? ➔ Desenvolvedor web há +4 anos; ➔ Formado em Análise de Sistemas pelo CESMAC; ➔ Engenheiro de Software no
  3. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) ➔ Load Balancing com HAProxy; ➔ Distribuição de DNS; (Disponível no leanpub.com) TL;DW
  4. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) não vamos abordar LAMP
  5. HT T P Nginx PHP MySQL usuário usuário usuário usuário

    HT T P HT T P usuário usuário usuário usuário HTTP HTTP
  6. HT T P Apache PHP MySQL usuário usuário usuário usuário

    HT T P HT T P usuário usuário usuário usuário HTTP HTTP
  7. HT T P Nginx PHP MySQL usuário usuário usuário usuário

    HT T P HT T P usuário usuário usuário usuário HTTP HTTP
  8. HT T P Nginx PHP MySQL usuário usuário usuário usuário

    HT T P HT T P usuário usuário usuário usuário HTTP HTTP
  9. HT T P Nginx PHP MySQL usuário usuário usuário usuário

    HTTP HT T P usuário usuário usuário usuário HTTP HTTP usuário usuário usuário usuário usuário HTTP HTTP HTTP usuário
  10. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP Cuidados quando usar LoadBalacing: ❖ Utilização de sessão; ❖ IP do usuário; ❖ Upload de arquivos;
  11. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP
  12. HTTP Apache PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Apache PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP
  13. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP
  14. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP $ dig A example.com ; <<>> DiG 9.9.5-3-Ubuntu <<>> A example.com ;; global options: +cmd ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 16 IN A 199.16.158.40 example.com. 16 IN A 199.16.158.104 ....
  15. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP $ dig A example.com ; <<>> DiG 9.9.5-3-Ubuntu <<>> A example.com ;; global options: +cmd ;; QUESTION SECTION: ;example.com. IN A ;; ANSWER SECTION: example.com. 19 IN A 199.16.158.104 example.com. 19 IN A 199.16.158.40 ....
  16. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP SPARE HaProxy (com keepalived)
  17. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare)
  18. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare)
  19. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare)
  20. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) <hands-on>
  21. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) var http = require('http'); function serve(ip, port) { http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write(JSON.stringify(req.headers)); res.end("\nThere's no place like "+ip+":"+port+"\n"); }).listen(port, ip); console.log('Server running at http://'+ip+':'+port+'/'); } // simulando um cluster de servidores // em um mesmo server serve('0.0.0.0', 9000); serve('0.0.0.0', 9001); serve('0.0.0.0', 9002);
  22. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) $ sudo add-apt-repository -y ppa:vbernat/haproxy-1.5 $ sudo apt-get update $ sudo apt-get install -y haproxy
  23. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) alguns conceitos do HaProxy frontend: onde configuramos o HaProxy para ouvir conexões; backend: para onde o HaProxy vai enviar as conexões recebidas pelo frontend; stats: opcional, uma interface web para monitorar o load balancer.
  24. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) frontend localnodes bind *:80 mode http default_backend nodes
  25. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) backend nodes mode http balance roundrobin option forwardfor http-request set-header X-Forwarded-Port %[dst_port] http-request add-header X-Forwarded-Proto https if { ssl_fc } option httpchk HEAD / HTTP/1.1\r\nHost:localhost server web01 127.0.0.1:9000 check server web02 127.0.0.1:9001 check server web03 127.0.0.1:9002 check
  26. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) </hands-on>
  27. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) mais sobre o assunto: ➔ Deploy em cluster; ➔ Replicação de banco de dados; ➔ Cache com Redis; ➔ Background jobs (queues); ➔ Centralização de LOGS (ELK);
  28. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) Obrigado!
  29. HTTP Nginx PHP usuário usuário usuário usuário usuário usuário HTTP

    HTTP Nginx PHP App 1 App 2 DB HaProxy TCP TCP HTTP HTTP HTTP HTTP HaProxy T CP TCP HaProxy (spare) ➔ https://serversforhackers. com/editions/2014/07/15/haproxy/ ➔ https://www.digitalocean. com/community/tutorials/an-introduction-to- haproxy-and-load-balancing-concepts ➔ https://leanpub.com/scalingphp Referências