Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Deck of Cards
historyfalse
idModProxy
Card
defaulttrue
id1
labelPasso 1


  • Instale o servidor NGINX, versão 1.20.1 ou superior.


Card
id2
labelPasso 2



Cada “BalancerMember” indica um servidor e deve apontar para o IP e a porta corretos.

Um cookie chamado “FLUIGCOOKIE” é criado para manter a afinidade da sessão. Sem o cookie, o procedimento não irá funcionar.
Card
id3
labelPasso 3


  • Habilite o balanceamento com o parâmetro upstream (geralmente é feito criando o arquivo /etc/nginx/nginx.conf ou /etc/nginx/conf.d).

    Aviso
    titleAtenção!

    Cada “BalancerMember” indica um servidor e deve apontar para o IP e a porta corretos.
    Um cookie chamado “FLUIGCOOKIE” é criado para manter a afinidade da sessão. Sem o cookie, o procedimento não irá funcionar.

    Bloco de código
    languagexml
    titlenginx.conf
    upstream mycluster {
        server {Ip do servidor 1}:{PORTA};
        server {Ip do servidor 2}:{PORTA};
        server {Ip do servidor 3}:{PORTA};
        sticky name=FLUIGCOOKIE expires=1h path=/ domain=.exemplo.com;
    }
    
    server {
        listen 80;
        server_name fluig.exemplo.com;
        
        server_tokens off;
    
        add_header 'Access-Control-Allow-Origin' 'http://mycluster';
        add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        location / {
            proxy_pass http://mycluster;
            add_header Set-Cookie "FLUIGCOOKIE=$request_id.$upstream_addr; Path=/";
    
            proxy_pass_request_headers on;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
    
            client_max_body_size       880m;
            client_body_buffer_size    256k;
    
            proxy_connect_timeout      800;
            proxy_send_timeout         800;
            proxy_read_timeout         800;
    
            proxy_buffer_size          8k;
            proxy_buffers              8 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
    
    }
Aviso
titleAtenção!
Card
id4
labelPasso 4
titleLoad Balance RealTime
Nota
titleImportante!

O procedimento abaixo deve ser realizado para utilizar o serviço de Realtime em Load balance.


Passos para usar o Load Balance do Realtime

  • Feitas as configurações acima, adicione o código abaixo no arquivo de configuração do servidor (Passo 3).

    Bloco de código
    languagexml
    themeEclipse
    titlenginx.conf
    upstream nodeCluster1 {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com  httponly;
    
        server {ip_servidor_realtime1}:8888;
        server {ip_servidor_realtime2}:8888;
    }
    
    server {
        listen 8888;
    
        add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
    
        location / {
            proxy_pass http://nodeCluster1;
            proxy_cookie_path / "/; HTTPOnly; Secure";
        }
    }
    
    upstream nodes_polling {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
    
        server {ip_servidor_realtime1}:7777;
        server {ip_servidor_realtime2}:7777;
    }
    
    upstream nodes_ws {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
    
        server {ip_servidor_realtime1}:7777;
        server {ip_servidor_realtime2}:7777;
    }
    
    server {
        listen 7777;
    
        add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
    
        location / {
            set $upstream "nodes_polling"; 
            
            if ($http_upgrade = "websocket") {
                set $upstream "nodes_ws"; 
            }
            proxy_pass http://$upstream;
    
        }
    }


Card
id5
labelPasso 5
titleLoad Balance Bloco completo


  • Após efetuar os passos anteriores, o arquivo "/etc/nginx/conf.d" estará desta forma:

    Bloco de código
    languagexml
    themeEclipse
    titlenginx.conf
    upstream mycluster {
        server {Ip do servidor 1}:{PORTA};
        server {Ip do servidor 2}:{PORTA};
        server {Ip do servidor 3}:{PORTA};
        sticky name=FLUIGCOOKIE expires=1h path=/ domain=.exemplo.com;
    }
    
    server {
        listen 80;
        server_name fluig.exemplo.com;
        
        server_tokens off;
    
        add_header 'Access-Control-Allow-Origin' 'http://mycluster';
        add_header 'Access-Control-Allow-Methods' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Request-Method' 'GET, PUT, POST, OPTIONS, DELETE';
        add_header 'Access-Control-Allow-Headers' 'Content-Type, X-Requested-With, accept-version';
        add_header Strict-Transport-Security "max-age=31536000; includeSubDomains; preload" always;
    
        location / {
            proxy_pass http://mycluster;
            add_header Set-Cookie "FLUIGCOOKIE=$request_id.$upstream_addr; Path=/";
    
            proxy_pass_request_headers on;
            proxy_set_header Host $http_host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Forwarded-Server $host;
            proxy_set_header X-Forwarded-Host $host:$server_port;
            proxy_set_header X-Real-IP $remote_addr;
    
            client_max_body_size       880m;
            client_body_buffer_size    256k;
    
            proxy_connect_timeout      800;
            proxy_send_timeout         800;
            proxy_read_timeout         800;
    
            proxy_buffer_size          8k;
            proxy_buffers              8 32k;
            proxy_busy_buffers_size    64k;
            proxy_temp_file_write_size 64k;
        }
    
    }
    
    upstream nodeCluster1 {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com  httponly;
    
        server {ip_servidor_realtime1}:8888;
        server {ip_servidor_realtime2}:8888;
    }
    
    server {
        listen 8888;
    
        add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
    
        location / {
            proxy_pass http://nodeCluster1;
            proxy_cookie_path / "/; HTTPOnly; Secure";
        }
    }
    
    upstream nodes_polling {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
    
        server {ip_servidor_realtime1}:7777;
        server {ip_servidor_realtime2}:7777;
    }
    
    upstream nodes_ws {
        sticky name=SERVERID expires=1h path=/ domain=exemplo.com httponly;
    
        server {ip_servidor_realtime1}:7777;
        server {ip_servidor_realtime2}:7777;
    }
    
    server {
        listen 7777;
    
        add_header Set-Cookie "SERVERID=sticky.$upstream_cookie_SERVERID; Path=/";
    
        location / {
            set $upstream "nodes_polling"; 
            
            if ($http_upgrade = "websocket") {
                set $upstream "nodes_ws"; 
            }
            proxy_pass http://$upstream;
    
        }
    }

...