SlideShare uma empresa Scribd logo
1 de 23
Baixar para ler offline
Escalabilidade e Alta
disponibilidade no PHP com Nginx
26/10/2020
Fábio de Carvalho Vieira
Powered
COMPARAÇÃO
● Conceitos base: https://www.youtube.com/watch?v=bEYlz5bsjRA
DIAGRAMA
NA PRÁTICA - INÍCIO CLOUDFLARE
1. Criar uma conta CloudFlare e adicionar um site no plano
Free
2. Alterar Nameserver no registro (preservando as mesmas
entradas necessárias dos outros serviços - sem impactos)
3. Para evitar problemas, sugiro que todos os
apontamentos estejam no começo no tipo DNS-Only
4. Aguardar publicação (até 1 dia)
CLOUDFLARE - DNS ONLY E PROXY
CLOUDFLARE - Funcionalidades sugeridas
1. SSL / TLS / Visão Geral -> Manter o SSL do tipo Completo
2. SSL / TLS / Certificados de Borda -> Marcar Sempre usar HTTPS
3. Speed / Otimização -> Minificação automática manter ativado
Javascript, CSS e HTML. Ativar Brotli. NÃO ativar o Rocket Loader.
4. Rede -> Ativar HTTP/3 (com QUIC), Ativar 0-RTT, WebSockets e Onion
Routing
NA PRÁTICA - BALANCER APLICAÇÃO
UTILIZANDO O NGINX
COMO BALANCER
➔ Distribuir as requisições
➔ Camada de SSL (se não tiver o
CloudFlare)
➔ Active Fail Over
➔ Stick Sessions
NA PRÁTICA - CRIAR AMBIENTE
NA PRÁTICA - CRIAR AMBIENTE
AUTOMAÇÃO
➔ Atenção aos ips públicos dos balancers
➔ Fazer o apontamento de IPs no cloudflare, o mesmo apontamento para ambos IPs
NA PRÁTICA - APONTAMENTO DNS
AUTOMAÇÃO
➔ Clicar no botão Add-on, no
container balancer, e “Instalar” o
Let’s Encrypt Free SSL
➔ Colocar todos os domínios e
subdomínios que farão parte do
projeto, separados por vírgula
➔ Se tiver passando pelo Cloudflare,
vai dar alguns erros mas o
importante é ele apenas instalar
NA PRÁTICA - INSTALAR SSL
AUTOMAÇÃO
➔ O balancer já vem configurado e otimizado sem necessidade de alterações, não
recomendamos alterar nenhuma configuração se não tiver conhecimentos avançados
➔ Em configurações, é possível acessar os arquivos dos containers, e modificá-los caso tenha
necessidade, seguem os principais:
/etc/nginx/nginx.conf -> Algumas opções globais como numero de processos
/etc/nginx/nginx-jelastic.conf -> Regras de apontamentos da porta 80
/etc/nginx/conf.d/ssl.conf -> Regras de apontamentos da porta 443
NA PRÁTICA - ARQUIVOS BALANCER
AUTOMAÇÃO★ Revisar configurações globais do NGINX WEB:
/etc/nginx/nginx.conf
★ Revisar configurações específicas do Domínio
/etc/nginx/conf.d/seudominio.com.br.conf (sugestão criar um arquivo novo por domínio
para manter organizado)
★ Revisar configurações específicas do PHP
/etc/php.ini
/etc/php-fpm.conf
NA PRÁTICA - PERFORMANCE WEB
AUTOMAÇÃO★ /etc/nginx/nginx.conf
○ worker_processes auto;
○ worker_rlimit_nofile 12000;
○ worker_connections 5000; (ou mais, sempre aprox. 40% do rlimit) -> numero maximo de
usuarios conectados (calcular worker_connections * worker_processes)
○ GZIP já vem habilitado e isso é importante. Analisar possibilidade de colocar a opção
gzip_static on; que é bem interessante.
○ sendfile on;
○ multi_accept on; -> dentro da tag events embaixo do worker_connections
○ ese epoll; -> dentro da tag events embaixo do worker_connections
○ Uso de keepalive (já vem habilitado)
○ Desabilitar Logs se não desejar, comentando as linhas access_log e error_log (cuidado)
NA PRÁTICA - NGINX.CONF
AUTOMAÇÃO
★ /etc/nginx/conf.d/seudominio.com.br.conf
○ Para funcionar as rotas de wordpress, atenção em incluir essa linha dentro da tag location / abaixo
da linha com o parâmetro root:
try_files $uri $uri/ /index.php?$args;
○ Cache no domínio (usar com cuidado), se desejar ter cache (no exemplo abaixo, de 30 dias, nas
extensões de arquivos abaixo), adicionar a linha:
location ~* .(?:ico|css|js|json|gif|jpe?g|png|woff2)$ { expires 7d; }
○ Para wordpress, por segurança, adicionar isso abaixo da linha server_name:
location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
return 444;
}
NA PRÁTICA - seudominio.com.br.conf
AUTOMAÇÃO
★ /etc/php.ini (OP Cache, o segredo da performance)
Manter as configurações que já estão otimizadas, se desejar apenas ajustar o uso de
memória se desejar, na variável memory_limit.
★ /etc/php-fpm.conf
○ Conceitos do pm = static, dynamic e ondemand
(https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning)
○ pm.max_children = 2 (sugestão 1 por core), não menor que 2 (comando no ssh /proc/cpuinfo mostra
quantos cores possui). Você pode alterar isso no variáveis também do ambiente, chamado
PHPFPM_MAX_CHILDREN.
○ pm.process_idle_timeout = 10s
○ pm.max_requests = 5000
NA PRÁTICA - php.ini e php-fpm.conf
EXTRA - RESTART SEM DOWNTIME
AUTOMAÇÃO
Após a alteração de alguma variável de configuração do serviço, normalmente é
necessário reiniciar.
Com o restart sequencial, é possível realizar esse procedimento com um intervalo de
tempo, garantindo assim a disponibilidade do serviço.
EXTRA - DEPLOY SEM DOWNTIME
AUTOMAÇÃO
Mais informações:
Guia de Publicação do Jelastic
AUTOMAÇÃO
Em um ambiente de escalabilidade horizontal da aplicação, sugerimos analisar os também:
➔ Replicação das sessões: com o stick session, diminui a possibilidade de ocorrer problemas com sessões, mas
se um container fica indisponível, os usuários serão direcionados automaticamente para o outro, e perderão
suas sessões.
Mais info: https://docs.jelastic.com/memcached-php-sessions/
➔ Arquivos em comum que não fazem parte do projeto e são enviados normalmente por usuários (exemplo:
uma pasta de upload). Nesse caso, é necessário replicar esse arquivo entre os servidores, existem duas
maneiras:
◆ https://docs.jelastic.com/file-synchronization/
◆ https://docs.jelastic.com/shared-storage-container/
➔ Monitoramento profissional: Adicione de maneira automática o monitoramento Nginx Amplify, detalhes na
URL: https://saveincloud.com/pt/blog/jelastic-cloud/nginx-amplify
NA PRÁTICA - Detalhes adicionais
BÔNUS
E-MAIL
TOKEN
www.saveincloud.com.br
suporte@saveincloud.com
OBRIGADO!
Powered

Mais conteúdo relacionado

Mais procurados

[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재PgDay.Seoul
 
Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Ulrich Krause
 
스토리포인트가이드
스토리포인트가이드스토리포인트가이드
스토리포인트가이드YoungKi Hong
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkJohn Dalsgaard
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなことHiroaki Sano
 
2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific DashboardCeph Community
 
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMydbops
 
Deploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesDeploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesJimmy Angelakos
 
Phân quyền trên file và thư mục trên Ubuntu
Phân quyền trên file và thư mục trên UbuntuPhân quyền trên file và thư mục trên Ubuntu
Phân quyền trên file và thư mục trên UbuntuLương Kiên
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger InternalsNorberto Leite
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우PgDay.Seoul
 
A Technical Introduction to WiredTiger
A Technical Introduction to WiredTigerA Technical Introduction to WiredTiger
A Technical Introduction to WiredTigerMongoDB
 
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자PgDay.Seoul
 
Thiết kế và quản trị web hệ trung cấp
Thiết kế và quản trị web hệ trung cấpThiết kế và quản trị web hệ trung cấp
Thiết kế và quản trị web hệ trung cấpNguyễn Bảo Quốc
 
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPTBài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPTMasterCode.vn
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1pisu412
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL AdministrationEDB
 
HTTP - The Other Face Of Domino
HTTP - The Other Face Of DominoHTTP - The Other Face Of Domino
HTTP - The Other Face Of DominoGabriella Davis
 

Mais procurados (20)

[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
[pgday.Seoul 2022] PostgreSQL구조 - 윤성재
 
Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)Compact, Compress, De-Duplicate (DAOS)
Compact, Compress, De-Duplicate (DAOS)
 
스토리포인트가이드
스토리포인트가이드스토리포인트가이드
스토리포인트가이드
 
Cloud arch patterns
Cloud arch patternsCloud arch patterns
Cloud arch patterns
 
RESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWorkRESTful services on IBM Domino/XWork
RESTful services on IBM Domino/XWork
 
MySQLの運用でありがちなこと
MySQLの運用でありがちなことMySQLの運用でありがちなこと
MySQLの運用でありがちなこと
 
2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard2021.02 new in Ceph Pacific Dashboard
2021.02 new in Ceph Pacific Dashboard
 
MongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To TransactionsMongoDB WiredTiger Internals: Journey To Transactions
MongoDB WiredTiger Internals: Journey To Transactions
 
Deploying PostgreSQL on Kubernetes
Deploying PostgreSQL on KubernetesDeploying PostgreSQL on Kubernetes
Deploying PostgreSQL on Kubernetes
 
Phân quyền trên file và thư mục trên Ubuntu
Phân quyền trên file và thư mục trên UbuntuPhân quyền trên file và thư mục trên Ubuntu
Phân quyền trên file và thư mục trên Ubuntu
 
Hadoop
HadoopHadoop
Hadoop
 
MongoDB WiredTiger Internals
MongoDB WiredTiger InternalsMongoDB WiredTiger Internals
MongoDB WiredTiger Internals
 
Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우Mvcc in postgreSQL 권건우
Mvcc in postgreSQL 권건우
 
A Technical Introduction to WiredTiger
A Technical Introduction to WiredTigerA Technical Introduction to WiredTiger
A Technical Introduction to WiredTiger
 
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
[Pgday.Seoul 2017] 7. PostgreSQL DB Tuning 기업사례 - 송춘자
 
Thiết kế và quản trị web hệ trung cấp
Thiết kế và quản trị web hệ trung cấpThiết kế và quản trị web hệ trung cấp
Thiết kế và quản trị web hệ trung cấp
 
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPTBài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
Bài 3: Triển khai dịch vụ Active Directory - Giáo trình FPT
 
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
Slide Hệ Quản Trị Cơ sở dữ liệu - CHƯƠNG 1
 
Mastering PostgreSQL Administration
Mastering PostgreSQL AdministrationMastering PostgreSQL Administration
Mastering PostgreSQL Administration
 
HTTP - The Other Face Of Domino
HTTP - The Other Face Of DominoHTTP - The Other Face Of Domino
HTTP - The Other Face Of Domino
 

Semelhante a Escalabilidade PHP Nginx

Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxThiago Paes
 
Tutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTecla Internet
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1 Edgar Dantas
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapRoberto Castro
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHPFelipe Ribeiro
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Tiago Hillebrandt
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctoolse-Setorial
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFabiano Weimar
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteUilson Souza
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxThiago Paes
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceSaveincloud
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteRoberto Mello
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressJulian Fernandes
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPArlindo Santos
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheDell Technologies
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanJuliano Atanazio
 

Semelhante a Escalabilidade PHP Nginx (20)

Alta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com NginxAlta Performance de Aplicações PHP com Nginx
Alta Performance de Aplicações PHP com Nginx
 
Tutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos LinuxTutorial - Cloud Computing Primeiros Acessos Linux
Tutorial - Cloud Computing Primeiros Acessos Linux
 
Apresentação zend framework 2 parte 1
Apresentação zend framework 2   parte 1 Apresentação zend framework 2   parte 1
Apresentação zend framework 2 parte 1
 
Aula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldapAula14 vsftp de-introopenldap
Aula14 vsftp de-introopenldap
 
Aula 2
Aula 2Aula 2
Aula 2
 
Otimizacao de websites em PHP
Otimizacao de websites em PHPOtimizacao de websites em PHP
Otimizacao de websites em PHP
 
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
Melhorando o desempenho do seu WordPress [WordCamp São Paulo 2015]
 
Design Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com CtoolsDesign Patterns para Tuning Pentaho com Ctools
Design Patterns para Tuning Pentaho com Ctools
 
Faça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.cachingFaça seu portal voar usando o plone.app.caching
Faça seu portal voar usando o plone.app.caching
 
Escalando Sites com Nginx
Escalando Sites com NginxEscalando Sites com Nginx
Escalando Sites com Nginx
 
Forefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamenteForefront TMG - Planejando corretamente
Forefront TMG - Planejando corretamente
 
Alta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - NginxAlta Performance de Aplicações Web em PHP - Nginx
Alta Performance de Aplicações Web em PHP - Nginx
 
Cloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performanceCloud PostgreSQL em alta performance
Cloud PostgreSQL em alta performance
 
Squid proxy
Squid proxySquid proxy
Squid proxy
 
Containers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container SuiteContainers PostgreSQL com a Crunchy Container Suite
Containers PostgreSQL com a Crunchy Container Suite
 
Melhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPressMelhorando o desempenho do seu WordPress
Melhorando o desempenho do seu WordPress
 
Cakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHPCakephp - framework de desenvolvimento de aplicações Web em PHP
Cakephp - framework de desenvolvimento de aplicações Web em PHP
 
Web Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+ApacheWeb Seminário sobre Varnish+Nginx+Apache
Web Seminário sobre Varnish+Nginx+Apache
 
Gerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarmanGerenciamento de Backups PostgreSQL com pgbarman
Gerenciamento de Backups PostgreSQL com pgbarman
 
Web seminario varnish
Web seminario varnishWeb seminario varnish
Web seminario varnish
 

Mais de Saveincloud

Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelSaveincloud
 
Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBSaveincloud
 
Replicação e tuning do Firebird na nuvem
Replicação e tuning do Firebird na nuvemReplicação e tuning do Firebird na nuvem
Replicação e tuning do Firebird na nuvemSaveincloud
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemSaveincloud
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceSaveincloud
 
Jitsi Meet - Criando seu ambiente de videoconferência corporativa
Jitsi Meet - Criando seu ambiente de videoconferência corporativaJitsi Meet - Criando seu ambiente de videoconferência corporativa
Jitsi Meet - Criando seu ambiente de videoconferência corporativaSaveincloud
 
Owncloud | configurando um servidor de arquivos na nuvem
Owncloud |  configurando um servidor de arquivos na nuvemOwncloud |  configurando um servidor de arquivos na nuvem
Owncloud | configurando um servidor de arquivos na nuvemSaveincloud
 

Mais de Saveincloud (7)

Servidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP PanelServidor Próprio - Configuração do CWP Panel
Servidor Próprio - Configuração do CWP Panel
 
Análise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDBAnálise de Performance do MySQL e MariaDB
Análise de Performance do MySQL e MariaDB
 
Replicação e tuning do Firebird na nuvem
Replicação e tuning do Firebird na nuvemReplicação e tuning do Firebird na nuvem
Replicação e tuning do Firebird na nuvem
 
Java Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na NuvemJava Escalável e com Alta Disponibilidade na Nuvem
Java Escalável e com Alta Disponibilidade na Nuvem
 
Cloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performanceCloud Mysql e MariaDB em alta performance
Cloud Mysql e MariaDB em alta performance
 
Jitsi Meet - Criando seu ambiente de videoconferência corporativa
Jitsi Meet - Criando seu ambiente de videoconferência corporativaJitsi Meet - Criando seu ambiente de videoconferência corporativa
Jitsi Meet - Criando seu ambiente de videoconferência corporativa
 
Owncloud | configurando um servidor de arquivos na nuvem
Owncloud |  configurando um servidor de arquivos na nuvemOwncloud |  configurando um servidor de arquivos na nuvem
Owncloud | configurando um servidor de arquivos na nuvem
 

Escalabilidade PHP Nginx

  • 1. Escalabilidade e Alta disponibilidade no PHP com Nginx 26/10/2020 Fábio de Carvalho Vieira Powered
  • 2. COMPARAÇÃO ● Conceitos base: https://www.youtube.com/watch?v=bEYlz5bsjRA
  • 4. NA PRÁTICA - INÍCIO CLOUDFLARE 1. Criar uma conta CloudFlare e adicionar um site no plano Free 2. Alterar Nameserver no registro (preservando as mesmas entradas necessárias dos outros serviços - sem impactos) 3. Para evitar problemas, sugiro que todos os apontamentos estejam no começo no tipo DNS-Only 4. Aguardar publicação (até 1 dia)
  • 5. CLOUDFLARE - DNS ONLY E PROXY
  • 6. CLOUDFLARE - Funcionalidades sugeridas 1. SSL / TLS / Visão Geral -> Manter o SSL do tipo Completo 2. SSL / TLS / Certificados de Borda -> Marcar Sempre usar HTTPS 3. Speed / Otimização -> Minificação automática manter ativado Javascript, CSS e HTML. Ativar Brotli. NÃO ativar o Rocket Loader. 4. Rede -> Ativar HTTP/3 (com QUIC), Ativar 0-RTT, WebSockets e Onion Routing
  • 7. NA PRÁTICA - BALANCER APLICAÇÃO UTILIZANDO O NGINX COMO BALANCER ➔ Distribuir as requisições ➔ Camada de SSL (se não tiver o CloudFlare) ➔ Active Fail Over ➔ Stick Sessions
  • 8. NA PRÁTICA - CRIAR AMBIENTE
  • 9. NA PRÁTICA - CRIAR AMBIENTE
  • 10. AUTOMAÇÃO ➔ Atenção aos ips públicos dos balancers ➔ Fazer o apontamento de IPs no cloudflare, o mesmo apontamento para ambos IPs NA PRÁTICA - APONTAMENTO DNS
  • 11. AUTOMAÇÃO ➔ Clicar no botão Add-on, no container balancer, e “Instalar” o Let’s Encrypt Free SSL ➔ Colocar todos os domínios e subdomínios que farão parte do projeto, separados por vírgula ➔ Se tiver passando pelo Cloudflare, vai dar alguns erros mas o importante é ele apenas instalar NA PRÁTICA - INSTALAR SSL
  • 12. AUTOMAÇÃO ➔ O balancer já vem configurado e otimizado sem necessidade de alterações, não recomendamos alterar nenhuma configuração se não tiver conhecimentos avançados ➔ Em configurações, é possível acessar os arquivos dos containers, e modificá-los caso tenha necessidade, seguem os principais: /etc/nginx/nginx.conf -> Algumas opções globais como numero de processos /etc/nginx/nginx-jelastic.conf -> Regras de apontamentos da porta 80 /etc/nginx/conf.d/ssl.conf -> Regras de apontamentos da porta 443 NA PRÁTICA - ARQUIVOS BALANCER
  • 13. AUTOMAÇÃO★ Revisar configurações globais do NGINX WEB: /etc/nginx/nginx.conf ★ Revisar configurações específicas do Domínio /etc/nginx/conf.d/seudominio.com.br.conf (sugestão criar um arquivo novo por domínio para manter organizado) ★ Revisar configurações específicas do PHP /etc/php.ini /etc/php-fpm.conf NA PRÁTICA - PERFORMANCE WEB
  • 14. AUTOMAÇÃO★ /etc/nginx/nginx.conf ○ worker_processes auto; ○ worker_rlimit_nofile 12000; ○ worker_connections 5000; (ou mais, sempre aprox. 40% do rlimit) -> numero maximo de usuarios conectados (calcular worker_connections * worker_processes) ○ GZIP já vem habilitado e isso é importante. Analisar possibilidade de colocar a opção gzip_static on; que é bem interessante. ○ sendfile on; ○ multi_accept on; -> dentro da tag events embaixo do worker_connections ○ ese epoll; -> dentro da tag events embaixo do worker_connections ○ Uso de keepalive (já vem habilitado) ○ Desabilitar Logs se não desejar, comentando as linhas access_log e error_log (cuidado) NA PRÁTICA - NGINX.CONF
  • 15. AUTOMAÇÃO ★ /etc/nginx/conf.d/seudominio.com.br.conf ○ Para funcionar as rotas de wordpress, atenção em incluir essa linha dentro da tag location / abaixo da linha com o parâmetro root: try_files $uri $uri/ /index.php?$args; ○ Cache no domínio (usar com cuidado), se desejar ter cache (no exemplo abaixo, de 30 dias, nas extensões de arquivos abaixo), adicionar a linha: location ~* .(?:ico|css|js|json|gif|jpe?g|png|woff2)$ { expires 7d; } ○ Para wordpress, por segurança, adicionar isso abaixo da linha server_name: location = /xmlrpc.php { deny all; access_log off; log_not_found off; return 444; } NA PRÁTICA - seudominio.com.br.conf
  • 16. AUTOMAÇÃO ★ /etc/php.ini (OP Cache, o segredo da performance) Manter as configurações que já estão otimizadas, se desejar apenas ajustar o uso de memória se desejar, na variável memory_limit. ★ /etc/php-fpm.conf ○ Conceitos do pm = static, dynamic e ondemand (https://tideways.com/profiler/blog/an-introduction-to-php-fpm-tuning) ○ pm.max_children = 2 (sugestão 1 por core), não menor que 2 (comando no ssh /proc/cpuinfo mostra quantos cores possui). Você pode alterar isso no variáveis também do ambiente, chamado PHPFPM_MAX_CHILDREN. ○ pm.process_idle_timeout = 10s ○ pm.max_requests = 5000 NA PRÁTICA - php.ini e php-fpm.conf
  • 17. EXTRA - RESTART SEM DOWNTIME AUTOMAÇÃO Após a alteração de alguma variável de configuração do serviço, normalmente é necessário reiniciar. Com o restart sequencial, é possível realizar esse procedimento com um intervalo de tempo, garantindo assim a disponibilidade do serviço.
  • 18. EXTRA - DEPLOY SEM DOWNTIME AUTOMAÇÃO Mais informações: Guia de Publicação do Jelastic
  • 19. AUTOMAÇÃO Em um ambiente de escalabilidade horizontal da aplicação, sugerimos analisar os também: ➔ Replicação das sessões: com o stick session, diminui a possibilidade de ocorrer problemas com sessões, mas se um container fica indisponível, os usuários serão direcionados automaticamente para o outro, e perderão suas sessões. Mais info: https://docs.jelastic.com/memcached-php-sessions/ ➔ Arquivos em comum que não fazem parte do projeto e são enviados normalmente por usuários (exemplo: uma pasta de upload). Nesse caso, é necessário replicar esse arquivo entre os servidores, existem duas maneiras: ◆ https://docs.jelastic.com/file-synchronization/ ◆ https://docs.jelastic.com/shared-storage-container/ ➔ Monitoramento profissional: Adicione de maneira automática o monitoramento Nginx Amplify, detalhes na URL: https://saveincloud.com/pt/blog/jelastic-cloud/nginx-amplify NA PRÁTICA - Detalhes adicionais
  • 22. TOKEN