UltraMonkey é essencialmente apenas um projeto guarda-chuva para vários componentes que são úteis ao construir um balanceador de carga em uma caixa Linux. Os componentes são:
-
%código%. Presente na grande maioria do kernel padrão das distribuições (2.6 e posterior), compilado como um módulo. Execute
ipvs
para ver se está presente no seu kernel. Ainda em desenvolvimento atual; e teve suporte ipv6 adicionado recentemente. O código deve estar de acordo com os padrões do kernel e resulta em um desempenho extremamente bom. Consulte o link para obter mais informações. -
%código%. Uma ferramenta de linha de comando usada para administrar o IPVS, permitindo adicionar e remover servidores de back-end de um grupo virtual, definir pesos de servidor, escolher o algoritmo de agendamento (por exemplo, round robin, ponderada menos conexão) e muito mais. Eu não posso falar pelo Debian, mas o ipvsadm v1.2.5-1 está presente nos repositórios padrão do Ubuntu, e há uma v1.26 disponível que foi lançada em fevereiro de 2011. Portanto, é provável que você possa executar um:
modinfo ip_vs
e, em seguida, umipvsadm
no seu sistema para fornecer todos os detalhes. - %código%. Este é um daemon de verificação de saúde escrito em Perl, que também serve como uma interface conveniente para o ipvsadm. Ele permite que você mantenha um arquivo de configuração da configuração do seu ipvs, ao invés de ter que programar vários comandos ipvsadm por conta própria. Muitos tipos diferentes de verificação de integridade podem ser executados nos servidores de backend. Novamente, o ldirectord pode ser instalado (pelo menos no Ubuntu) através dos repositórios padrão, e ainda está em desenvolvimento (alterações do IPv6 feitas em junho de 2011).
- Linux-HA. Para tornar as coisas mais complicadas, este também é um projeto de combinação que inclui o ldirectord. Embora, como mencionado acima, você possa instalar o ldirectord por direito próprio através dos repositórios. Tanto quanto eu posso dizer, a principal adição que Linux-HA fornece é Heartbeat, que permite agrupar 2 (ou mais) balanceadores de carga que (como você poderia esperar) enviar heartbeats para o outro, para que eles estejam cientes de um do outro. status e failover quando necessário. É aí que entra a diferença para o VRRP. Você tenderia a ter seus IPs virtuais ativos (ou seja, "up") em um balanceador de carga apenas para que apenas uma máquina estivesse respondendo a solicitações ARP para o VIP. Portanto, os balanceadores de carga estariam no estado Ativo / Passivo e, se o nó Escravo detectar que o mestre falhou, ele "exibirá" os IPs virtuais. Se os IPs virtuais estiverem ativos nos dois nós, você terá um problema, conhecido como "divisão cerebral". Mais informações sobre o Heartbeat: link .
Eu imagino que a falta de manutenção do projeto UltraMonkey pode estar relacionada ao fato de que cada componente individual agora está amplamente disponível (em formato binário) em distros populares, o que não teria sido o caso há 5 ou mais anos.
Observe que o uso desses componenets da maneira descrita acima pode diferir do seu plano original, pois o balanceador de carga é uma máquina dedicada; você não instala tudo isso em seus servidores de aplicativos. Em vez disso, a caixa ipvs ficava na frente de seus servidores backend e tráfego "direto" para eles de acordo com seus algoritmos de agendamento e outros parâmetros de configuração (pesos, etc).
A menos que você tenha uma necessidade específica de balancear a carga na camada 4 (geralmente por motivos de desempenho), talvez também queira dar uma olhada no HAProxy, que é um proxy da camada 7 com ampla funcionalidade de balanceamento de carga. Há muitas perguntas HAProxy bem respondidas no ServerFault. Além disso, com relação a heartbeats / failover e gerenciamento de seus IPs virtuais, convém observar o keepalived como uma alternativa ao Heartbeat do Linux-HA.