네트워킹 옵션 2: 셀프 서비스 네트워크

네트워킹 옵션 2: 셀프 서비스 네트워크

네트워킹 구성요소를 컨트롤러 노드에 설치 및 구성합니다.

구성요소 설치

# apt-get install neutron-server neutron-plugin-ml2 \
  neutron-plugin-linuxbridge-agent neutron-l3-agent neutron-dhcp-agent \
  neutron-metadata-agent python-neutronclient conntrack

서버 구성요소 구성

  • /etc/neutron/neutron.conf 파일을 수정하고 다음 작업을 완료합니다:

    • [database] 섹션에서 데이터베이스 액세스를 구성합니다:

      [database]
      ...
      connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron
      

      NEUTRON_DBPASS 를 데이터베이스에 대해 선택한 암호로 변경합니다.

    • [DEFAULT] 섹션에서 Modular Layer 2 (ML2) 플러그인, 라우터 서비스 및 overlapping IP 주소를 활성화합니다:

      [DEFAULT]
      ...
      core_plugin = ml2
      service_plugins = router
      allow_overlapping_ips = True
      
    • [DEFAULT][olso_messaging_rabbit] 섹션에서 RabbitMQ 메시징 큐 접근을 구성합니다:

      [DEFAULT]
      ...
      rpc_backend = rabbit
      
      [oslo_messaging_rabbit]
      ...
      rabbit_host = controller
      rabbit_userid = openstack
      rabbit_password = RABBIT_PASS
      

      RabbitMQ의 openstack 계정의 암호로 RABBIT_PASS 를 변경합니다.

    • [DEFAULT][keystone_authtoken] 섹션에서 Identity 서비스 접근을 구성합니다:

      [DEFAULT]
      ...
      auth_strategy = keystone
      
      [keystone_authtoken]
      ...
      auth_uri = http://controller:5000
      auth_url = http://controller:35357
      auth_plugin = password
      project_domain_id = default
      user_domain_id = default
      project_name = service
      username = neutron
      password = NEUTRON_PASS
      

      Identity 서비스에서 neutron 사용자의 암호로 NEUTRON_PASS 를 변경합니다.

      주석

      [keystone_authtoken] 섹션 내 다른 옵션들은 주석 처리나 제거합니다.

    • [DEFAULT][nova] 섹션에서 네트워크 토폴로지 변경이 발생했을 때 Compute에 알려주도록 네트워킹을 구성합니다:

      [DEFAULT]
      ...
      notify_nova_on_port_status_changes = True
      notify_nova_on_port_data_changes = True
      nova_url = http://controller:8774/v2
      
      [nova]
      ...
      auth_url = http://controller:35357
      auth_plugin = password
      project_domain_id = default
      user_domain_id = default
      region_name = RegionOne
      project_name = service
      username = nova
      password = NOVA_PASS
      

      Identity 서비스에서 nova 사용자의 암호로 NOVA_PASS 를 변경합니다.

    • (옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:

      [DEFAULT]
      ...
      verbose = True
      

Modular Layer 2 (ML2) 플러그인 구성

ML2 플러그인은 인스턴스에 대한 layer-2 (브리징과 스위칭) 가상 네트워킹 인프라를 구축하여 리눅스 브릿지 메커니즘을 사용합니다.

  • /etc/neutron/plugins/ml2/ml2_conf.ini 파일을 수정하고 다음 작업을 진행합니다:

    • [ml2] 섹션에서 flat, VLAN, XVLAN 네트워크를 활성화합니다:

      [ml2]
      ...
      type_drivers = flat,vlan,vxlan
      
    • [ml2] 섹션에서 VXLAN 프로젝트 (사설) 네트워크를 활성화합니다:

      [ml2]
      ...
      tenant_network_types = vxlan
      
    • [ml2] 섹션에서 Linux 브릿지와 layer-2 population 메커니즘을 활성화합니다:

      [ml2]
      ...
      mechanism_drivers = linuxbridge,l2population
      

      경고

      ML2 플러그인을 구성한 후, type_drivers 옵션의 값을 제거하게 되면 테이터베이스 불일치가 발생할 수 있습니다.

      주석

      Linux 브릿지 에이전트는 VXLAN 오버레이 네트워크만을 지원합니다.

    • [ml2] 섹션에서 포트 보안 확장 드라이버를 활성화 합니다:

      [ml2]
      ...
      extension_drivers = port_security
      
    • [ml2_type_flat] 섹션에서 공용 플랫 프로바이더 네트워크를 구성합니다:

      [ml2_type_flat]
      ...
      flat_networks = public
      
    • [ml2_type_vxlan] 섹션에서, 사설 네트워크를 위한 VXLAN 네트워크 구분자 영역을 구성합니다:

      [ml2_type_vxlan]
      ...
      vni_ranges = 1:1000
      
    • [securitygroup] 섹션에서 시큐리티 그룹 규칙의 효율을 높이기 위해 ipset 을 활성화합니다:

      [securitygroup]
      ...
      enable_ipset = True
      

리눅스 브릿지 에이전트 구성

리눅스 브릿지 에이전트는 사설 네트워크 상의 VXLAN 터널링을 포함하는 인스턴스에 대한 layer-2(브릿징과 스위칭) 가상 네트워킹 인프라를 구축하고 시큐리티 그룹을 처리합니다.

  • Edit the /etc/neutron/plugins/ml2/linuxbridge_agent.ini file and complete the following actions:

    • [linux_bridge] 섹션에서, 공용 물리 네트워크 인터페이스에 공용 가상 네트워크를 매핑합니다:

      [linux_bridge]
      physical_interface_mappings = public:PUBLIC_INTERFACE_NAME
      

      물리적인 공용 네트워크 인터페이스를 기본으로 하여 PUBLIC_INTERFACE_NAME 을 변경합니다.

    • [vxlan] 섹션에서 VXLAN 오버레이 네트워크를 활성화하고, 오버레이 네트워크에서 처리할 물리 네트워크 인터페이스의 IP 주소를 구성합니다. 그리고 Layer-2 구역을 활성화합니다:

      [vxlan]
      enable_vxlan = True
      local_ip = OVERLAY_INTERFACE_IP_ADDRESS
      l2_population = True
      

      오버레이 네트워크를 처리하는 기본 물리 네트워크 인터페이스의 IP 주소로 OVERLAY_INTERFACE_IP_ADDRESS 로 수정합니다. 예제 아키텍처에서는 트래픽을 다른 노드로 터널링하기 위한 관리 인터페이스를 사용합니다. 따라서, OVERLAY_INTERFACE_IP_ADDRESS 를 각 노드의 관리 IP 주소로 변경합니다.

    • [agent] 섹션에서, ARP spoofing 방어를 활성화합니다:

      [agent]
      ...
      prevent_arp_spoofing = True
      
    • [securitygroup] 섹션에서 시큐리티 그룹을 활성화시키고 리눅스 브릿지 iptables 방화벽 드라이버를 구성합니다:

      [securitygroup]
      ...
      enable_security_group = True
      firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
      

Layer-3 에이전트 구성

Layer-3 (L3) agent 는 가상 네트워크를 위한 라우팅과 NAT 서비스를 제공합니다.

  • /etc/neutron/l3_agent.ini 파일을 편집하여 다음 작업을 완료합니다:

    • [DEFAULT] 섹션에서 Linux 브릿지 인터페이스 드라이버와 외부 네트워크 브릿지를 구성합니다:

      [DEFAULT]
      ...
      interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
      external_network_bridge =
      

      주석

      external_network_bridge 옵션에서는 단일 에이전트에서 여러 외부 네트워크를 활성화하기 위해 의도적으로 값을 갖고 있지 않습니다.

    • (옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:

      [DEFAULT]
      ...
      verbose = True
      

DHCP 에이전트 구성

DHCP agent 가상 네트워크에대한 DHCP 서비스를 제공합니다.

  • /etc/neutron/dhcp_agent.ini 파일을 수정하고 다음 작업을 완료합니다:

    • [DEFAULT] 섹션에서 Linux 브릿지 인터페이스 드라이버, Dnsmasq DHCP 드라이버를 구성하고 격리된 메타데이터를 활성화하여 공용 네트워크 상의 인스턴스가 네트워크에서 메타데이터를 액세스하도록 합니다:

      [DEFAULT]
      ...
      interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
      dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
      enable_isolated_metadata = True
      
    • (옵션) 트러블 슈팅을 지원하기 위해, [DEFAULT] 섹션에서 verbose 로깅을 활성화합니다:

      [DEFAULT]
      ...
      verbose = True
      

    VXLAN과 같은 오버레이 네트워크는 오버헤드를 증가시키고 페이로드 또는 사용자 데이터를 위해 사용 가능한 용량을 감소시키는 추가적인 패킷 헤더를 포함합니다. 가상 네트워크 인프라에 대한 지식이 없더라도 인스턴스들은 기본 이더넷에 대한 1500 바이트의 maximum transmission unit (MTU) 를 사용하여 패킷 전송을 시도합니다. Internet protocol (IP) 네트워크는 end-to-end MTU를 발견하고 패킷 크기를 정확히 조정하기 위한 path MTU discovery (PMTUD) 메커니즘을 포함합니다. 그러나 몇몇 운영체제와 네트워크에서는 차단하거나 또는 PMTUD를 지원하지 않아 성능 저하 또는 연결 실패를 야기합니다.

    이상적으로, tenant 가상 네트워크를 포함하는 물리 네트워크 상에서 jumbo frames 를 활성화하여 해당 문제를 방지할 수 있습니다. 점보 프레임은 가상 네트워크에서 VXLAN 오버헤드에 대한 영향력을 무효화하도록 MTU를 약 9000 바이트까지 지원합니다. 그러나 많은 네트워크 장치들은 점보 프레임을 지원하지 않으며 OpenStack 관리자들은 종종 네트워크 인프라에 대한 제어를 담당하지 않습니다. 후인 경우, VXLAN 오버헤드를 고려하여 인스턴스 MTU를 줄임으로써 MTU 문제를 방지할 수 있습니다. 적합한 MTU 값을 결정하는데는 실험을 필요로 하지만 1450 바이트가 대부분의 환경에서 잘 동작할 것입니다. IP 주소를 인스턴스에 할당 및 MTU 값 또한 조정하는 DHCP 서버를 구성할 수 있습니다.

    주석

    몇몇 클라우드 이미지는 DHCP MTU 옵션을 무시하며 이 경우에는 메타데이터, 스크립트 또는 다른 적절한 방법을 사용하여 구성해야 합니다.

    • [DEFAULT] 섹션에서 dnsmasq 구성 파일을 활성화합니다:

      [DEFAULT]
      ...
      dnsmasq_config_file = /etc/neutron/dnsmasq-neutron.conf
      
    • /etc/neutron/dnsmasq-neutron.conf 파일을 생성과 편집하여 DHCP MTU 옵션 (26) 을 활성화하고 1450 바이트로 구성합니다:

      dhcp-option-force=26,1450
      

Networking controller node configuration 로 돌아갑니다.

Creative Commons Attribution 3.0 License

Except where otherwise noted, this document is licensed under Creative Commons Attribution 3.0 License. See all OpenStack Legal Documents.