본문
OpenStack ML2에 대해 알아보자 #1. Neutron Plugin 소개
Neutron ML2에 대해 설명하기 앞서서 우선 ML2의 근간인 Neutron의 Plugin에 대해 알아보도록 한다. Plugin은 다양한 소프트웨어/하드웨어 기반의 기술을 사용하여 네트워크를 구축하도록 도와준다. 특히 Plugin은 외부에 개방되는 네트워크 API를 통하여, 입력받은 명령을 수행하는 주체이다.
Plugin은 Core Plugin과 Service Plugin의 두개로 구성되어 있는데, 이때 Core Plugin은 Neutron API의 말그대로 핵심을 구현한 것으로 L2 네트워킹 및 IP 주소관리와 같은 중요한 역할을 수행한다. 또한 Service Plugin은 방화벽, 로드밸런싱, VPN과같은 부가적인 역할을 수행한다. 글로만 적어놓으면 전혀 감이 안잡힐것 같아서 아래에 그림을 첨부한다.
[그림 1] OpenStack Neutron의 구조
위 그림은 파이오링크 이준님의 슬라이드를 약간 변경한 것이다. (www.slideshare.net/rootfs32/20150511-jun-leeopenstack-neutron) 원본 슬라이드에서 달라진것은 Neutron Plugin이라는 경계를 명확히 했고 External Nodes를 삽입하여 각 Node(또는 장비)들의 Agent와 Plugin간의 연결을 명확히 한것이다. 그리고 Core-plugins안에 OVS 플러그인위에 x를 그려넣은것은 이제 OVS 플러그인이 ML2로 편입되고 deprecated되었기 때문이다(Icehouse기준). 이 내용은 다음에 더 자세히 다루기로 한다.
Neutron Plugin은 Control Node에 위치하는 Neutron Server에 의해 인스턴스화 되고 관리된다. 또한 각각의 Compute/Network Node에서는 Agent들이 설치되어 Plugin과의 통신을 수립한다. Plugin과 Agent는 서로 연결되며 대개 Plugin은 Agent에게 명령을 지시하여 네트워크를 구성하게 된다.(물론 Agent가 없이 Plugin단독으로 존재할수도 있다.)
이를 처리순서대로 풀어쓰면 다음과 같다. API Clients에 의해 API호출이 발생 => Control Node에있는 Neutron Server가 이를 수신하고 해당 정보를 Plugin에 전달 => Plugin은 정보를 처리하여 Agent를 위한 명령으로 변환 => Message Queue를 통해 RPC로 해당 명령이 Compute/Network Node에서 처리된다고 풀어설명할 수 있다. HTTP API 호출부터 Plugin에 도달하는 과정을 아래에 첨부하였다. (OpenStack Summit Hong Kong 2013에서 Deep Dive into Neutron 세션 참고: https://www.openstack.org/summit/openstack-summit-hong-kong-2013/session-videos/presentation/deep-dive-into-neutron)
[그림 2] OpenStack Neutron REST API에서 Plugin까지의 과정
아래는 Neutron에서 기본적으로 제공되는 Agent를 정리한 것이다. (출처: http://docs.openstack.org/admin-guide-cloud/networking_arch.html)
Agent |
Description |
plug-in agent(neutron-*-agent) |
Runs on each hypervisor to perform local vSwitch configuration. The agent that runs, depends on the plug-in that you use. Certain plug-ins do not require an agent. |
dhcp agent(neutron-dhcp-agent) |
Provides DHCP services to tenant networks. Required by certain plug-ins. |
l3 agent(neutron-l3-agent) |
Provides L3/NAT forwarding to provide external network access for VMs on tenant networks. Required by certain plug-ins. |
metering agent(neutron-metering-agent) |
Provides L3 traffic metering for tenant networks. |
또한 아래와같이 Control Node의 /etc/neutron/neutron.conf를 설정하여 Core Plugin과 Service Plugin의 사용을 관리할 수 있다.
[DEFAULT]
core_plugin = ml2
댓글