Comment fonctionne le serveur d'architecture Azure ARM ?

API7.ai

August 8, 2022

Ecosystem

Contexte

En avril, Microsoft a annoncé une prévisualisation de sa famille de machines virtuelles Azure basées sur les processeurs Ampere® Altra® Arm. La nouvelle série de machines virtuelles comprend les machines virtuelles à usage général Dpsv5 et les machines virtuelles optimisées pour la mémoire Epsv5. Pour plus de détails, reportez-vous à la figure suivante :

Azure VM

Il est à noter qu'Ampere® Altra® Arm est un processeur natif pour le cloud, et les machines virtuelles Azure basées sur les processeurs Ampere® Altra® Arm peuvent donc exécuter des applications cloud natives de manière efficace.

Alors, quelle est l'expérience et la performance réelles ? Prenons l'exemple d'une passerelle API cloud native pour vous montrer les performances d'une machine virtuelle Azure basée sur l'architecture Arm. Ici, nous choisissons Apache APISIX pour l'installation et les tests dans l'environnement de la série de machines virtuelles à usage général Dpdsv5.

Apache APISIX est une passerelle API cloud native, haute performance et évolutive. Basée sur NGNIX + LuaJIT et etcd, APISIX possède des caractéristiques de routage dynamique et de rechargement à chaud des plugins par rapport aux passerelles API traditionnelles, ce qui la rend particulièrement adaptée à la gestion des API dans une architecture cloud native.

Architecture Apache APISIX

Préparation préliminaire

Tout d'abord, vous devez démarrer une instance de la série Dpdsv5 sur Azure et choisir Ubuntu 20.04 comme système d'exploitation.

Azure Dpdsv5

Ensuite, installez Docker pour faciliter l'utilisation ultérieure de méthodes conteneurisées pour installer et déployer Apache APISIX.

sudo apt-get update && sudo apt-get install docker.io

Déployer Apache APISIX

Apache APISIX utilise etcd comme centre de configuration, vous devez donc d'abord démarrer une instance 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

Ensuite, démarrez une instance d'Apache APISIX.

sudo docker run --net=host -d apache/apisix:2.14.1-alpine

Créez des routes.

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
        }
    }
}'

Accédez au test.

curl -i http://127.0.0.1:9080/anything/das

L'installation est réussie si les résultats suivants sont retournés :

HTTP/1.1 200 OK
.....

Azure Ddsv5 vs Azure Dpdsv5

À partir des opérations ci-dessus, l'installation et le test de compatibilité d'Apache APISIX sur Azure Dpdsv5 peuvent être réalisés avec succès. Mais quelle est la performance réelle d'Azure Dpdsv5 ? Ensuite, nous utiliserons Apache APISIX pour effectuer des tests de performance comparatifs sur Azure Dpdsv5 et Azure Ddsv5 pour voir leurs performances réelles.

Azure Ddsv5 est un autre modèle de la série D d'Azure, qui est basé sur l'architecture Intel® x86, donc les étapes d'installation d'etcd ci-dessus sont légèrement différentes :

sudo docker run -d --name etcd
    -p 2379:2379
    -e ETCD_LISTEN_CLIENT_URLS=http://0.0.0.0:2379
    -e ALLOW_NONE_AUTHENTICATION=yes
    -e ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379
    bitnami/etcd:3.4.16

Single upstream + no plugin

Utilisez un seul upstream, sans aucun plugin. Cela teste principalement la performance d'APISIX en mode de proxy pur vers l'origine.

# apisix: 1 worker + 1 upstream + no plugin
# create 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
        }
    }
}'

Single upstream + two plugins

Utilisez un seul upstream, avec deux plugins. Cela teste principalement la performance d'APISIX lorsque les deux plugins consommateurs de performance, limit-count et prometheus, sont activés.

# apisix: 1 worker + 1 upstream + 2 plugins (limit-count + prometheus)
# create 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
        }
    }
}'

Comparaison des données

Dans les deux scénarios ci-dessus, des tests et des comparaisons ont été effectués à partir des deux niveaux de QPS (requêtes par seconde) et de temps de latence. Le résultat est le suivant :

  1. Comparaison QPS

    QPS

  2. Comparaison de la latence

    Latence

| | Single upstream + no plugin | Single upstream + two plugins | | ------------------ | --------------------------- | ----------------------------- | --------------- | ---------------- | | | Azure Ddsv5 | Azure Dpdsv5 | Azure Ddsv5 | Azure Dpdsv5 | | QPS(request/s) | 14900 | 13400 | 13100 | 11000 | | Latency(ms) | 1.07 | 1.21 | 1.21 | 1.43 |

On peut également voir à partir des données ci-dessus que dans les scénarios de calcul intensif en IO réseau comme les passerelles API, Dpdsv5 présente encore un écart de performance par rapport à la même série Ddsv5. Mais une autre bonne nouvelle est que le prix de Dpdsv5 est environ 20 % moins cher que celui de Ddsv5 pour la même configuration. Dans le choix réel des machines, les utilisateurs peuvent prendre des décisions flexibles en fonction de leur volume d'activité.

Résumé

Cet article utilise principalement Apache APISIX pour comparer les performances d'Azure Ddsv5 et d'Azure Dpdsv5. On peut voir que dans les scénarios de calcul intensif en IO réseau comme les passerelles API, Azure Dpdsv5 n'est pas aussi performant que Ddsv5, mais comme cette série de modèles est encore en prévisualisation, Microsoft apporte des améliorations et des optimisations continues. Nous attendons avec impatience la suite.

Référence

Now in preview: Azure Virtual Machines with Ampere Altra Arm-based processors

Tags: