AWS Graviton3에서 API Gateway Apache APISIX 설치 및 성능 테스트
Apache APISIX has carried out regression tests under the ARM64 platform, and fixed some compatibility issues of the build scripts under the ARM64 platform. Through a brief deployment test description, this article shows that in the AWS Graviton environment, both in terms of stability and traffic processing, APISIX's performance is very dazzling.
배경
AWS는 2022년 5월 말에 최신 ARM 기반 AWS Graviton 프로세서 제품군AWS Graviton3을 출시했습니다. AWS 공식 데이터에 따르면 선도적인 DDR5 메모리 기술을 기반으로 하는 Graviton2 프로세서와 비교할 때 Graviton3 프로세서는 최대 25%의 성능 향상, 최대 2배의 부동 소수점 성능 및 50% 더 빠른 메모리 액세스 속도를 제공할 수 있습니다. Graviton3은 또한 동일한 유형의 동일한 EC2 인스턴스에서 60% 더 적은 에너지를 사용합니다.
그렇다면 실제 데이터는 어떨까요? CPU를 많이 사용하는 API 게이트웨이를 예로 들어 AWS Graviton3의 성능을 살펴보겠습니다. 여기서는 Apache APISIX를 사용하여 AWS Graviton2(C6g) 및 AWS Graviton3(C7g) 서버 환경에서 성능 비교 테스트를 수행합니다.
Apache APISIX은 확장 가능한 클라우드 네이티브 고성능 API 게이트웨이입니다. NGNIX+Lua JIT 및 etcd를 기반으로 기존 API 게이트웨이와 비교하여 APISIX에는 동적 라우팅 및 플러그인 핫 로딩 기능이 있어 클라우드 네이티브 아키텍처에서 API 관리에 특히 적합합니다.
설치 및 배포
ARM64 칩이 있는 서버를 준비합니다. 여기서는 Amazon EC2 C7g(현재 이 모델에만 AWS Graviton3가 있음)를 선택하고 운영 체제는 Ubuntu 20.04를 선택합니다.
Docker를 설치하는 것을 잊지 마세요.
sudo apt-get update && sudo apt-get install docker.io
Apache APISIX는 Docker를 사용하여 클릭 한 번으로 배포할 수 있는 ARM64 이미지의 최신 버전을 출시했습니다. 자세한 과정은 아래에서 확인하실 수 있습니다.
1. etcd 시작
sudo docker run -d \--name etcd -p 2379:2379 -e ETCD_UNSUPPORTED_ARCH=arm64 \-e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379 \-e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 \rancher/coreos-etcd:v3.4.16-arm64
2.APISIX 시작
sudo docker run --net=host -d apache/apisix:2.14.1-alpine
3.경로 등록
curl "http://127.0.0.1:9080/apisix/admin/routes/1" \-H "X-API-KEY: edd1c9f034335f136f87ad84b625c8f1" -X PUT -d '{ "uri": "/anything/*", "upstream": { "type": "roundrobin", "nodes": { "httpbin.org:80": 1 } }}'
4.테스트
curl -i http://127.0.0.1:9080/anything/das
HTTP/1.1 200 OK
.....
AWS Graviton2와 AWS Graviton3의 성능 비교
이전 작업에 따르면 공식script을 기반으로 AWS Graviton3 프로세서에서 APISIX의 설치 및 호환성 테스트가 성공적으로 완료되었습니다. AWS Graviton2(C6g) 및 AWS Graviton3(C7g)에서 Apache APISIX의 성능을 살펴보겠습니다.
단순화를 위해 이 테스트에서는 APISIX에서 하나의 Worker만 활성화했으며 다음 성능 테스트 데이터는 모두 단일 코어 CPU에서 실행됩니다.
시나리오 1: 단일 업스트림
플러그인 없이 단일 업스트림을 사용합니다. 주로 Pure Proxy Back-to-Origin 모드에서 APISIX의 성능을 테스트합니다.
# apisix: 1 worker + 1 upstream + no plugin
# register route
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
시나리오 2: 단일 업스트림 + 두 개의 플러그인
하나의 업스트림, 두 개의 플러그인을 사용합니다. 주로 성능을 많이 소모하는 두 가지 핵심 플러그인인 limit-count와 prometheus를 활성화한 상태에서 APISIX의 성능을 테스트합니다.
# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus)
# register route
curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -d '
{
"uri": "/hello",
"plugins": {
"limit-count": {
"count": 2000000000000,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr"
},
"prometheus": {}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"127.0.0.1:1980":1
}
}
}'
데이터 비교
위의 두 가지 시나리오에서 요청 처리 및 지연 시간의 두 가지 수준에서 관련 테스트 및 비교를 수행했습니다. 결과는 다음과 같습니다.
단일 업스트림
단일 업스트림 + 플러그인 2개
AWS 그래비톤2
AWS 그래비톤3
AWS 그래비톤2
AWS 그래비톤3
QPS(요청/초)
13000
23000 (76% 증가)
11000
18000 (63% 증가)
대기 시간(밀리초)
1.11
0.68 (38% 감소)
1.39
0.88 (37% 감소)
또한 위의 데이터에서 API Gateway와 같은 CPU 집약적 컴퓨팅 시나리오에서 AWS Graviton3가 AWS Graviton2에 비해 성능을 76% 향상시키고 대기 시간을 38% 줄인다는 것을 알 수 있습니다. 이 데이터는 처음에 언급한 AWS의 공식 데이터보다 훨씬 좋습니다(25% 성능 향상).
요약하다
이 기사는 주로 Apache APISIX를 사용하여 AWS Graviton3와 AWS Graviton2의 성능을 비교합니다. API 게이트웨이의 CPU 집약적 컴퓨팅 시나리오에서 AWS Graviton3는 성능 괴물의 속성을 보여주고 있다고 볼 수 있습니다. 물론 연습도 많이 하시고, 앞으로 컴퓨팅 집약적인 프로젝트를 위한 더 많은 테스트 데이터를 기대해 보시는 것도 추천드립니다.
Reference
이 문제에 관하여(AWS Graviton3에서 API Gateway Apache APISIX 설치 및 성능 테스트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/aws/installation-and-performance-testing-of-api-gateway-apache-apisix-on-aws-graviton3-2dc4텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)