Oi Zen Masters, este artigo apresenta como criar e configurar um farm L4 (camada 4), alguns back-ends (servidores da web) e o responsável pelo farm por meio da nossa ZAPI (Zen Load Balancer API).
Perfil L4xNAT
O perfil do farm L4xNAT permite criar um farm L4 com um desempenho muito alto e muito mais conexões simultâneas do que os núcleos do balanceador de carga na camada 7, como perfis de farm TCP, UDP ou HTTP. Essa melhoria de desempenho da camada 4 neutraliza o tratamento avançado de conteúdo que os perfis da camada 7 podem gerenciar.
Além disso, os farms L4xNAT podem vincular um intervalo de portas, não apenas uma porta virtual como é usada com outros perfis da camada 7. Para poder selecionar um intervalo de portas virtuais ou uma porta virtual específica em farms L4xNAT, é obrigatório selecionar um tipo de protocolo. Em outro caso, o farm estará escutando em todas as portas do IP virtual.
Inicialize o ZAPI
Como discutimos no último artigo, você deve habilitar o usuário zapi e definir uma chave e uma senha para começar a usar o nosso ZAPI.
Para os exemplos a seguir, esses parâmetros serão usados:
Key: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5 Password: admin Zen Load Balancer IP: 192.168.101.25 Zen Web Port: 444
Depois que o ZAPI estiver configurado ... vamos começar!
Como criar um farm L4xNAT com ZAPI
Em primeiro lugar, você deve criar um farm de perfil L4xNAT com o comando correspondente:
curl --tlsv1 -k -X POST -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"interface":"eth0","vip":"192.168.101.25","profile":"L4xNAT"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbo HTTP: POST, usado para criar farms, backends, serviços…
Parâmetros JSON: interface, vip e profile (o vport não é necessário no perfil L4xNAT).
Parâmetros URI: farmname -> L4FARM, este é o nome selecionado para a fazenda.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "description" : "New farm L4FARM", "params" : [ { "interface" : "eth0", "name" : "L4FARM", "profile" : "L4xNAT", "vip" : "192.168.101.25", "vport" : 0 } ] }
Essa resposta mostra os principais parâmetros do farm. O que significa o vport: 0? Quando um farm L4xNAT é criado, ele está escutando em todas as portas do IP virtual por padrão e isso será mostrado como 0 ou *.
Como configurar um farm L4xNAT com ZAPI
Uma vez que o farm L4xNAT foi criado, você poderá modificar os parâmetros do farm. É possível alterar todos os parâmetros, alguns ou apenas um.
Primeiro, vamos obter os parâmetros do farm com uma solicitação GET:
curl --tlsv1 -k -X GET -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbo HTTP: GET, usado para obter parâmetros de farms, backends, serviços…
Parâmetros JSON: nenhum.
Parâmetros de URI: farmname -> L4FARM.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "backends" : [], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "dnat", "persistence" : "none", "protocol" : "all", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 0 } ] }
Essa resposta mostra os parâmetros avançados do farm. Esses parâmetros podem ser modificados usando o ZAPI. Vamos mudar alguns parâmetros:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"protocol":"tcp","nattype":"nat" ,"port":"80"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM
Verbo HTTP: PUT, usado para modificar parâmetros de farms, backends, serviços…
Parâmetros JSON: protocol, nattype e port.
Parâmetros de URI: farmname -> L4FARM.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "description" : "Modify farm L4FARM", "params" : [ { "protocol" : "tcp" }, { "port" : "80" }, { "nattype" : "nat" } ] }
Se lançarmos outra solicitação GET, a resposta mostrará todos os parâmetros com novas alterações:
{ "backends" : [], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "nat", "persistence" : "none", "protocol" : "tcp", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 80 } ] }
O nattype, port e parametrs de protocolo foram alterados com sucesso!
Como criar e modificar um back-end
Como podemos criar e configurar um backend do farm L4xNAT por meio do ZAPI? Você só precisa seguir os mesmos passos acima usando vários comandos com curl:
curl --tlsv1 -k -X POST -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"ip":"46.120.34.160","port":"80","priority":"1","weight":"1"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/backends
Verbo HTTP: POST, usado para criar farms, backends, serviços…
Parâmetros JSON: ip, porta, prioridade e peso (todos os parâmetros são necessários).
Parâmetros URI: farmname -> L4FARM, este é o nome selecionado para a fazenda.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "description" : "New backend 0", "params" : [ { "id" : 0, "ip" : "46.120.34.160", "port" : 80, "priority" : 1, "weight" : 1 } ] }
Essa resposta mostra os parâmetros de backend e seu ID.
Como podemos modificar um back-end do farm L4xNAT? Usando o verbo PUT HTTP com curl:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"ip":"46.120.101.65","port":"25","priority":"2","weight":"3"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/backends/0
Verbo HTTP: PUT, usado para modificar parâmetros de farms, backends, serviços…
Parâmetros JSON: ip. porta, prioridade e peso.
Parâmetros URI:
farmname -> L4FARM.
id de back-end -> 0.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "description" : "Modify backend 0 in farm L4FARM", "params" : [ { "ip" : "46.120.101.65" }, { "weight" : "3" }, { "priority" : "2" }, { "port" : "25" } ] }
Se lançarmos outra solicitação GET, a resposta mostrará todos os parâmetros com novas alterações:
{ "backends" : [ { "id" : 0, "ip" : "46.120.101.65", "port" : 25, "priority" : 2, "weight" : 3 } ], "description" : "List farm L4FARM", "params" : [ { "algorithm" : "weight", "fgenabled" : null, "fglog" : null, "fgscript" : null, "fgtimecheck" : 0, "nattype" : "nat", "persistence" : "none", "protocol" : "tcp", "ttl" : 120, "vip" : "192.168.101.25", "vport" : 80 } ] }
Os parâmetros de peso, prioridade e porta foram alterados com sucesso!
Como configurar o Guardião da Fazenda
Para fechar, vamos configurar o guardião da fazenda L4xNAT. Temos que usar a seguinte solicitação com curl:
curl --tlsv1 -k -X PUT -H 'Content-Type: text/json' -H "ZAPI_KEY: CiEuYlS4GtfSq3yrknv0YMnA7j5fhm4piVZh49yt5JcjQ0aDyxImz2Y7DAUhstce5" -u zapi:admin -d '{"fgenabled":"true","fgscript":"check_tcp -w 10 -c 10 -H HOST -p PORT","fgtimecheck":"15","fglog":"false"}' https://192.168.101.25:444/zapi/v1/zapi.cgi/farms/L4FARM/fg
Verbo HTTP: PUT, usado para modificar parâmetros de farms, backends, serviços…
Parâmetros JSON: fgenabled, fgscript, fgtimecheck e fglog.
Parâmetros de URI: farmname -> L4FARM.
Uma vez que este comando é iniciado, a seguinte resposta será mostrada:
{ "description" : "Modify farm L4FARM", "params" : [ { "fglog" : "false" }, { "fgenabled" : "true" }, { "fgscript" : "check_tcp -w 10 -c 10 -H HOST -p PORT" }, { "fgtimecheck" : "15" } ] }
O que esses parâmetros fazem? O parâmetro 'fgenabled' habilita o guardião da fazenda, o parâmetro 'fgtimecheck' é o tempo entre as verificações (em segundos), 'fglog' habilita os logs do guardião da fazenda e 'fgscript' é o comando a ser verificado.
Em nome do Zen Team, esperamos que você tenha gostado deste artigo. Vejo você no próximo!