Configure sua própria rede privada com o OpenVPN
O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes
O RabbitMQ é um intermediário de mensagens de código aberto que suporta AMQP, STOMP e outras tecnologias de comunicação. É amplamente utilizado em aplicativos empresariais e arquiteturas modernas de microsserviços, onde atua como um canal de mensagens assíncronas entre diferentes microsserviços. Este guia descreve como você pode agrupar o RabbitMQ em vários servidores CentOS 7 para formar um intermediário de mensagens de alta disponibilidade. Neste tutorial, um servidor atuará como servidor mestre e os outros servidores atuarão como servidores espelho, caso o servidor mestre fique indisponível.
O firewall do CentOS, ( firewalld
), não permite nenhum tráfego recebido por padrão. Para disponibilizar o RabbitMQ para outros sistemas dentro e fora da rede e para nos permitir acessar o console de gerenciamento, primeiro precisamos abrir algumas portas.
O console de gerenciamento de interface da web do RabbitMQ escuta por padrão na porta 15672
. Gostaríamos de disponibilizar publicamente o console de gerenciamento para que possamos acessá-lo em nosso computador. Portanto, instruiremos firewalld
a abrir permanentemente a porta 15672
na zona pública (que é a zona padrão e ativa em uma instância do Vultr).
sudo firewall-cmd --zone=public --add-port=15672/tcp --permanent
Os nós do RabbitMQ precisam ser capazes de se comunicar. Gostaríamos de abrir as portas necessárias, mas apenas através da rede interna. Não queremos que ninguém na internet possa administrar ou entrar em contato diretamente com nossos servidores. Os comandos a seguir assumem que nossos servidores estão na 192.168.0.100/24
sub - rede.
O primeiro serviço é o epmd
serviço de descoberta de pares que escuta por padrão na porta 4369
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="4369" accept'
Para comunicação entre nós e CLI, o RabbitMQ precisa poder se comunicar pela porta 25672
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="25672" accept'
As ferramentas CLI se comunicam no intervalo de portas 35672-35682
.
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="35672-35682" accept'
Se seus aplicativos precisarem do protocolo AMQP, você também precisará abrir portas 5671
e 5672
. Se você precisar se comunicar com outro protocolo, poderá encontrar as informações necessárias sobre os requisitos de rede do RabbitMQ na documentação oficial do RabbitMQ .
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5672" accept'
sudo firewall-cmd --permanent --zone=public --add-rich-rule='
rule family="ipv4"
source address="192.168.0.100/24"
port protocol="tcp" port="5671" accept'
Agora que firewalld
está configurado, precisamos instruí-lo a recarregar a configuração.
sudo firewall-cmd --reload
Repita as etapas desta seção em todos os servidores.
rabbitmqadmin
O plug-in de gerenciamento vem com uma ferramenta Python chamada rabbitmqadmin
que pode ser facilmente instalada no sistema quando o plug-in de gerenciamento é ativado.
sudo wget http://localhost:15672/cli/rabbitmqadmin
sudo mv rabbitmqadmin /usr/local/bin/
sudo chmod +x /usr/local/bin/rabbitmqadmin
Você deve usar os nomes de host do servidor para identificar os servidores durante o armazenamento em cluster. Por padrão, os servidores não têm registro DNS atribuído e a conexão falhará. Para superar isso rapidamente, adicione o nome do host principal e espelhado ao /etc/hosts
arquivo usando seu editor favorito.
Por exemplo, o arquivo hosts do seu mestre pode se parecer com o seguinte. Observe os dois últimos registros, que permitem que os servidores se identifiquem pelo nome do host. Certifique-se de alterar os endereços IP por conta própria.
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
127.0.0.1 guest
::1 guest
127.0.0.1 YOUR_MASTER_SERVER_HOST_NAME
::1 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.101 YOUR_MASTER_SERVER_HOST_NAME
192.168.0.102 YOUR_MIRROR_SERVER_HOST_NAME
Um pré-requisito de importação para permitir que os nós se unam é que o cookie Erlang de todos os nós seja idêntico. Por padrão, cada nó receberá um cookie Erlang exclusivo, portanto, você deve reconfigurá-lo em todos os nós.
O comando a seguir definirá o cookie Erlang como " WE<3COOKIES
", mas fique à vontade para alterar isso ao seu gosto. Faça isso em todos os servidores.
sudo sh -c "echo 'WE<3COOKIES' > /var/lib/rabbitmq/.erlang.cookie"
Reinicie o RabbitMQ em todos os servidores para garantir que o cookie Erlang seja recarregado corretamente.
sudo systemctl restart rabbitmq-server.service
Execute os seguintes comandos em todos os servidores, exceto no servidor mestre. Isso permitirá que os nós ingressem no servidor principal e formem um cluster.
sudo rabbitmqctl stop_app
sudo rabbitmqctl join_cluster "rabbit@<YOUR_MASTER_SERVER_HOST_NAME>"
sudo rabbitmqctl start_app
Verifique se os nós ingressaram no cluster executando o seguinte comando.
sudo rabbitmqctl cluster_status
Todos os seus nós aparecerão na seção nodes
e running_nodes
da saída. A partir de agora, você não precisará mais repetir as etapas em cada servidor; a configuração será espelhada automaticamente para os outros nós.
Agora que temos um cluster de nós RabbitMQ, podemos usá-lo para fazer filas e trocas de alta disponibilidade configurando uma nova política. Esta política pode ser adicionada através do RabbitMQ Management Console ou usando a interface da linha de comandos.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "all" ha ".*" '{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
A lista a seguir explica o significado de cada parte do comando.
-p "/"
: Use esta política no "/"
vhost (o padrão após a instalação)--priority 1
: A ordem na qual aplicar políticas --apply-to "all"
: Pode ser "queues"
, "exchanges"
ou"all"
ha
: O nome que damos à nossa política ".*"
: A expressão regular usada para decidir a quais filas ou trocas essa política é aplicada. ".*"
vai combinar com qualquer coisa'{ "ha-mode": "exactly", "ha-params": 2, "ha-sync-mode": "automatic"}'
: A representação JSON da política. Este documento descreve o que queremos - exatamente 2 nós nos quais os dados são sincronizados automaticamenteEm resumo, essa política garantirá que sempre teremos 2 cópias dos dados em uma fila ou troca, desde que tenhamos pelo menos 2 nós em funcionamento. Se você tiver mais nós, poderá aumentar o valor de ha-params
. Um quorum ( N/2 + 1
), de nós é recomendado. Ter mais cópias de seus dados resultaria em maior uso de disco, E / S e rede, o que poderia resultar em um desempenho degradado.
Se você deseja espelhar os dados para todos os nós no cluster, poderá usar o seguinte documento JSON.
'{ "ha-mode": "all", "ha-sync-mode": "automatic"}'
Se você deseja espelhar os dados apenas para nós específicos (por exemplo: node-1
e node-2
), use o seguinte.
'{ "ha-mode": "nodes", "ha-params" :["rabbit@node-1", "rabbit@node-2"], "ha-sync-mode": "automatic"}'
Você pode alterar a expressão regular para atribuir políticas diferentes a diferentes filas. Digamos que temos os seguintes três nós:
Podemos então criar duas políticas que resultarão em filas com um nome que começa com "cliente" a ser espelhado no rabbit@client-ha
nó e todas as filas que têm um nome que começa com "produto" a serem espelhadas no rabbit@product-ha
nó.
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-client "client.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@client-ha"], "ha-sync-mode": "automatic"}
sudo rabbitmqctl set_policy -p "/" --priority 1 --apply-to "queues" ha-product "product.*" '{ "ha-mode": "nodes", "ha-params": ["rabbit@master", "rabbit@product-ha"], "ha-sync-mode": "automatic"}
Uma pequena observação aqui: filas exclusivas nunca são espelhadas ou duráveis no RabbitMQ, mesmo que essa política corresponda a essas filas. Filas exclusivas são destruídas automaticamente quando um cliente é desconectado e, como tal, não seria útil replicá-lo em outro servidor. Se o servidor falhar, o cliente será desconectado e a fila será destruída automaticamente. Instâncias espelhadas também seriam destruídas.
Para testar a configuração em cluster, podemos criar uma nova fila usando a interface da linha de comandos através do console de gerenciamento.
sudo rabbitmqadmin declare queue --vhost "/" name=my-ha-queue durable=true
Isto irá criar uma fila durável no padrão /
vhost com o nome my-ha-queue
.
Execute o comando a seguir e verifique na saída que a fila possui nossa política 'ha' atribuída e possui pid's no mestre e no nó espelho.
sudo rabbitmqctl list_queues name policy state pid slave_pids
Agora podemos publicar uma mensagem na fila do nó principal e parar o RabbitMQ no nó principal.
sudo rabbitmqadmin -u user_name -p password publish routing_key=my-ha-queue payload="hello world"
sudo systemctl rabbitmqctl shutdown
Agora recupere conectando-se ao nó do espelho.
sudo rabbitmqadmin -H MIRROR_NODE_IP_OR_DNS -u user_name -p password get queue=my-ha-queue
Finalmente, podemos reiniciar nosso nó principal.
sudo systemctl start rabbitmq-server.service
Como mencionado anteriormente, o RabbitMQ cria automaticamente um usuário convidado com uma senha de convidado padrão. Seria uma prática recomendada deixar esse usuário padrão em um sistema exposto publicamente.
sudo rabbitmqctl delete_user guest
O Vultr oferece uma incrível conectividade de rede privada para servidores executando no mesmo local. Mas às vezes você quer dois servidores em países diferentes
Usando um sistema diferente? Introdução O CyberPanel é um dos primeiros painéis de controle do mercado, tanto de código aberto quanto de OpenLiteSpeed. What thi
Usando um sistema diferente? O ESpeak pode gerar arquivos de áudio de conversão de texto em fala (TTS). Isso pode ser útil por vários motivos, como criar seu próprio Turim
Usando um sistema diferente? O LibreNMS é um sistema de monitoramento de rede de código aberto completo. Ele usa o SNMP para obter os dados de diferentes dispositivos. Uma variedade
Usar um usuário sudo para acessar um servidor e executar comandos no nível raiz é uma prática muito comum entre o Linux e o Unix Systems Administrator. O uso de um sud
Usando um sistema diferente? O RabbitMQ é um intermediário de mensagens de código aberto amplamente usado, escrito na linguagem de programação Erlang. Como um middleware orientado a mensagens
Usando um sistema diferente? O RTMP é ótimo para veicular conteúdo ao vivo. Quando o RTMP é emparelhado com o FFmpeg, os fluxos podem ser convertidos em várias qualidades. Vultr i
Usando um sistema diferente? Gradle é um conjunto de ferramentas de automação de compilação de código aberto e gratuito baseado nos conceitos do Apache Ant e Apache Maven. Gradle fornece
Usando um sistema diferente? Neste guia, veremos como configurar um servidor FTP (ProFTPd) para transferir arquivos entre o seu PC e o seu servidor.
Usando um sistema diferente? O Netdata é uma estrela em ascensão no campo do monitoramento de métricas do sistema em tempo real. Comparado com outras ferramentas do mesmo tipo, o Netdata:
Usando um sistema diferente? O Apache Cassandra é um sistema de gerenciamento de banco de dados NoSQL gratuito e de código aberto, projetado para fornecer escalabilidade, alta
Neste tutorial, aprenda como configurar um servidor multiplayer Just Cause 2. Pré-requisitos Verifique se o sistema está totalmente atualizado antes de começarmos
Usando um sistema diferente? Neste tutorial, explicarei como configurar um servidor Starbound no CentOS 7. Pré-requisitos Você precisa ser o proprietário deste jogo
O ZNC é um segurança IRC gratuito e de código aberto que permanece permanentemente conectado a uma rede para que os clientes possam receber mensagens enviadas enquanto estiverem offline. Thi
O Django é uma estrutura Python popular para escrever aplicativos da web. Com o Django, você pode criar aplicativos mais rapidamente, sem reinventar a roda. Se você quiser você
Outubro é um sistema de gerenciamento de conteúdo de código aberto baseado no Laravel PHP Framework. Com uma interface elegante e uma arquitetura modular concisa
Após alterar a porta SSH, configurar a batida na porta e fazer outros ajustes para a segurança SSH, talvez haja mais uma maneira de protegê-lo
Introdução O MyCLI é um cliente de linha de comando para MySQL e MariaDB que permite concluir automaticamente e ajuda na sintaxe de seus comandos SQL. MyCL
Usando um sistema diferente? O Directus 6.4 CMS é um sistema de gerenciamento de conteúdo sem cabeça (CMS) poderoso e flexível, gratuito e de código aberto que fornece
Usando um sistema diferente? O Reader Self 3.5 é um leitor de RSS auto-hospedado, simples e flexível, gratuito e de código aberto, e uma alternativa ao Google Reader. Leitor Sel
Os ataques de ransomware estão aumentando, mas a IA pode ajudar a lidar com os vírus de computador mais recentes? AI é a resposta? Leia aqui para saber se é AI boone ou bane
ReactOS, um sistema operacional de código aberto e gratuito está aqui com a versão mais recente. Será que ela pode atender às necessidades dos usuários modernos do Windows e derrubar a Microsoft? Vamos descobrir mais sobre esse estilo antigo, mas uma experiência de sistema operacional mais recente.
O Whatsapp finalmente lançou o aplicativo Desktop para usuários de Mac e Windows. Agora você pode acessar o Whatsapp do Windows ou Mac facilmente. Disponível para Windows 8+ e Mac OS 10.9+
Leia isto para saber como a Inteligência Artificial está se tornando popular entre as empresas de pequena escala e como está aumentando as probabilidades de fazê-las crescer e dar vantagem a seus concorrentes.
Recentemente, a Apple lançou o macOS Catalina 10.15.4, uma atualização suplementar para corrigir problemas, mas parece que a atualização está causando mais problemas, levando ao bloqueio de máquinas mac. Leia este artigo para saber mais
13 Ferramentas de Extração de Dados Comerciais de Big Data
Nosso computador armazena todos os dados de uma maneira organizada conhecida como sistema de arquivos Journaling. É um método eficiente que permite ao computador pesquisar e exibir arquivos assim que você clicar em search.https: //wethegeek.com/? P = 94116 & preview = true
À medida que a ciência evolui em um ritmo rápido, assumindo muitos de nossos esforços, os riscos de nos sujeitarmos a uma singularidade inexplicável também aumentam. Leia, o que a singularidade pode significar para nós.
Uma visão sobre 26 técnicas analíticas de Big Data: Parte 1
A IA na área da saúde deu grandes saltos nas últimas décadas. Portanto, o futuro da IA na área da saúde ainda está crescendo dia a dia.