서비스 엔진(Service Engine) 오토스케일(autoscale)

개요

Avi 서비스 엔진(Service Engine)은 애플리케이션 전송 작업을 수행하는 동안 CPU, 메모리 또는 pps 리소스가 소진될 수 있습니다. 로드 밸런싱된 가상 서비스의 용량을 늘리려면 Avi Vantage에서 가상 서비스 전용 리소스를 늘려야 합니다. Avi 컨트롤러는 가상 서비스를 사용되지 않는 서비스 엔진으로 마이그레이션하거나, 가상 서비스를 여러 SE로 확장하여 훨씬 더 큰 용량을 제공할 수 있습니다. 따라서 여러 활성 SE가 단일 가상 서비스의 워크로드를 동시에 공유할 수 있습니다.

Aviantage 데이터 평면 스케일링 방법

AviVantage는 데이터 평면 성능을 확장하는 세 가지 기술을 지원합니다.

  • 개별 SE 성능의 수직 확장
  • 그룹 내 SE의 기본 수평 스케일링
  • 그룹 내 SE의 BGP 기반 수평 확장

수직 확장에서는 SE를 실행하는 가상 시스템에 할당된 리소스가 수동으로 증가하므로 VM을 재부팅해야 합니다. 이 확장 기능은 단일 VM의 물리적 제한에 의해 제한됩니다. 예를 들어 SE는 물리적 호스트에 포함된 리소스보다 더 많은 리소스를 소비할 수 없습니다.

수평적 확장에서는 가상 서비스가 추가 서비스 엔진에 배치됩니다. 가상 서비스가 배치되는 첫 번째 SE를 기본(primary) SE라고 하며 모든 추가 SE를 가상 서비스의 보조(secondary) SE라고 합니다.

기본 확장 기능을 사용하면 기본 SE가 가상 서비스에 대한 모든 연결을 수신하여 모든 보조 SE에 분산됩니다. 따라서 모든 가상 서비스 트래픽이 기본 SE를 통해 라우팅됩니다. 어느 시점에서는 기본 SE의 패킷 처리 용량이 병목 현상을 일으킬 수 있습니다. 보조 SE는 용량이 있을 수 있지만 기본 SE는 해당 용량을 활용할 수 있는 충분한 트래픽을 전달할 수 없습니다. 따라서, 1차 SE의 패킷 처리 용량은 네이티브 확장의 효과를 결정합니다.

예를 들어 가상 서비스를 4개의 SE(즉, 1개의 기본 SE와 3개의 보조 SE)로 확장할 경우 기본 SE의 패킷 처리 용량이 병목 현상을 일으키면, 가상 서비스를 5번째 서비스 엔진으로 확장할 경우 얻을 수 있는 이점은 미미합니다.

Avi Vantage는 네이티브 확장 제한인 4개의 서비스 엔진을 초과하여 확장할 수 있도록 BGP 기반 수평 확장을 지원합니다. 이 방법은 로드 밸런싱 인프라를 확장하기 위해 필요한 수동 개입과 RHI 및 ECMP에 의존합니다. 자세한 내용은 BGP Support for Scaling Virtual Services을 참조하십시오.

두 수평 방법은 조합하여 사용할 수 있습니다. 네이티브 확장에는 첫 번째 SE를 변경할 필요가 없으며, 로드를 추가 SE로 분산해야 합니다. 용량 확장에는 네트워크 또는 애플리케이션 내에서 변경이 필요하지 않습니다.

네이티브 서비스 엔진 확장

스케일 아웃(Scaling out)

정상적인 정상 상태에서는 모든 트래픽이 단일 SE에 의해 처리될 수 있습니다. 이 SE의 MAC 주소는 모든 Address Resolution Protocol (ARP) 요청에 응답합니다.

  • 트래픽이 단일 SE 용량을 초과하여 증가하면 Avi 컨트롤러가 가상 서비스에 하나 이상의 새 SE를 추가할 수 있습니다. 이러한 새 SE는 다른 가상 서비스 트래픽을 처리하고 있거나 이 작업을 위해 새로 생성되었을 수 있습니다. 기존 SE는 몇 초 내에 추가할 수 있지만, 새 SE VM을 인스턴스화하는 데는 SE 이미지를 VM의 호스트에 복사하는 데 필요한 시간에 따라 최대 몇 분 정도 걸릴 수 있습니다.
  • 네트워킹 및 구성 동기화에 대해 새 SE가 구성되면 기본 SE로 알려진 첫 번째 SE가 인바운드 클라이언트 트래픽의 백분율을 새 SE에 전달하기 시작합니다. 패킷은 클라이언트에서 기본 SE의 MAC 주소로 흐른 다음(2계층) 새 SE의 MAC 주소로 전달됩니다. 이 보조 SE는 전송 제어 프로토콜(TCP) 연결을 종료하고 연결 및/또는 요청을 처리한 다음 선택한 대상 서버로 연결/요청을 로드 밸런싱합니다.
  • 보조 SE는 선택한 서버로 흐름을 로드 밸런싱할 때 자체 IP 주소에서 트래픽을 NAT에 소싱합니다. 서버는 연결의 소스 IP(SE)에 다시 응답하여 서버에서 연결을 소유하는 SE로의 대칭 반환 경로를 보장합니다.
  • Nuage 환경을 사용하는 VMware, Docker, 베어 메탈, Amazon Web Services 및 OpenStack의 경우 보조 SE는 위의 그림에 파란색 화살표로 표시된 대로 패킷을 원래 클라이언트로 직접 전달합니다. 그러나 표준 Neutron을 사용하는 OpenStack의 경우 이러한 동작은 보안 위반입니다. 이를 방지하려면 포트 보안을 사용하는 것이 좋습니다. 이에 대한 자세한 내용과 권장 방법은 Neutron ML2 Plugin을 참조하십시오.
  • SE가 클라이언트로 응답을 라우팅하는 방식을 관리자가 직접 제어하려면 아래 나온 것처럼 CLI(또는 REST API)를 사용하여 se_tunnel_mode 설정을 제어할 수 있습니다.
>configure serviceenginegroup Default-Group
>serviceenginegroup> se_tunnel_mode 1
>serviceenginegroup> save

터널 모드 값은 다음과 같습니다.

  • 0(기본값) — 고객 환경에 따라 자동 설정
  • 1 — 터널 모드 사용
  • 2 — 터널 모드 사용 안 함

SE를 재부팅해야 터널 모드 설정이 적용됩니다. 이것은 세계적인 변화이다.

>reboot serviceengine

스케일 인(Scaling In)

이 모드에서는 Avi Vantage가 로드 밸런서를 통해 용량을 즉시 늘리거나 축소할 수 있습니다.

트래픽을 축소하기 위해 Avi Vantage는 프로세스를 반대로 적용하여 기본적으로 보조 SE가 활성 연결 시간을 30초 초과하도록 허용합니다. 이 기간이 끝나면 보조 연결이 종료됩니다. 이제 이러한 연결에 대한 후속 패킷은 기본 SE에서 처리되거나 가상 서비스가 3개 이상의 SE로 배포된 경우 나머지 SE에 대한 연결이 해시될 수 있습니다. 이 시간 초과는 다음 CLI 명령을 사용하여 변경할 수 있습니다 : vs_scalein_tmeout seconds

분포(Distribution)

여러 서비스 엔진에 걸쳐 확장할 경우 로드 비율이 완전히 동일하지 않을 수 있습니다. 예를 들어 기본 SE는 새 연결을 처리할 SE를 결정하기 위해 로드 밸런싱 결정을 내린 다음 수신 패킷을 전달해야 합니다. 따라서 보조 SE보다 워크로드가 높기 때문에 보조 SE보다 연결 비율이 적을 수 있습니다. 기본 설정은 사용 가능한 CPU를 기반으로 적격 SE의 트래픽 비율을 자동으로 조정합니다.

사용 사례 시나리오

확장 사용 사례

확장되지 않은 가상 서비스는 클라이언트와 Avi Vantage, 서버 간에 최적의 패킷 경로를 제공합니다. SE를 확장하면 일부 트래픽(특히 보조 SE로 푸시된 트래픽)에 수신 패킷을 위한 홉이 추가될 수 있습니다. 스케일링은 다음과 같은 사용 사례에 적합합니다.

  • 클라이언트/서버 앱, HTTP 또는 비디오 스트리밍 프로토콜과 같이 송신 트래픽을 최소화하고 더 많은 송신 트래픽을 포함하는 트래픽입니다. 예를 들어 SE는 단일 10Gbps NIC가 있는 호스트에 존재할 수 있습니다. 확장되는 동안에도 가상 서비스는 클라이언트에 30Gbps의 트래픽을 제공할 수 있습니다.
  • 압축 또는 SSL(Secure Sockets Layer)/TLS(Transport Layer Security)와 같이 상당한 CPU 리소스를 소비하는 프로토콜 또는 가상 서비스 기능입니다.
  • 단일 SE의 메모리를 초과하는 동시 연결 수입니다.

다음 사용 사례에서는 스케일링이 제대로 작동하지 않습니다.

  • 단일 SE(특히 기본 가상 시스템)의 네트워크 또는 초당 패킷 용량을 초과하는 상당한 클라이언트 업로드가 수반되는 트래픽입니다. 모든 수신 패킷은 기본 SE를 통과하므로 확장에 큰 도움이 되지 않을 수 있습니다. 초당 패킷 제한은 원하는 플랫폼 또는 하이퍼바이저에 대한 설명서를 참조하십시오.

기존 연결에 미치는 영향

새 연결만 다른 SE로 확장할 수 있으므로 기존 연결은 스케일아웃의 영향을 받지 않습니다. 축소 시 보조 SE의 연결을 완료하는 데 30초가 주어진 다음 보조 SE에 의해 종료됩니다. 이러한 연결은 가상 서비스의 중요 로그에 플래그가 지정됩니다. 연결 또는 클라이언트의 후속 패킷은 기본 SE를 통해 다시 로드 밸런싱될 수 있습니다.

보조 SE 오류

보조 SE에 장애가 발생하면 기본 SE는 장애를 빠르게 감지하고 가상 서비스를 처리하는 나머지 SE에 후속 패킷을 전달합니다. 선택한 고가용성 모드에 따라 용량 공백을 메우기 위해 새 SE가 그룹에 자동으로 추가될 수도 있습니다. 연결 증가 외에도 다른 SE로의 트래픽은 영향을 받지 않습니다.

1차 SE 장애

기본 SE가 실패하면 보조 SE 중에서 새 기본 SE가 자동으로 선택됩니다. 비스케일 페일오버 이벤트와 마찬가지로 새 기본 ARP는 가상 서비스 IP 주소에 대해 불필요한 ARP를 보급합니다. 가상 서비스에서 소스 IP 지속성을 사용하는 경우 새로 승격된 기본에는 지속성 테이블의 미러링된 복사본이 있습니다. 쿠키 및 보안 HTTPS와 같은 다른 지속성 방법은 클라이언트에 의해 유지되므로 미러링이 필요하지 않습니다. 이전에 새로 승격된 기본 SE에 위임된 TCP 및 UDP 연결의 경우 연결이 정상적으로 계속되지만 이제 이러한 패킷으로 인해 기본에서 보조로 추가 홉이 발생할 필요가 없습니다.

장애가 발생한 기본 SE 또는 다른 보조 SE가 소유했던 연결의 경우 새 기본은 연결 테이블에서 매핑을 재구성해야 합니다. 비SYN 패킷이 새 기본 패킷에 의해 수신되면 나머지 SE가 연결을 처리했는지 쿼리합니다. 연결 흐름이 있는 경우 동일한 SE로 다시 설정됩니다. SE가 흐름을 처리했음을 알리지 않는 경우 흐름은 실패한 기본값이 소유했다고 가정합니다. TCP의 경우 연결이 재설정되거나 UDP의 경우 나머지 SE로 로드 밸런싱됩니다.

HA 모드 관련

확장성은 고가용성(HA)과 다르지만, 이 두 가지는 밀접하게 얽혀 있습니다. 확장된 가상 서비스는 그룹의 단일 SE에 장애가 발생할 경우 성능 저하를 겪지 않습니다. 기존 HA 활성/대기 모드(2-SE 구성)는 확장을 지원하지 않습니다. 대신, 서비스 연속성은 나머지 SE에 초기화된 대기 가상 서비스가 존재하느냐에 따라 달라집니다. 이 명령은 한 번의 명령으로 대신할 수 있습니다.

Avi Vantage의 기본 HA 모드는 elastic HA N+M 모드이며, 이 모드는 단일 SE의 비확장 모드에서 SE 그룹에 대한 각 가상 서비스를 시작합니다. 이러한 구성에서 확장되지 않은 가상 서비스를 실행하는 SE의 장애는 컨트롤러가 영향을 받는 가상 서비스를 예비 SE 용량에 배치하는 짧은 서비스 중단을 초래합니다. 반대로 N+M 그룹에서 두 개 이상의 SE로 확장한 가상 서비스의 경우 운영 중단이 발생하지 않고 성능 저하가 발생할 수 있습니다.

자동 확장과 수동 확장 비교

마이그레이션

확장 외에도 가상 서비스를 다른 SE로 마이그레이션할 수도 있습니다. 예를 들어 활용도가 낮은 여러 SE를 단일 SE로 통합할 수 있습니다. 또는 사용 중인 두 개의 가상 서비스가 있는 단일 SE는 하나의 가상 서비스를 자체 SE로 마이그레이션할 수 있습니다. 추가 용량이 필요한 경우에도 추가 SE로 가상 서비스를 확장할 수 있습니다. 마이그레이션 프로세스는 확장과 유사하게 동작합니다. 새 SE가 기존 가상 서비스에 보조로 추가됩니다. 잠시 후 Avi 컨트롤러가 보조 시스템을 기본으로 승격합니다. 이제 새 SE가 모든 새 연결을 처리하여 이전 연결을 현재 보조 SE로 전달합니다. 30초 후에 이전 SE가 나머지 연결을 종료하고 가상 서비스 구성에서 제거됩니다.

수동 스케일링

스케일링 기본값은 수동입니다. 이 값은 SE별로 자동 확장으로 변경될 수 있으며, 이를 통해 Avi 컨트롤러는 가상 서비스를 확장하거나 마이그레이션할 시기를 결정할 수 있습니다. 기본적으로 Avi Vantage는 SE CPU가 평균 80%를 초과하면 가상 서비스를 확장하거나 마이그레이션할 수 있습니다. SE CPU가 30% 미만인 경우 가상 서비스가 마이그레이션되거나 확장됩니다. 컨트롤러는 5분 간격으로 SE 그룹을 검사합니다. 5분 간격의 마지막 30초가 최대 설정보다 크거나 최소 설정보다 작으면 컨트롤러가 SE 간에 가상 서비스의 균형을 재조정하는 작업을 수행할 수 있습니다. 컨트롤러는 5분 동안 보류 중인 변경 사항을 하나만 시작하거나 허용합니다. 스케일인, 스케일아웃 또는 가상 서비스 마이그레이션일 수 있습니다.

자동화된 확장 및 마이그레이션 시나리오의 예:

  • SE에 단일 가상 서비스가 있고 SE가 80% 임계값을 초과하면 가상 서비스가 확장됩니다.
  • 가상 서비스별 SE 소비 비율은 5분 간격으로 PPS (packets per second)를 비교하여 결정됩니다. SE가 80% CPU 임계값을 초과하고 한 가상 서비스에서 SE에 대해 70% 이상의 PPS를 생성하는 경우 이 가상 서비스가 확장됩니다. 그러나 SE CPU가 80%를 초과하고 있고 SE PPS의 70%를 초과하는 단일 가상 서비스가 없는 경우 컨트롤러가 가상 서비스를 다른 SE로 마이그레이션하도록 선택합니다. 리소스를 가장 많이 사용하는 가상 서비스는 마이그레이션하도록 선택될 가능성이 높습니다.
  • 두 개의 가상 서비스가 SE에 있고 각각이 SE CPU의 45%를 소비하는 경우, 즉 둘 다 70% PPS 규칙을 위반하지 않는 경우 하나의 가상 서비스가 새 SE로 마이그레이션됩니다.

자동 균형 조정 구성

자동 재조정 기능은 서비스 엔진의 로드가 구성된 임계값을 초과하거나 초과했을 때 가상 서비스를 자동으로 마이그레이션하거나 축소하는 데 도움이 됩니다.

자세한 내용은 How to Configure Auto-rebalance Using Avi CLI을 참조하십시오.

출처 : https://avinetworks.com/docs/20.1/autoscale-service-engines/
답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

You May Also Like
Read More

Avi Kubernetes Operator(AKO)

개요 OpenShift/Kubernetes와의 Avi Vantage 플랫폼 통합은 Avi Kubernetes Operator(AKO)라고 하는 새로운 오퍼레이터를 포함하는 재설계된 아키텍처를 제공합니다. 다음 그림에서는…