Quatro para balanceamento de carga usando Nginx

Introdução Em uma base de dados relacional, o índice é uma estrutura de armazenamento de um único valores físicos, a partir da tabela da base de dados tem uma coluna ou colunas são classificados, ele situa-se numa mesa ou uma pluralidade de valores da coluna e os pontos correspondentes lógica ponteiro da tabela de página para uma lista de dados de identificação físicas destes valores.

HTTP balanceamento de carga, isto é, nós geralmente tudo "load sete equilíbrio" trabalho na sétima camada "camada de aplicação." O balanceamento de carga TCP, é o que costumamos chamar de "quatro balanceamento de carga" trabalho em "Camada de Rede" e da "camada de transporte." Por exemplo, LVS (Linux Virtual Server, serviços virtuais Linux) e F5 (A carga de hardware dispositivos de equilíbrio), também pertencem à "carga de quatro camadas de equilíbrio"

nginx-1.9.0 lançado, esta versão adiciona módulos de fluxo geral de procuração TCP e balanceamento de carga, ngx_stream_core_module este módulo é habilitado após a versão 1.90. Mas não é instalado por padrão,

Este módulo é necessário parâmetros ativar --with-fluxo especificado em tempo de compilação.

1) compilar os parâmetros do arquivo de configuração Nginx

./configure with-http_stub_status_module with-corrente

-------------------------------------------------- ----------------

2) compilar, instalar, instale make && make

-------------------------------------------------- ----------------

3) nginx.conf arquivo de configuração

corrente {

a montante kevin {

servidor 192.168.10.10:8080; # aqui configurado para ser acessado endereço

servidor 192.168.10.20:8081;

servidor 192.168.10.30:8081; # exigida porta proxy, onde meu agente onze kevin módulo de interface 8081

}

servidor {

ouça 8081; # exigida porta de escuta

20s proxy_timeout;

proxy_pass Kevin;

}

}

Criando o mais elevado nível de fluxo (com http mesmo nível), a definição do nome de um grupo para o montante Kevin, feita de vários serviços para atingir o equilíbrio de carga definem um serviço que escuta ligação TCP (tais como: a porta 8081),

Kevin agente para eles e um grupo do método a montante, balanceamento de carga e os parâmetros de configuração para cada servidor, alguns de configuração, tais como: o número de ligações, pesos e semelhantes.

Primeiro, crie um grupo de servidores, usados ​​como grupo de equilíbrio de carga de TCP. No fluxo de bloco a montante define um contexto em que este bloco é adicionado pelo servidor de comando definido servidor, eo endereço IP especificado sua

nome do host (nome hospedeiro pode ser resolvido para um sistema multi-endereço) e número de porta. O exemplo a seguir é o estabelecimento de um grupo chamado Kevin, dois escuta servidor porta 1395, a porta de escuta do servidor 8080.

a montante kevin {

servidor 192.168.10.10:8080; # aqui configurado para ser acessado endereço

servidor 192.168.10.20:8081;

servidor 192.168.10.30:8081; # exigida porta proxy, onde meu agente onze kevin módulo de interface 8081

}

Destacam-se:

Você não pode definir um protocolo para cada servidor, porque o comando para estabelecer um fluxo TCP como um protocolo de servidor inteiro.

configuração nginx permitir TCP proxy reverso capaz de transmitir o pedido de um cliente para o grupo de equilíbrio de carga (por exemplo: Kevin grupo). As informações de configuração de cada servidor virtual pelo servidor ea configuração do servidor em cada bloco

Porta de escuta definido em cada servidor (número da porta do proxy das necessidades do cliente, como um fluxo de encaixe é que eu kevin protocolo, o número da porta: 8081) informações de configuração de comando proxy_passs e transmite a comunicação TCP

Qual servidor a montante para ir. Nós vamos enviar o tráfego TCP para kevin pronto para ir.

servidor {

ouça 8081; # exigida porta de escuta

20s proxy_timeout;

proxy_pass Kevin;

}

Claro, também podemos usar um único modo de proxy:

servidor {

ouça 8081; # exigida porta de escuta

20s proxy_timeout;

proxy_pass 192.168.10.30:8081; # necessário porta de proxy, em que o meu agente onze Kevin módulo de interface de 8081

}

-------------------------------------------------- ----------------

4) muda em métodos de balanceamento de carga:

balanceamento de carga O padrão nginx é realizado por emissão de um algoritmo de comunicação. O guia de pedido ciclismo disposto a montante do servidor grupo porta para cima. Porque ele é o método padrão, não há nenhuma ordem de emissão,

Basta criar um grupo de configuração aqui a montante texto córrego da montanha, e adicione o servidor.

a) menos ligado: Para cada pedido, nginx mais mínimo número de ligações seleccionado actualmente servidor de processo:

a montante kevin {

least_conn;

servidor 192.168.10.10:8080; # aqui configurado para ser acessado endereço

servidor 192.168.10.20:8081;

servidor 192.168.10.30:8081; # exigida porta proxy, onde meu agente onze kevin módulo de interface 8081

}

b) menos tempo: Para cada ligação, pontos pluns nginx seleccionados pelo servidor: o menor atraso médio: calculado por conter os parâmetros de comando especificados em least_time:

Ligar: permite ligar a um servidor de tempo gasto

first_byte: receber o primeiro byte do momento

last_byte: Todas as ligações recebidas durante um tempo mínimo de ativo:

a montante kevin {

first_byte least_time;

servidor 192.168.10.10:8080; # aqui configurado para ser acessado endereço

servidor 192.168.10.20:8081;

servidor 192.168.10.30:8081; # exigida porta proxy, onde meu agente onze kevin módulo de interface 8081

}

c) de hash comum algoritmo: nginx além de selecionar o servidor por meio de palavras-chave user_defined é o endereço IP: $ remote_addr;

a montante kevin {

de hash $ remote_addr consistente;

servidor 192.168.10.10:8080 peso = 5; # aqui para configurar o endereço a ser acessado

servidor 192.168.10.20:8081 max_fails = 2 fail_timeout = 30;

servidor 192.168.10.30:8081 max_conns = 3; # necessário porta de proxy, em que o meu agente onze Kevin módulo de interface de 8081

}

implementação Nginx do princípio de balanceamento de carga TCP

Quando a porta Nginx recebe uma nova ligação cliente a partir do monitor, executar imediatamente algoritmo de escalonamento de roteamento, o acesso aos serviços necessários para especificar conexão IP, e em seguida, criar uma nova ligação a montante, se conectar ao servidor especificado.

TCP suporte de balanceamento de carga Nginx algoritmos de escalonamento, incluindo Round Robin (padrão, round-robin de agendamento), mistura (escolhido por unanimidade) e assim por diante existente. Enquanto isso, os dados de informações de agendamento também módulo de detecção robusta e cooperar em conjunto, selecione a conexão apropriada para cada servidor upstream alvo. Se você usar a carga Hash equilibrar método de agendamento, você pode usar o $ remote_addr (IP do cliente) para alcançar uma sessão persistente simples (as mesmas conexões IP do cliente, o serviço sempre caem no mesmo servidor).

Como outro módulo upstream, módulo de fluxo TCP também suporta o compartilhamento de carga personalizado e reencaminhamento de peso ( "weight = 2" Configuração), e para baixo, bem como parâmetros de backup para uma falha a montante expulso do servidor. max_conns um parâmetro pode limitar o número de conexões de servidor TCP, de acordo com a capacidade de um servidor para definir os valores de configuração apropriados, especialmente no cenário alto concorrente, pode atingir o objectivo de protecção contra sobrecargas.

Nginx montante conexões de cliente e para monitorar a conexão, após o recebimento dos dados, lê o Nginx e imediatamente empurrado para a ligação a montante, os dados não detectado dentro da conexão TCP. Nginx manter um buffer de memória para escrever o cliente e os dados upstream. Se o cliente ou servidor transferir uma grande quantidade de dados, o buffer irá ser apropriado para aumentar o tamanho da memória.

Nginx receber uma notificação quando a conexão é fechada um ou outro, ou a conexão TCP é inativo por mais do que a configuração proxy_timeout tempo, a conexão será fechada. Para TCP conexão longa, devemos selecionar a hora apropriada proxy_timeout ao mesmo tempo, a atenção do monitor parâmetro SO_KEEPALIVE socke evitar prematuramente desconectado.

carga TCP apoio módulo de balanceamento construído detecção robusta, uma conexão de servidor TCP montante é rejeitado se mais de configuração proxy_connect_timeout, será considerado como tendo falhado. Neste caso, Nginx imediatamente tentar outro servidor normal, conectado a montante no grupo. Conexão informações falha será registrado no log de erro Nginx é.

Se um servidor falhar repetidamente (ou excede os max_fails parâmetros fail_timeout configuração), Nginx vai começar este servidor. Depois que o servidor chutou em 60 segundos, Nginx irá ocasionalmente tentar reconectá-lo para detectar se ele voltou ao normal. Se o servidor está de volta ao normal, Nginx irá adicioná-lo de volta para o grupo a montante, lentamente aumentar a proporção de solicitações de conexão.

Do "aumento lento" porque um serviço geralmente tem uma "data quente", ou seja, 80% ou mesmo mais pedidos serão bloqueados na "cache de dados quente" real, o processamento do pedido é executada somente verdadeiro uma pequena parte. Quando a máquina acaba de começar, "cache de dados quente" na verdade não foi estabelecido, desta vez um grande número de explosivos encaminha o pedido para vir, é provável que a máquina não pode "pagar" e desligou novamente. Como um exemplo para mysql, o MySQL nossas consultas, geralmente mais de 95% de todas as quedas na memória cache, não muito realmente para executar a consulta.

Na verdade, se é uma única máquina ou um cluster, a cena em altas solicitações simultâneas, reiniciar ou switch, há o risco, duas maneiras principais para resolver:

1) Pedido de aumentar gradualmente de menos a mais, a acumulação gradual de dados quentes, finalmente atinge o estado de serviço normal.

2) preparado com antecedência iniciativa "comum" serviço de dados para fazer, após o warm-up está completo, servidor de acesso, em seguida, abra "-warm up".

carga TCP equilibrando em princípio e LVS, etc. são as mesmas mais trabalho, na parte inferior do desempenho será maior do que um monte de balanceamento de carga HTTP originais. No entanto, nem mesmo melhor do que LVS, LVS kernel do módulo é colocado, enquanto que no modo usuário Nginx trabalho, e, Nginx relativamente pesado. Outro ponto, foi uma grande pena, este módulo acabou por ser um recurso pago.

artigos originais publicados 0 · ganhou elogios 0 · Vistas 531

Acho que você gosta

Origin blog.csdn.net/qingdao666666/article/details/104767624
Recomendado
Clasificación