Por que a nova precisa de uma interface pública?

2

Eu li algumas explicações sobre nova-network e como configurá-lo como este no wiki:

Estou confuso sobre um detalhe. Se todo tráfego das instâncias deve passar pelo nó do controlador nova, então por que ainda precisamos da interface pública para o nó nova-compute? É necessário?

O que acontece quando uma solicitação de fora para uma instância. Por exemplo, eu tenho um nó controlador e um nó nova-compute. No nó nova-compute, executo uma instância com um site do Wordpress. Então, alguém se conecta ao IP público dessa instância. Então a requisição vai diretamente do roteador para o nó nova-compute ou do roteador para o nó controlador e depois para o nó nova-compute?

    
por neo0 03.04.2012 / 06:05

1 resposta

3

No caso de nova-rede em execução no nó do controlador, as instâncias usam esse nó como seu gateway para o mundo externo. A interface pública é configurada em nós de cálculo e os IPs flutuantes (públicos) são configurados diretamente nos nós de cálculo. Assim, o tráfego público vinculado à instância iria para uma interface pública no nó de cálculo, em vez do controlador.

Um modelo de rede melhor para usar é o FlatDHCP + multi_host. Veja esta postagem do blog que descreve em detalhes e descreve por que é uma escolha melhor.

Para resumir aqui: nova-network é executada em cada host de computação. A flat_interface física (especificada na configuração, geralmente eth1) obtém uma ponte construída sobre ela, à qual é atribuído um endereço IP na rede da instância privada. Usando essa ponte, a nova-network oferece DHCP, DNS e um gateway para todas as instâncias hospedadas nesse nó de computação. A flat_interface física (eth1) deve ser vinculada a um switch que conecta a flat_interface de outros nós de computação. Isso permite o tráfego entre instâncias na rede interna privada (por exemplo, 10.0.0.0/24).

Cada nó de cálculo também possui uma public_interface especificada em config (eth0 por padrão). Espera-se que isso seja conectado à rede pública, por exemplo, 192.168.25.0/24. Como usuário, você pode alocar um endereço e associá-lo a uma instância em execução. Os endereços são alocados de um pool que você configura quando você configura inicialmente a rede da nova. Usando o EC2, por exemplo:

adam@amebix:~/nova$ euca-allocate-address
ADDRESS 192.168.25.241
adam@amebix:~/nova$ euca-associate-address 192.168.25.241 -i i-00000126
ADDRESS 192.168.25.241  i-00000126

No nó de cálculo, 192.168.25.241 é adicionado à public_interface como um endereço IP virtual secundário e as regras iptables dos nós de cálculo são configuradas para rotear o tráfego para esse endereço para a instância apropriada. No entanto, os grupos de segurança padrão não permitem o tráfego de entrada. Você precisa autorizar portas no (s) grupo (s) de segurança ao qual a instância está atribuída (via euca-authorize). Isso se traduz em portas de abertura de nova rede no conjunto de regras iptables correspondente a essa instância.

    
por adam_g 02.05.2012 / 23:57