Mirantis OpenStack DVR 철저 해부(제1회)
DVR의 동작을 확인해 보았습니다.
앞으로 여러 번 나누어 소개하고 싶습니다.
첫번째는 DVR의 설명과 환경에 대한 설명을 합니다.
DVR이란?
우선 DVR이란 무엇인가를 설명해 드리고 싶습니다.
기존 Neutron을 사용하는 네트워크에서 외부 네트워크와 다른 서브넷으로의 통신은
모두 네트워크 노드의 가상 라우터를 통과하는 메커니즘입니다.
그러나, 상기 구성의 경우,
Network Node의 가상 라우터가 SPOF(Single Point of Failure, 단일 장애 지점)로 되어 있으며,
부하의 집중에 의한 응답 저하등도 일어날 수 있는 상태가 되고 있습니다.
그 문제를 해결하기 위해 DVR이 등장했습니다.
DVR을 사용하면,
외부 네트워크에 대한 통신과 다른 서브넷에 대한 통신 모두 자체 호스트의 가상 라우터를 사용하기 때문에,
로드가 분산되어 가상 라우터에 장애가 발생한 경우의 영향 범위를 자체 호스트에만 최소화할 수 있습니다.
참고 : 그러나 North-South 통신에서 플로팅 IP를 사용하지 않고 NAT를 사용하는 경우,
DVR 구성의 경우에도 DVR을 사용하지 않는 것처럼 Network Node 가상 라우터를 사용합니다.
사용환경
우선 검증한 환경을 이하에 나타냅니다.
이번에는 Compute 노드와 Storage 노드를 1대로 집약하고,
OpenStack 로서는, 합계 2대의 구성을 취하고 있습니다.
네트워크
다음은 네트워크에 대한 간단한 설명입니다.
네트워크 이름
설명
공개
외부 네트워크에 연결하는 데 사용
관리
OpenStack 관리 네트워크
Private
OpenStack 내부 통신 네트워크
스토리지
스토리지용 네트워크
Admin (PXE)
Fuel Master(※)와 각 노드와의 통신에 사용
배포 후 설정 확인
전체 구성
위의 환경에서 배포하면 완성된 환경이 여기가 됩니다.
파란색 배경: UP 중인 NIC 및 스위치
회색: DOWN 중인 NIC 및 스위치(br-int 및 br-tun은 포트만 UP 중인 상태)
조금 복잡하기 때문에, 다음 회 이후, 간략화한 이하의 그림을 이용해 설명해 갑니다.
VRRP(L3HA)에 대해서는 이번 생략했습니다.
다른 기사에서 별도로 기재하겠습니다.
상세
Linux 브리지
controller01/compute01
이름
설명
br-fw-admin
Admin (PXE) 네트워크 통신용 브리지
br-mgmt
Management 네트워크 통신용 브리지
br-ex
Public 네트워크 통신용 브리지
br-mesh
Private 네트워크 통신용 브리지
br-storage
Storage 네트워크 통신용 브리지
qbr***
가상 머신과 br-int를 연결하는 브리지
OVS 브리지
controller01/compute01
이름
설명
br-floating
플로팅 IP 사용시 및 외부 통신 시 사용되는 브리지
br-tun
VXLAN 또는 GRE 터널을 사용하여 내부 호스트 간 통신에 사용되는 브리지
br-int
내부 통신에 주로 사용되는 브리지
NameSpace
controller01
이름
설명
snat-***
가상 NAT
qrouter-***
가상 라우터
qdhcp-***
가상 DHCP
haproxy-***
HAProxy
compute01
이름
설명
fip-***
플로팅 IP
qrouter-***
가상 라우터
Neutron 설정
/etc/neutron/neutron.conf(발췌)
controller01
[DEFAULT]
router_distributed = True # DVRを使用するため 'True' を設定
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
l3_ha = False
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
compute01
[DEFAULT]
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
auth_strategy = keystone
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
/etc/neutron/l3_agent.ini(발췌)
controller01
[DEFAULT]
agent_mode = dvr_snat # DVRおよびNAT機能
compute01
[DEFAULT]
agent_mode = dvr # DVR機能
/etc/neutron/plugins/ml2/ml2_conf.ini(발췌)
controller01
[ml2]
type_drivers = local,flat,vlan,gre,vxlan
tenant_network_types = flat,vxlan
mechanism_drivers =openvswitch,l2population
extension_drivers =port_security
[ml2_type_gre]
tunnel_id_ranges =2:65535
[ml2_type_vxlan]
vni_ranges =2:65535
vxlan_group =224.0.0.1
[securitygroup]
enable_security_group = True
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
compute01
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
주석
※ Fuel Master ... MOS 배포 및 관리 노드
Reference
이 문제에 관하여(Mirantis OpenStack DVR 철저 해부(제1회)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jundo414/items/d6ebbca982897a47ed6a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
우선 검증한 환경을 이하에 나타냅니다.
이번에는 Compute 노드와 Storage 노드를 1대로 집약하고,
OpenStack 로서는, 합계 2대의 구성을 취하고 있습니다.
네트워크
다음은 네트워크에 대한 간단한 설명입니다.
네트워크 이름
설명
공개
외부 네트워크에 연결하는 데 사용
관리
OpenStack 관리 네트워크
Private
OpenStack 내부 통신 네트워크
스토리지
스토리지용 네트워크
Admin (PXE)
Fuel Master(※)와 각 노드와의 통신에 사용
배포 후 설정 확인
전체 구성
위의 환경에서 배포하면 완성된 환경이 여기가 됩니다.
파란색 배경: UP 중인 NIC 및 스위치
회색: DOWN 중인 NIC 및 스위치(br-int 및 br-tun은 포트만 UP 중인 상태)
조금 복잡하기 때문에, 다음 회 이후, 간략화한 이하의 그림을 이용해 설명해 갑니다.
VRRP(L3HA)에 대해서는 이번 생략했습니다.
다른 기사에서 별도로 기재하겠습니다.
상세
Linux 브리지
controller01/compute01
이름
설명
br-fw-admin
Admin (PXE) 네트워크 통신용 브리지
br-mgmt
Management 네트워크 통신용 브리지
br-ex
Public 네트워크 통신용 브리지
br-mesh
Private 네트워크 통신용 브리지
br-storage
Storage 네트워크 통신용 브리지
qbr***
가상 머신과 br-int를 연결하는 브리지
OVS 브리지
controller01/compute01
이름
설명
br-floating
플로팅 IP 사용시 및 외부 통신 시 사용되는 브리지
br-tun
VXLAN 또는 GRE 터널을 사용하여 내부 호스트 간 통신에 사용되는 브리지
br-int
내부 통신에 주로 사용되는 브리지
NameSpace
controller01
이름
설명
snat-***
가상 NAT
qrouter-***
가상 라우터
qdhcp-***
가상 DHCP
haproxy-***
HAProxy
compute01
이름
설명
fip-***
플로팅 IP
qrouter-***
가상 라우터
Neutron 설정
/etc/neutron/neutron.conf(발췌)
controller01
[DEFAULT]
router_distributed = True # DVRを使用するため 'True' を設定
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
l3_ha = False
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
compute01
[DEFAULT]
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
auth_strategy = keystone
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
/etc/neutron/l3_agent.ini(발췌)
controller01
[DEFAULT]
agent_mode = dvr_snat # DVRおよびNAT機能
compute01
[DEFAULT]
agent_mode = dvr # DVR機能
/etc/neutron/plugins/ml2/ml2_conf.ini(발췌)
controller01
[ml2]
type_drivers = local,flat,vlan,gre,vxlan
tenant_network_types = flat,vxlan
mechanism_drivers =openvswitch,l2population
extension_drivers =port_security
[ml2_type_gre]
tunnel_id_ranges =2:65535
[ml2_type_vxlan]
vni_ranges =2:65535
vxlan_group =224.0.0.1
[securitygroup]
enable_security_group = True
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
compute01
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
주석
※ Fuel Master ... MOS 배포 및 관리 노드
Reference
이 문제에 관하여(Mirantis OpenStack DVR 철저 해부(제1회)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/jundo414/items/d6ebbca982897a47ed6a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
[DEFAULT]
router_distributed = True # DVRを使用するため 'True' を設定
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
l3_ha = False
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
[DEFAULT]
core_plugin = neutron.plugins.ml2.plugin.Ml2Plugin
service_plugins =neutron.services.l3_router.l3_router_plugin.L3RouterPlugin,neutron.services.metering.metering_plugin.MeteringPlugin
auth_strategy = keystone
# dvr_base_mac = fa:16:3f:00:00:00 # DVRを使用する際、使用する自ホストのMAC(後述)は、デフォルト値を使用
[DEFAULT]
agent_mode = dvr_snat # DVRおよびNAT機能
[DEFAULT]
agent_mode = dvr # DVR機能
[ml2]
type_drivers = local,flat,vlan,gre,vxlan
tenant_network_types = flat,vxlan
mechanism_drivers =openvswitch,l2population
extension_drivers =port_security
[ml2_type_gre]
tunnel_id_ranges =2:65535
[ml2_type_vxlan]
vni_ranges =2:65535
vxlan_group =224.0.0.1
[securitygroup]
enable_security_group = True
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
[ovs]
tunnel_bridge=br-tun
enable_tunneling=True
integration_bridge=br-int
bridge_mappings=physnet1:br-floating
[agent]
enable_distributed_routing=True # DVRを使用するため 'True' を設定
prevent_arp_spoofing=True
arp_responder=True
polling_interval=2
drop_flows_on_start=False
vxlan_udp_port=4789
l2_population=True
tunnel_types=vxlan
※ Fuel Master ... MOS 배포 및 관리 노드
Reference
이 문제에 관하여(Mirantis OpenStack DVR 철저 해부(제1회)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/jundo414/items/d6ebbca982897a47ed6a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)