4.5. 클러스터에 OVS balance-slb 모드 활성화
클러스터가 실행되는 인프라에서 Open vSwitch(OVS) balance-slb 모드를 활성화하여 두 개 이상의 물리적 인터페이스가 네트워크 트래픽을 공유할 수 있습니다. Balance-SLB 모드 인터페이스는 가상화 워크로드를 실행하는 클러스터에 대해 소스 로드 밸런싱(SLB) 기능을 제공하며, 이 인터페이스는 네트워크 스위치와 통신할 필요 없이 독립적으로 작동할 수 있습니다.
현재 소스 부하 분산은 필요한 경우 br-phy 와 같은 본드 인터페이스에 MAC(Media Access Control) 주소와 vLAN(Virtual Local Area Network)을 할당하여 작동합니다. 인터페이스 간에 MAC 주소와 vLAN이 공유되므로 balance-slb 모드를 사용하여 Pod 트래픽을 공유하는 것은 아무런 이점이 없습니다.
다음 다이어그램은 간단한 클러스터 인프라 레이아웃에서의 balance-slb 모드를 보여줍니다. 가상 머신(VM)은 특정 로컬넷 NetworkAttachmentDefinition (NAD) 사용자 정의 리소스 정의(CRD), NAD 0 또는 NAD 1 에 연결됩니다. 각 NAD는 VLAN ID 태그와 같은 네트워크 트래픽에 대한 액세스를 VM에 제공합니다. br-ex OVS 브리지는 VM에서 트래픽을 수신하고 해당 트래픽을 다음 OVS 브리지인 br-phy 로 전달합니다. br-phy 브리지는 SLB 본드의 컨트롤러 역할을 합니다. SLB 본드는 eno0 및 eno1 과 같은 물리적 인터페이스 링크를 통해 다양한 VM 포트의 트래픽을 분산합니다. 또한, 두 물리적 인터페이스에서 들어오는 트래픽은 OVS 브리지 세트를 통과하여 VM에 도달할 수 있습니다.
그림 4.1. 로컬넷에서 두 개의 NAD로 작동하는 OVS balance-slb 모드
OVS 본딩을 사용하면 balance-slb 모드 인터페이스를 기본 또는 보조 네트워크 유형에 통합할 수 있습니다. OVS 본딩에 대한 다음 사항을 참고하세요.
- OVN-Kubernetes CNI 플러그인을 지원하고 플러그인과 쉽게 통합됩니다.
-
기본적으로
balance-slb모드를 지원합니다. - OpenShift Container Platform 클러스터 외부에서 해당 메서드를 사용할 수 없습니다.
사전 요구 사항
-
기본 네트워크에 두 개 이상의 물리적 인터페이스가 연결되어 있으며
MachineConfig파일에서 인터페이스를 정의했습니다. -
매니페스트 객체를 생성하고 객체 구성 파일에서 사용자 정의
br-ex브리지를 정의했습니다. - 기본 네트워크에 두 개 이상의 물리적 인터페이스가 연결되어 있으며 NAD 파일에서 인터페이스를 정의했습니다.
프로세스
클러스터에 존재하는 각 베어 메탈 호스트에 대해 클러스터의
install-config.yaml파일에서 다음 예와 유사한networkConfig섹션을 정의합니다.# ... networkConfig: interfaces: - name: enp1s01 type: interface state: up ipv4: dhcp: true enabled: true ipv6: enabled: false - name: enp2s02 type: interface state: up ipv4: dhcp: true enabled: true ipv6: enabled: false - name: enp3s03 type: interface state: up ipv4: enabled: false ipv6: enabled: false # ...MachineConfig매니페스트 파일에 각 네트워크 인터페이스를 정의합니다.여러 네트워크 인터페이스를 정의하는
MachineConfig매니페스트 파일 예# ... ovn: bridge-mappings: - localnet: localnet-network bridge: br-ex state: present interfaces: - name: br-ex type: ovs-bridge state: up ipv4: enabled: false dhcp: false ipv6: enabled: false dhcp: false bridge: allow-extra-patch-ports: true port: - name: br-ex - name: patch-ex-to-phy ovs-db: external_ids: bridge-uplink: "patch-ex-to-phy" - name: br-ex type: ovs-interface state: up copy-mac-from: enp2s0 ipv4: enabled: true dhcp: true auto-route-metric: 48 ipv6: enabled: false dhcp: false - name: br-phy type: ovs-bridge state: up ipv4: enabled: false dhcp: false ipv6: enabled: false dhcp: false bridge: allow-extra-patch-ports: true port: - name: patch-phy-to-ex - name: ovs-bond link-aggregation: mode: balance-slb port: - name: enp2s0 - name: enp3s0 - name: patch-ex-to-phy type: ovs-interface state: up patch: peer: patch-phy-to-ex - name: patch-phy-to-ex type: ovs-interface state: up patch: peer: patch-ex-to-phy # ...cat명령을 사용하여MachineConfig매니페스트 파일의 인터페이스 내용을 base64로 인코딩합니다.$ cat machineconfig.yaml | base64 -w01 - 1
-w0옵션은 base64 인코딩 작업 중에 줄바꿈을 방지합니다.
마스터역할과워커역할에 대한MachineConfig매니페스트 파일을 만듭니다. 다음 예제 매니페스트 파일은 클러스터에 있는 모든 노드에 대한마스터역할을 구성합니다. 노드에 맞는마스터및워커역할에 대한 매니페스트 파일을 만들 수도 있습니다.apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: labels: machineconfiguration.openshift.io/role: master name: 10-br-ex-master1 spec: config: ignition: version: 3.2.0 storage: files: - contents: source: data:text/plain;charset=utf-8;base64,<base64_encoded_nmstate_configuration>2 mode: 0644 overwrite: true path: /etc/nmstate/openshift/cluster.yml3 -
MachineConfig매니페스트 파일을./<installation_directory>/manifests디렉토리에 저장합니다. 여기서<installation_directory>는 설치 프로그램이 파일을 생성하는 디렉토리입니다.