Seesaw를 사용한 번들 부하 분산

VMware용 Anthos 클러스터(VMware용 GKE)는 통합, 수동, 번들 등 세 가지 부하 분산 모드 중 하나에서 실행될 수 있습니다. 이 문서에서는 Seesaw 부하 분산기를 번들 모드로 실행하도록 VMware용 Anthos 클러스터를 구성하는 방법을 보여줍니다.

여기에는 전체 안내가 나와 있습니다. Seesaw 부하 분산기 사용에 대한 간략한 소개는 Seesaw 부하 분산기(빠른 시작)를 참조하세요.

번들 부하 분산 모드에서 Anthos clusters on VMware는 부하 분산기를 제공하고 관리합니다. 사용자는 부하 분산기의 라이선스를 가져올 필요가 없으며 설정해야 하는 양은 최소 수준입니다.

이 문서에서는 관리자 클러스터 및 하나의 연관된 사용자 클러스터에 대해 Seesaw 부하 분산기를 구성하는 방법을 보여줍니다. 사용자는 단일 VM에서 Seesaw 부하 분산기를 실행하거나 2개의 VM을 사용하는 고가용성(HA) 모드로 부하 분산기를 실행할 수 있습니다. HA 모드에서 Seesaw 부하 분산기는 가상 라우터 중복 프로토콜(VRRP)을 사용합니다. 두 VM을 마스터와 백업이라고 부릅니다. 각 Seesaw VM에는 사용자가 선택한 가상 라우터 식별자(VRID)가 제공됩니다.

Seesaw 구성의 예시

HA 모드에서 Seesaw 부하 분산기를 실행하는 클러스터의 구성 예시는 다음과 같습니다.

HA 모드의 Seesaw 부하 분산기 구성입니다.
HA 모드의 Seesaw 부하 분산기 구성(확대하려면 클릭)

위 다이어그램은 관리자 클러스터와 사용자 클러스터에 대해 각각 2개의 Seesaw VM을 보여줍니다. 이 예시에서 관리자 클러스터와 사용자 클러스터는 별도의 두 VLAN에 위치하며 각 클러스터는 별도의 서브넷에 있습니다.

클러스터 서브넷
관리자 클러스터 172.16.20.0/24
사용자 클러스터 172.16.40.0/24

admin-cluster.yaml

관리자 클러스터 구성 파일의 다음 예시에서는 앞선 다이어그램에 표시된 구성을 보여줍니다.

  • 관리자 클러스터를 제공하는 Seesaw VM 쌍에 대한 마스터 IP 주소입니다.

  • 관리자 클러스터의 Kubernetes API 서버에 지정된 VIP입니다.

network:
  hostConfig:
  ...

  ipMode:
    type: "static"
    ipBlockFilePath: "config-folder/admin-cluster-ipblock.yaml"
...

loadBalancer:
  seesaw:
    ipBlockFilePath: "config-folder/admin-seesaw-ipblock.yaml"
    masterIP: 172.16.20.57
  ...

  vips:
    controlPlaneVIP: "172.16.20.70"
    addonsVIP: "172.16.20.71"

admin-cluster-ipblock.yaml

다음 IP 블록 파일 예시에서는 관리자 클러스터의 노드에 대한 IP 주소 지정을 보여줍니다. 여기에는 사용자 클러스터 제어 영역 노드의 주소와 클러스터 업그레이드 중 사용할 IP 주소도 포함됩니다.

blocks:
- netmask: "255.255.255.0"
  gateway: "17.16.20.1"
  ips:
  - ip: 172.16.20.50
    hostname: admin-vm-1
  - ip: 172.16.20.51
    hostname: admin-vm-2
  - ip: 172.16.20.52
    hostname: admin-vm-3
  - ip: 172.16.20.53
    hostname: admin-vm-4
  - ip: 172.16.20.54
    hostname: admin-vm-5

admin-seesaw-ipblock.yaml

다른 IP 블록 파일의 다음 예시는 관리자 클러스터를 제공하는 Seesaw VM에 대해 2개의 IP 주소를 지정합니다. 이것은 클러스터 노드가 아닌 부하 분산기 VM을 위한 개별 IP 블록 파일입니다.

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.20.1"
    ips:
    - ip: "172.16.20.60"
      hostname: "admin-seesaw-vm-1"
    - ip: "172.16.20.61"
      hostname: "admin-seesaw-vm-2"

user-cluster.yaml

다음 사용자 클러스터 구성 파일 예시에서는 다음 구성을 보여줍니다.

  • 사용자 클러스터를 제공하는 Seesaw VM 쌍에 대한 마스터 IP 주소입니다.

  • 사용자 클러스터의 Kubernetes API 서버 및 인그레스 서비스에 지정된 VIP입니다. 사용자 클러스터의 제어 영역이 관리자 클러스터의 노드에서 실행되므로 Kubernetes API 서버 VIP는 관리자 클러스터 서브넷에 있습니다.

network:
  hostConfig:
  ...

  ipMode:
    type: "static"
    ipBlockFilePath: "config-folder/user-cluster-ipblock.yaml"
...

loadBalancer:
  seesaw:
    ipBlockFilePath: "config-folder/user-seesaw-ipblock.yaml"
    masterIP: 172.16.40.31
  ...

  vips:
    controlPlaneVIP: "172.16.20.72"
    ingressVIP: "172.16.40.100"

user-cluster-ipblock.yaml

다음 IP 블록 파일 예시에서는 사용자 클러스터의 노드에 대한 IP 주소 지정을 보여줍니다. 여기에는 클러스터 업그레이드 중에 사용할 IP 주소가 포함됩니다.

blocks:
- netmask: "255.255.255.0"
  gateway: "17.16.40.1"
  ips:
  - ip: 172.16.40.21
    hostname: user-vm-1
  - ip: 172.16.40.22
    hostname: user-vm-2
  - ip: 172.16.40.23
    hostname: user-vm-3
  - ip: 172.16.40.24
    hostname: user-vm-4
  - ip: 172.16.40.25
    hostname: user-vm-5

user-seesaw-ipblock.yaml

다른 IP 블록 파일의 다음 예시는 사용자 클러스터를 제공하는 Seesaw VM에 대해 2개의 IP 주소를 지정합니다.

blocks:
  - netmask: "255.255.255.0"
    gateway: "172.16.40.1"
    ips:
    - ip: "172.16.40.29"
      hostname: "user-seesaw-vm-1"
    - ip: "172.16.40.30"
      hostname: "user-seesaw-vm-2"

포트 그룹

다음 표에서는 이전 다이어그램에 표시된 대로 각 Seesaw VM에 대한 네트워크 인터페이스 구성과 연결된 포트 그룹을 설명합니다.

Seesaw VM 네트워크 인터페이스 네트워크 인터페이스 구성 연결된 포트 그룹
마스터 network-interface-1 VIP load-balancer
network-interface-2 Seesaw VM에 대해 IP 블록 파일에서 가져온 IP 주소 cluster-node
백업 network-interface-1 구성 없음 load-balancer
network-interface-2 Seesaw VM에 대해 IP 블록 파일에서 가져온 IP 주소 cluster-node

클러스터 노드는 cluster-node 포트 그룹에도 연결됩니다.

위 표에 표시된 것처럼 관리자 및 사용자 클러스터를 위한 각 Seesaw VM에는 2개의 네트워크 인터페이스가 포함됩니다. 각 Seesaw VM에 대해 2개의 네트워크 인터페이스가 2개의 개별 포트 그룹에 연결됩니다.

  • load-balancer 포트 그룹

  • cluster-node 포트 그룹

한 클러스터의 2개 포트 그룹은 해당 클러스터의 동일한 VLAN에 있습니다.

Seesaw 부하 분산기 설정

위 다이어그램은 Seesaw 부하 분산을 위한 권장 네트워크 구성을 보여줍니다. 자체 구성을 계획할 때는 번들 부하 분산 모드의 경우 vSphere 6.7 이상과 가상 분산 스위치(VDS) 6.6 이상을 사용하는 것이 좋습니다.

원하는 경우 이전 버전을 사용할 수 있지만 설치 보안 수준이 저하됩니다. 이 주제의 남은 섹션에서는 vSphere 6.7+ 및 VDS 6.6+을 사용할 때의 보안 이점에 대해 더 자세히 설명합니다.

VLAN 계획

번들 부하 분산 모드에서는 클러스터를 별도의 VLAN에 두는 것이 좋습니다.

관리자 클러스터가 자체 VLAN에 있는 경우 제어 영역 트래픽은 데이터 영역 트래픽과 분리됩니다. 이렇게 분리된 덕분에 관리자 클러스터와 사용자 클러스터 제어 영역이 의도치 않은 구성 실수로부터 보호됩니다. 예를 들어 이러한 실수로 인해 동일한 VLAN의 Layer 2 루프에 의한 브로드캐스트 스톰이나, 데이터 영역과 제어 영역의 원하는 분리를 제거하는 충돌 IP 주소와 같은 문제로 이어질 수 있습니다.

VM 리소스 프로비저닝

Seesaw 부하 분산기를 실행하는 VM의 경우 발생이 예상되는 네트워크 트래픽에 따라 CPU 및 메모리 리소스를 프로비저닝합니다.

Seesaw 부하 분산기는 메모리를 많이 사용하지 않으며 1GB의 메모리를 사용하는 VM에서 실행할 수 있습니다. 하지만 네트워크 패킷 속도가 증가하는 경우 CPU 요구사항이 증가합니다.

다음 표에서는 Seesaw VM 프로비저닝에 대한 스토리지, CPU 및 메모리 가이드라인을 보여줍니다. 패킷 속도는 네트워크 성능의 일반적인 측정값이 아니므로 이 표에는 최대 활성 네트워크 연결 수에 대한 가이드라인도 표시됩니다. 이 가이드라인에서는 VM에 10Gbps 링크가 있고 CPU가 70% 미만 용량에서 실행되는 환경이라고 가정합니다.

Seesaw 부하 분산기가 HA 모드에서 실행될 때 (마스터, 백업) 쌍을 사용하므로 모든 트래픽이 단일 VM을 통해 전달됩니다. 실제 사용 사례는 다양하므로 실제 트래픽에 따라 이 가이드라인을 수정해야 합니다. CPU 및 패킷 속도 측정항목을 모니터링하여 필요한 변경 사항을 확인합니다.

Seesaw VM의 CPU 및 메모리를 변경해야 하는 경우 부하 분산기 업그레이드를 참조하세요. 부하 분산기의 동일한 버전을 유지할 수 있으며 CPU 수와 메모리 할당을 변경할 수 있습니다.

소규모 관리자 클러스터의 경우 CPU 2개, 대규모 관리자 클러스터의 경우 CPU 4개를 사용하는 것이 좋습니다.

스토리지 CPU 메모리 패킷 속도(pps) 최대 활성 연결 수
20GB 1(비프로덕션) 1GB 250k 100
20GB 2 3GB 450k 300
20GB 4 3GB 850k 6,000
20GB 6 3GB 1,000k 10,000

VIP 및 IP 주소 따로 설정

VIP

부하 분산 모드를 선택하든 관계없이 부하 분산에 사용할 가상 IP 주소(VIP)를 별도로 설정해야 합니다. 이러한 VIP를 사용하면 외부 클라이언트가 Kubernetes API 서버, 인그레스 서비스, 부가기능 서비스에 연결할 수 있습니다.

또한 특정 시점에 사용자 클러스터에서 활성화될 수 있는 LoadBalancer 유형의 서비스 수를 고려하고 이러한 서비스에 대해 충분한 VIP를 따로 설정합니다. 나중에 LoadBalancer 유형의 서비스를 계속 만들 때 VMware용 Anthos 클러스터는 부하 분산기에서 서비스 VIP를 자동으로 구성합니다.

노드 IP 주소

번들 부하 분산 모드에서는 클러스터 노드에 고정 IP 주소를 지정하거나 클러스터 노드가 DHCP 서버에서 IP 주소를 가져올 수 있습니다.

클러스터 노드에 고정 IP 주소가 포함되도록 하려면 관리자 클러스터의 노드와 만들려는 모든 사용자 클러스터의 노드에 충분한 주소를 따로 설정하세요. 또한 클러스터 업그레이드 중 각 클러스터에 대해 사용할 추가 IP 주소를 따로 설정합니다. 따로 설정할 수 있는 노드 IP 주소 개수에 대한 자세한 내용은 관리자 클러스터 만들기를 참조하세요.

Seesaw VM의 IP 주소

그런 후 각 관리자 및 사용자 클러스터에 대해 Seesaw 부하 분산기를 실행할 VM의 IP 주소를 따로 설정합니다. 따로 설정하는 주소 개수는 HA Seesaw 부하 분산기를 만들지, 비HA Seesaw 부하 분산기를 만들지에 따라 다릅니다.

마스터 IP 주소

Seesaw VM의 IP 주소 외에도 각 클러스터에 대해 Seesaw VM 쌍의 단일 마스터 IP 주소를 따로 설정합니다.

비HA 구성

설정이 비HA 구성인 경우:

  • 관리자 클러스터의 경우 Seesaw VM에 대한 IP 주소 하나와 Seesaw 부하 분산기에 대한 마스터 IP 주소를 따로 설정합니다. 두 주소는 모두 관리자 클러스터 노드와 동일한 VLAN에 있어야 합니다.

  • 사용자 클러스터의 경우 Seesaw VM에 대한 IP 주소 하나와 Seesaw 부하 분산기에 대한 마스터 IP 주소를 따로 설정합니다. 두 주소는 모두 사용자 클러스터 노드와 동일한 VLAN에 있어야 합니다.

포트 그룹 계획

위 다이어그램은 HA 구성에 사용되는 2개의 포트 그룹과 Seesaw VM에서 네트워크 인터페이스에 연결된 방법을 설명합니다. 개별 Seesaw VM의 경우 2개의 네트워크 인터페이스를 동일한 vSphere 포트 그룹에 연결하거나 별도의 포트 그룹에 연결할지 결정합니다. MAC 학습을 사용 설정하지 않는 경우 포트 그룹을 하나만 가질 수 있습니다. 포트 그룹이 별개인 경우 동일한 VLAN에 있어야 합니다.

IP 블록 파일 만들기

각 클러스터, 관리자, 사용자에 IP 블록 파일에서 Seesaw VM에 선택한 주소를 지정합니다. 클러스터 노드에 고정 IP 주소를 사용하려면 해당 주소에 대해 별도의 IP 블록 파일을 만들어야 합니다.

구성 파일 작성

관리자 클러스터의 구성 파일과 사용자 클러스터의 다른 구성 파일을 준비합니다.

지정된 클러스터의 구성 파일에서 loadBalancer.kind"Seesaw"로 설정합니다.

loadBalancer에서 seesaw 섹션을 입력합니다.

loadBalancer:
  kind: Seesaw
  seesaw:

클러스터 구성 파일의 seesaw 섹션을 작성하는 방법에 대한 자세한 내용은 loadbalancer.seesaw(관리자 클러스터) 또는 loadbalancer.seesaw(사용자 클러스터)를 참조하세요.

관리자 클러스터 구성 파일에서 다음을 지정합니다.

  • 관리자 클러스터의 Kubernetes API 서버의 VIP
  • 관리자 클러스터 부가기능의 VIP
  • 관리자 클러스터를 제공하는 Seesaw VM 쌍에 대한 마스터 IP 주소입니다.

이러한 VIP는 관리자 클러스터 서브넷에 있어야 합니다.

사용자 클러스터 구성 파일에서 다음을 지정합니다.

  • 사용자 클러스터의 Kubernetes API 서버에 대한 VIP(관리자 클러스터 서브넷에 있어야 함)
  • 사용자 클러스터의 인그레스 VIP
  • 사용자 클러스터를 제공하는 Seesaw VM 쌍에 대한 마스터 IP 주소입니다.

위 목록에서 마지막 2개의 주소는 사용자 클러스터 서브넷에 있어야 합니다.

MAC 학습 또는 무차별 모드 사용 설정(HA만 해당)

HA Seesaw 부하 분산기를 설정하는 경우 이 섹션을 건너뛸 수 있습니다.

loadBalancer.seesaw.disableVRRPMAC를 true로 설정한 경우 이 섹션을 건너뛰어도 됩니다.

HA Seesaw 부하 분산기를 설정하고 loadBalancer.seesaw.disableVRRPMACfalse로 설정한 경우 부하 분산기 포트 그룹에서 MAC 학습, 위조 전송, 무차별 모드의 조합을 사용 설정해야 합니다.

이 기능을 사용 설정하는 방법은 사용 중인 스위치 유형에 따라 다릅니다.

전환 유형기능 사용 설정보안에 미치는 영향
vSphere 7.0 VDS HA가 포함된 vSphere 7.0의 경우 loadBalancer.seesaw.disableVRRPMACtrue로 설정해야 합니다. MAC 학습은 지원되지 않습니다.
vSphere 6.7(VDS 6.6 포함)

gkectl prepare network --config [CONFIG_FILE] 명령어를 실행하여 부하 분산기에 MAC 학습 및 위조 전송을 사용 설정합니다. 여기서 [CONFIG_FILE]은 클러스터 구성 파일의 경로입니다. 이를 수행하려면 dvPort group.Modify 권한이 필요합니다.

최소. 부하 분산기 포트 그룹이 Seesaw VM에만 연결된 경우 MAC 학습을 신뢰할 수 있는 Seesaw VM으로 제한할 수 있습니다.

vSphere 6.5 또는

vSphere 6.7(VDS 버전 6.6 미만 포함)

부하 분산기 포트 그룹에 대해 무차별 모드와 위조 전송을 사용 설정합니다. 네트워킹 탭의 포트 그룹 페이지에 있는 vSphere 사용자 인터페이스를 사용합니다. 설정 수정 -> 보안을 클릭합니다. 부하 분산기 포트 그룹의 모든 VM은 무차별 모드입니다. 따라서 부하 분산기 포트 그룹의 모든 VM에서는 모든 트래픽을 볼 수 있습니다. 부하 분산기 포트 그룹이 Seesaw VM에만 연결된 경우 모든 트래픽을 볼 수 있는 VM으로 제한됩니다.
NSX-T 논리 스위치 논리 스위치에서 MAC 학습을 사용 설정합니다. vSphere는 동일한 layer-2 도메인에서 두 개의 논리 스위치 만들기를 지원하지 않습니다. 따라서 Seesaw VM과 클러스터 노드는 동일한 논리적 스위치에 있어야 합니다. 즉, 모든 클러스터 노드에 MAC 학습이 사용 설정됩니다. 공격자가 클러스터에서 권한이 있는 포드를 실행하여 MAC 스푸핑을 할 수도 있습니다.
vSphere 표준 스위치 부하 분산기 포트 그룹에 대해 무차별 모드와 위조 전송을 사용 설정합니다. 각 ESXI 호스트에 있는 vSphere 사용자 인터페이스를 사용합니다. 구성 -> 가상 스위치 -> 표준 스위치 -> 포트 그룹의 설정 수정 -> 보안을 클릭합니다. 부하 분산기 포트 그룹의 모든 VM은 무차별 모드입니다. 따라서 부하 분산기 포트 그룹의 모든 VM에서는 모든 트래픽을 볼 수 있습니다. 부하 분산기 포트 그룹이 Seesaw VM에만 연결된 경우 모든 트래픽을 볼 수 있는 VM으로 제한됩니다.

관리자 클러스터 구성 파일 작성 완료

관리자 클러스터 만들기의 안내에 따라 관리자 클러스터 구성 파일 작성을 완료합니다.

실행 전 검사 실행

관리자 클러스터 구성 파일에서 실행 전 검사를 실행합니다.

gkectl check-config --config ADMIN_CLUSTER_CONFIG

ADMIN_CLUSTER_CONFIG를 관리자 클러스터 구성 파일의 경로로 바꿉니다.

OS 이미지 업로드

OS 이미지를 vSphere 환경에 업로드합니다.

gkectl prepare --config ADMIN_CLUSTER_CONFIG

관리자 클러스터의 부하 분산기 만들기

gkectl create loadbalancer --config [ADMIN_CLUSTER_CONFIG]

관리자 클러스터 만들기

관리자 클러스터 만들기의 안내에 따라 관리자 클러스터를 만듭니다.

사용자 클러스터 구성 파일 작성 완료

사용자 클러스터 만들기의 안내에 따라 사용자 클러스터 구성 파일 작성을 완료합니다.

실행 전 검사 실행

사용자 클러스터 구성 파일에서 실행 전 검사를 실행합니다.

gkectl check-config --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG

다음을 바꿉니다.

  • ADMIN_CLUSTERE_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

OS 이미지 업로드

OS 이미지를 vSphere 환경에 업로드합니다.

gkectl prepare --config USER_CLUSTER_CONFIG

사용자 클러스터의 부하 분산기 만들기

사용자 클러스터의 부하 분산기를 만듭니다.

gkectl create loadbalancer --config USER_CLUSTER_CONFIG

사용자 클러스터 만들기

사용자 클러스터 만들기의 안내에 따라 사용자 클러스터를 만듭니다.

성능 및 부하 테스트

애플리케이션의 다운로드 처리량은 백엔드 수에 따라 선형적으로 확장됩니다. 이는 백엔드가 직접 서버 반환을 사용하여 부하 분산기를 우회함으로써 클라이언트에 직접 응답을 보내기 때문입니다.

반면에 애플리케이션의 업로드 처리량은 부하 분산을 수행하는 하나의 Seesaw VM의 용량으로 제한됩니다.

애플리케이션은 CPU 및 메모리 필요량에 따라 달라지므로 많은 클라이언트를 제공하기 전에 부하 테스트를 수행하는 것이 중요합니다.

테스트 결과, 6개의 CPU와 3GB의 메모리를 사용하는 단일 Seesaw VM은 10K의 동시 TCP 연결로 10GB/초(회선 속도)의 트래픽을 업로드할 수 있는 것으로 나타났습니다. 그러나 많은 수의 동시 TCP 연결을 지원하려면 자체 부하 테스트를 실행해야 합니다.

확장 한도

번들 부하 분산에는 클러스터가 확장될 수 있는 크기에 대한 한도가 있습니다. 클러스터의 노드 수에 한도가 있고 부하 분산기에 구성할 수 있는 서비스 수에 한도가 있습니다. 상태 확인에도 한도가 있습니다. 상태 확인 수는 노드 수 및 서비스 수에 따라 다릅니다.

버전 1.3.1부터 상태 확인 수는 노드 수와 트래픽 로컬 서비스 수에 따라 다릅니다. 트래픽 로컬 서비스는 externalTrafficPolicy"Local"로 설정된 서비스입니다.

버전 1.3.0버전 1.3.1 이상
최대 서비스 수(S)100500
최대 노드 수(N)100100
최대 상태 확인S * N <= 10KN + L * N <= 10K, L은 트래픽 로컬 서비스 수

예: 버전 1.3.1에서 노드 100개와 트래픽 로컬 서비스 99개가 있다고 가정해 보겠습니다. 그러면 상태 확인 수가 100 + 99 * 100 = 10,000개이며, 이는 10K 한도 이내입니다.

클러스터의 부하 분산기 업그레이드

클러스터를 업그레이드하면 부하 분산기가 자동으로 업그레이드됩니다. 부하 분산기를 업그레이드하기 위해 별도의 명령어를 실행할 필요가 없습니다. 부하 분산기가 HA 모드이면 VMware용 Anthos 클러스터는 부하 분산기 VM을 롤링 방식으로 다시 만듭니다. 업그레이드 중 서비스 중단이 방지되도록 클러스터는 새 VM을 만들기 전에 장애 조치를 시작합니다.

원하는 경우 전체 업그레이드를 수행하지 않고 Seesaw VM의 CPU 또는 메모리를 업데이트할 수 있습니다. 먼저 클러스터 구성 파일에서 cpusmemoryMB 값을 수정합니다. 예를 들면 다음과 같습니다.

apiVersion: v1
bundlePath:
loadBalancer:
  kind: Seesaw
  seesaw:
    cpus: 3
    memoryMB: 3072

그런 다음 관리자 클러스터의 부하 분산기를 업데이트합니다.

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG --admin-cluster
사용자 클러스터의 부하 분산기를 업데이트하려면 다음 안내를 따르세요.
gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG

다음을 바꿉니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

  • ADMIN_CLUSTER_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

Seesaw 로그 보기

Seesaw 번들 부하 분산기는 Seesaw VM의 로그 파일을 /var/log/seesaw/에 저장합니다. 가장 중요한 로그 파일은 seesaw_engine.INFO입니다.

v1.6부터 Stackdriver가 사용 설정되면 로그도 Cloud에 업로드됩니다. 'anthos_l4lb' 리소스에서 볼 수 있습니다. 로그 업로드를 사용 중지하려면 VM에 SSH로 연결하여 다음 명령어를 실행합니다.

sudo systemctl disable --now docker.fluent-bit.service

Seesaw VM 정보 보기

클러스터의 Seesaw VM에 대한 정보는 SeesawGroup 커스텀 리소스에서 가져올 수 있습니다.

클러스터에 대해 SeesawGroup 커스텀 리소스를 확인합니다.

kubectl --kubeconfig CLUSTER_KUBECONFIG get seesawgroups -n kube-system -o yaml

CLUSTER_KUBECONFIG를 클러스터 kubeconfig 파일의 경로로 바꿉니다.

출력에는 VM에서 트래픽 처리가 준비되었는지 여부를 나타내는 isReady 필드가 포함됩니다. 또한 Seesaw VM의 이름 및 IP 주소와 기본 VM이 출력에 표시됩니다.

apiVersion: seesaw.gke.io/v1alpha1
kind: SeesawGroup
metadata:
  ...
  name: seesaw-for-cluster-1
  namespace: kube-system
  ...
spec: {}
status:
  machines:
  - hostname: cluster-1-seesaw-1
    ip: 172.16.20.18
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Master
  - hostname: cluster-1-seesaw-2
    ip: 172.16.20.19
    isReady: true
    lastCheckTime: "2020-02-25T00:47:37Z"
    role: Backup

Seesaw 측정항목 보기

Seesaw 번들 부하 분산기는 다음 측정항목을 제공합니다.

  • 서비스 또는 노드당 처리량
  • 서비스 또는 노드당 패킷 속도
  • 서비스 또는 노드당 활성 연결
  • CPU 및 메모리 사용량
  • 서비스당 정상 백엔드 포드 수
  • 기본 VM 및 백업 VM
  • 업타임

v1.6부터 이러한 측정항목은 Stackdriver를 사용하여 Cloud에 업로드됩니다. 'anthos_l4lb'의 모니터링 리소스에서 확인할 수 있습니다.

Prometheus 형식을 지원하는 모든 모니터링 및 대시보드 솔루션을 사용할 수도 있습니다.

부하 분산기 삭제

번들 부하 분산을 사용하는 클러스터를 삭제하면 해당 클러스터의 Seesaw VM을 삭제해야 합니다. 이렇게 하려면 vSphere 사용자 인터페이스에서 Seesaw VM을 삭제합니다.

또는 gkectl delete loadbalancer를 실행해도 됩니다.

관리자 클러스터의 경우 다음과 같습니다.

gkectl delete loadbalancer --config ADMIN_CLUSTER_CONFIG --seesaw-group-file GROUP_FILE

사용자 클러스터의 경우 다음과 같습니다.

gkectl delete loadbalancer  --kubeconfig ADMIN_CLUSTER_KUBECONFIG --config USER_CLUSTER_CONFIG \
    --seesaw-group-file GROUP_FILE

다음을 바꿉니다.

  • ADMIN_CLUSTER_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

  • GROUP_FILE: Seesaw 그룹 파일의 경로입니다. 그룹 파일 이름의 형식은 다음과 같습니다.
    seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml
    예를 들면 다음과 같습니다. seesaw-for-gke-admin-12345.yaml

Seesaw 부하 분산기와 함께 사용할 스테이트리스(Stateless) NSX-T 분산형 방화벽 정책 구성

구성에서 스테이트풀(Stateful) NSX-T 분산형 방화벽을 사용하고 Seesaw 부하 분산기도 사용하려는 경우 몇 가지 옵션이 있습니다. 자신의 환경에 가장 적합한 방법을 선택하세요.

NSX 구성 체크리스트

설명된 구제 조치 옵션 중 하나를 구현하기 전에 다음 NSX DFW 구성이 있는지 확인합니다.

  • 스테이트풀(Stateful) NSX DFW 섹션은 기본 구성입니다. 이는 현재 환경에서 보유하고 있을 가능성이 높습니다. 방화벽 섹션 및 방화벽 규칙을 참조하세요.

  • 서비스 삽입은 경우에 따라 NSX DFW와 함께 파트너 통합의 일부로 서비스 체인 및 L7 검사를 제공하는 데 사용됩니다. 서비스 삽입 정책도 기본적으로 스테이트풀(Stateful)입니다. 이 통합이 환경에서 사용 설정되었는지 확인하려면 다음 정보를 검토하세요.

옵션 1 -- Seesaw 부하 분산기의 스테이트리스(Stateless) 분산형 방화벽 정책 만들기

이 옵션을 사용하면 환경에서 분산형 방화벽을 사용 설정하면서 Anthos 인프라, 특히 Seesaw 부하 분산기를 스테이트리스(Stateless) 정책에 매핑할 수 있습니다. 스테이트리스(Stateless) 방화벽과 스테이트풀(Stateful) 방화벽의 차이점을 고려하여 환경에 가장 적합한 유형을 선택해야 합니다. VMware 문서의 관리자 모드에서 방화벽 규칙 섹션 추가 --절차-- 6단계를 참조하세요.

스테이트리스(Stateless) 방화벽 정책을 만들려면 다음을 수행하세요.

  1. 인벤토리 > 태그로 이동합니다. seesaw라는 태그를 만듭니다.

  2. 인벤토리 > 그룹으로 이동합니다. Seesaw라는 이름의 그룹을 만듭니다.

  3. Seesaw 집합 구성원을 구성합니다.

    • 집합 구성원을 클릭합니다. 생성한 seesaw 태그를 기반으로 멤버십 기준을 사용해 집합 구성원을 구성합니다. 보통은 NSX 태그 사용이 VMware 권장사항으로 간주되지만 이 방법에서는 환경에서 Anthos 클러스터를 업그레이드하거나 크기를 조정하는 등 환경이 변경될 때마다 이를 설정하도록 자동화해야 합니다. 이 경우 다른 멤버십 기준을 기반으로 하는 정책이 더 효과적일 수 있습니다. VM 이름(정규 표현식 포함), 세그먼트, 세그먼트 포트와 같은 다른 동적 멤버십 옵션을 사용할 수 있습니다. 그룹 멤버십 기준에 대한 자세한 내용은 그룹 추가를 참조하세요.
  4. 보안 > 분산형 방화벽으로 이동합니다. Anthos라는 이름의 섹션을 만듭니다.

  5. 오른쪽 상단의 톱니바퀴 아이콘을 클릭하고 스테이트풀(Stateful) 스위치를 아니요로 전환합니다.

  6. 규칙을 섹션에 추가합니다. 다음과 같은 대칭 규칙을 최소 2개 이상 추가하는 것이 좋습니다.

    Source: Seesaw Group, Destination: Any, Applied to: Seesaw Group
    Source: Any, Destination: Seesaw Group, Applied to: Seesaw Group
    

  7. 변경사항을 게시하고 작업을 확인합니다.

동일한 트래픽을 스테이트풀(Stateful) 방식으로 허용하여 스테이트리스(Stateless) 규칙을 마스킹할 수 있는 다른 섹션보다 스테이트리스(Stateless) 섹션이 우선하도록 NSX DFW 테이블에 배치되어야 합니다. 스테이트리스(Stateless) 섹션이 가장 구체적이어야 하며 잠재적으로 중복될 수 있는 다른 정책보다 우선해야 합니다.

필수는 아니지만 세그먼트 태그와 같은 대략적인 멤버십 기준을 사용하여 모든 Anthos VM을 포함하는 그룹을 만들 수 있습니다. 즉, 특정 NSX 네트워크에 연결된 모든 VM이 그룹에 포함됩니다. 그런 다음 이 그룹을 스테이트리스(Stateless) 정책에서 사용할 수 있습니다.

옵션 2 -- 분산형 방화벽 제외 목록에 Seesaw VM 추가

이 옵션을 사용하면 NSX DFW를 사용 중지하지 않고도 VM을 분산 방화벽 검사에서 완전히 제외할 수 있습니다. 방화벽 제외 목록 관리를 참조하세요.

  1. 보안 > 분산형 방화벽으로 이동합니다. 작업 > 제외 목록을 선택합니다.

  2. Seesaw 그룹 또는 모든 Anthos VM이 포함된 그룹을 선택합니다.

문제 해결

Seesaw VM에 SSH로 연결

경우에 따라 문제 해결 또는 디버깅을 위해 Seesaw VM에 SSH로 연결해야 할 수 있습니다.

SSH 키 가져오기

클러스터를 이미 만든 경우 다음 단계에 따라 SSH 키를 가져옵니다.

  1. 클러스터에서 seesaw-ssh 보안 비밀을 가져옵니다. 보안 비밀에서 SSH 키를 가져와 base64로 디코딩합니다. 디코딩된 키를 임시 파일에 저장합니다.

    kubectl --kubeconfig CLUSTER_KUBECONFIG get -n  kube-system secret seesaw-ssh -o \
    jsonpath='{@.data.seesaw_ssh}' | base64 -d | base64 -d > /tmp/seesaw-ssh-key
    

    CLUSTER_KUBECONFIG를 클러스터 kubeconfig 파일의 경로로 바꿉니다.

  2. 키 파일에 대한 적절한 권한을 설정합니다.

    chmod 0600 /tmp/seesaw-ssh-key

    클러스터를 아직 만들지 않았으면 다음 단계에 따라 SSH 키를 가져옵니다.

  3. 이름이 seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml인 파일을 찾습니다.

    이 파일은 그룹 파일이라고 하며 config.yaml 옆에 있습니다.

    또한 gkectl create loadbalancer는 그룹 파일의 위치를 출력합니다.

  4. 파일에서 credentials.ssh.privateKey 값을 가져와 base64로 디코딩합니다. 디코딩된 키를 임시 파일에 저장합니다.

    cat seesaw-for-CLUSTER_NAME-IDENTIFIER.yaml  | grep privatekey | sed 's/    privatekey: //g' \
    | base64 -d > /tmp/seesaw-ssh-key
    
  5. 키 파일에 대한 적절한 권한을 설정합니다.

    chmod 0600 /tmp/seesaw-ssh-key
    

이제 Seesaw VM에 SSH로 연결할 수 있습니다.

ssh -i /tmp/seesaw-ssh-key ubuntu@SEESAW_IP

SEESAW_IP를 Seesaw VM의 IP 주소로 바꿉니다.

스냅샷 가져오기

--scenario 플래그와 함께 gkectl diagnose snapshot 명령어를 사용하여 Seesaw VM의 스냅샷을 캡처할 수 있습니다.

--scenarioall 또는 all-with-logs로 설정하면 Seesaw 스냅샷이 다른 스냅샷과 함께 결과에 포함됩니다.

--scenarioseesaw로 설정하면 결과에 Seesaw 스냅샷만 포함됩니다.

예를 들면 다음과 같습니다.

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --scenario seesaw

gkectl diagnose snapshot --kubeconfig ADMIN_CLUSTER_KUBECONFIG --cluster-name CLUSTER_NAME --scenario seesaw

gkectl diagnose snapshot --seesaw-group-file GROUP_FILE --scenario seesaw

다음을 바꿉니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

  • GROUP_FILE: 클러스터의 그룹 파일 경로입니다.

손상된 상태에서 Seesaw VM 다시 만들기

Seesaw VM이 실수로 삭제된 경우 gkectl upgrade loadbalancer 명령어를 --no-diff--force 플래그와 함께 사용하여 VM을 다시 만들 수 있습니다. 이렇게 하면 존재 여부나 상태와 관계없이 클러스터의 모든 Seesaw VM이 다시 생성됩니다. 부하 분산기가 HA 모드이고 VM 두 개 중 하나만 삭제되는 경우 이 명령어를 실행하면 두 VM이 다시 생성됩니다.

예를 들어 관리자 클러스터에서 Seesaw 부하 분산기를 다시 만들려면 다음 명령어를 실행합니다.

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config ADMIN_CLUSTER_CONFIG --admin-cluster --no-diff --force

사용자 클러스터에서 Seesaw 부하 분산기를 다시 만들려면 다음 명령어를 실행합니다.

gkectl upgrade loadbalancer --kubeconfig ADMIN_CLUSTER_KUBECONFIG \
    --config USER_CLUSTER_CONFIG --no-diff --force

다음을 바꿉니다.

  • ADMIN_CLUSTER_KUBECONFIG: 관리자 클러스터 kubeconfig 파일의 경로입니다.

  • ADMIN_CLUSTER_CONFIG: 관리자 클러스터 구성 파일의 경로입니다.

  • USER_CLUSTER_CONFIG: 사용자 클러스터 구성 파일의 경로입니다.

알려진 문제

Cisco ACI가 직접 서버 반환(DSR)에서 작동하지 않음

Seesaw는 DSR 모드에서 실행되며 기본적으로 데이터 영역 IP 학습 때문에 Cisco ACI에서 작동하지 않습니다. 애플리케이션 엔드포인트 그룹을 사용하여 해결할 수 있는 방법은 여기에서 확인할 수 있습니다.

Citrix Netscaler가 직접 서버 반환(DSR)에서 작동하지 않음

Seesaw 앞에서 Netscaler 부하 분산기를 실행하는 경우 MAC 기반 전달(MBF)을 사용 중지해야 합니다. Citrix 문서를 참조하세요.

경우에 따라 Seesaw 부하 분산기 업그레이드가 작동하지 않음

1.8.0에서 클러스터를 업그레이드하거나 gkectl upgrade loadbalancer를 사용하여 버전 1.8.0에서 Seesaw 부하 분산기의 일부 매개변수를 업데이트하면 DHCP 또는 IPAM 모드에서 작동하지 않습니다. 업그레이드하기 전에 향후 버전에서 문제가 해결될 때까지 기다려 주세요.