플로팅 IP
Calico는 플로팅 IP를 지원해요. Neutron 테넌트 네트워크에 플로팅 IP를 할당하려면 라우터 게이트웨이, provider 네트워크, 서브넷 준비처럼 Neutron의 표준 데이터 모델 패턴을 그대로 따르면 돼요. 이 문서는 예시 명령 시퀀스로 플로팅 IP 설정 과정을 보여 줘요.
출처: 문서
본문
Calico에는 플로팅 IP 지원이 포함되어 있어요.
플로팅 IP를 설정하려면, 일반적인 Neutron에서와 같은 패턴의 Neutron 데이터 모델 오브젝트가 필요해요. 즉:
-
플로팅 IP의 대상이 될, 인스턴스가 붙어 있는 테넌트 네트워크
-
그 테넌트 네트워크가 연결된 Neutron 라우터
-
라우터의 게이트웨이로 설정되고(예:
neutron router-gateway-set으로),router:external True가 지정된 provider 네트워크. 그리고 플로팅 IP가 할당될 CIDR을 가진 서브넷 -
provider 네트워크 서브넷에서 할당되어, 테넌트 네트워크에 붙은 인스턴스로 매핑되는 플로팅 IP.
예를 들면:
-
테넌트 네트워크와 서브넷을 만들어요.
neutron net-create --shared calico neutron subnet-create --gateway 10.65.0.1 --enable-dhcp --ip-version 4 --name calico-v4 calico 10.65.0.0/24 -
그 네트워크에서 VM을 부팅해요.
nova boot [...] -
Neutron 포트 ID를 찾아요.
neutron port-list -
외부 네트워크와 서브넷을 만들어요; 플로팅 IP가 여기서 할당돼요.
neutron net-create public --router:external True neutron subnet-create public 172.16.1.0/24 -
테넌트 네트워크와 외부 네트워크를 연결하는 라우터를 만들어요.
neutron router-create router1 neutron router-interface-add router1 <tenant-subnet-id> neutron router-gateway-set router1 public -
플로팅 IP를 만들고 대상 VM에 연결(associate)해요.
neutron floatingip-create public neutron floatingip-associate <floatingip-id> <target-VM-port-id>그러면 Calico 에이전트들이 플로팅 IP가 인스턴스의 컴퓨트 호스트로 라우트되고, 이후 인스턴스의 고정 IP 주소로 DNAT되도록 준비해요.
-
컴퓨트 노드에서 다음 명령을 실행해요.
ip r라우팅 테이블이 반환될 거예요.
default via 10.240.0.1 dev eth0 10.65.0.13 dev tap9a7e0868-da scope link 10.65.0.14 via 192.168.8.4 dev l2tpeth8-3 proto bird 10.65.0.23 via 192.168.8.4 dev l2tpeth8-3 proto bird 10.240.0.1 dev eth0 scope link 172.16.1.3 dev tap9a7e0868-da scope link 192.168.8.0/24 dev l2tpeth8-3 proto kernel scope link src 192.168.8.3 192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1 -
iptables를 확인하려면 다음 명령을 실행해요.
sudo iptables -L -n -v -t nat다음과 비슷한 출력이 반환될 거예요.
[...] Chain felix-FIP-DNAT (2 references) pkts bytes target prot opt in out source destination 0 0 DNAT all -- * * 0.0.0.0/0 172.16.1.3 to:10.65.0.13 Chain felix-FIP-SNAT (1 references) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 10.65.0.13 10.65.0.13 to:172.16.1.3 Chain felix-OUTPUT (1 references) pkts bytes target prot opt in out source destination 1 60 felix-FIP-DNAT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain felix-POSTROUTING (1 references) pkts bytes target prot opt in out source destination 1 60 felix-FIP-SNAT all -- * * 0.0.0.0/0 0.0.0.0/0 Chain felix-PREROUTING (1 references) pkts bytes target prot opt in out source destination 0 0 felix-FIP-DNAT all -- * * 0.0.0.0/0 0.0.0.0/0 0 0 DNAT tcp -- * * 0.0.0.0/0 169.254.169.254 tcp dpt:80 to:127.0.0.1:8775 [...]
더 알아보기 (Learn more)
OpenStack 플로팅 IP는 provider 네트워크 서브넷에서 할당되어 인스턴스로 DNAT돼요. Calico 에이전트가 라우팅과 NAT 체인(felix-FIP-DNAT/SNAT)을 자동으로 준비해 주니, ip r과 iptables로 결과를 검증하면 돼요.