Surveillance et redimensionnement automatique de FSX pour ONTAP à l’aide de la fonction Lambda d’AWS
Contributeurs
Auteur(s): Dhruv Tyagi, Niyaz Mohamed
Présentation : surveillance et redimensionnement automatique de FSX pour ONTAP via la fonction Lambda d’AWS
FSX pour ONTAP est un service de stockage cloud haute performance disponible sur AWS qui fournit un stockage de fichiers extrêmement fiable, évolutif, haute performance et riche en fonctionnalités basé sur le célèbre système de fichiers NetApp ONTAP.
FSX pour ONTAP offre une expérience de déploiement et de gestion fluide. Aucune expertise en stockage n’est requise pour commencer. Pour simplifier la surveillance, il est possible d’utiliser une fonction Lambda d’AWS (qui automatise le redimensionnement de la capacité de stockage totale, de la taille du volume ou de la taille de LUN en fonction du seuil). Ce document fournit un guide étape par étape pour créer une configuration automatisée qui surveille FSX for ONTAP à intervalles réguliers, notifie et redimensionne lorsqu’un seuil spécifié par l’utilisateur est dépassé et informe l’administrateur de l’activité de redimensionnement.
Caractéristiques
La solution offre les fonctionnalités suivantes :
-
Possibilité de surveiller :
-
Utilisation de la capacité de stockage globale de FSX for ONTAP
-
Utilisation de chaque volume (provisionnement fin/provisionnement lourd)
-
Utilisation de chaque LUN (provisionnement fin/provisionnement lourd)
-
-
Possibilité de redimensionner l’un des éléments ci-dessus lorsqu’un seuil défini par l’utilisateur est dépassé
-
Mécanisme d’alerte permettant de recevoir des avertissements d’utilisation et de redimensionner les notifications par e-mail
-
Possibilité de supprimer des snapshots plus anciens que le seuil défini par l’utilisateur
-
Possibilité d’obtenir la liste des volumes FlexClone et des snapshots associés
-
Possibilité de contrôler les contrôles à intervalles réguliers
-
Possibilité d’utiliser la solution avec ou sans accès à Internet
-
Possibilité de déploiement manuel ou à l’aide d’AWS CloudFormation Template
Conditions préalables
Avant de commencer, assurez-vous que les conditions préalables suivantes sont remplies :
-
FSX pour ONTAP est déployé
-
Sous-réseau privé avec connectivité à FSX pour ONTAP
-
Le mot de passe « fsxadmin » a été défini pour FSX for ONTAP
Architecture de haut niveau
-
La fonction Lambda d’AWS effectue des appels d’API vers FSX pour ONTAP pour récupérer et mettre à jour la taille de la capacité de stockage, des volumes et des LUN.
-
Mot de passe « fsxadmin » stocké sous forme de chaîne sécurisée dans le magasin de paramètres SSM d’AWS pour une couche de sécurité supplémentaire.
-
Les ingénieurs système AWS (simple Email Service) sont utilisés pour informer les utilisateurs finaux lorsqu’un événement de redimensionnement se produit.
-
Si vous déployez la solution dans un VPC sans accès Internet, les terminaux VPC pour AWS SSM, FSX et ses sont configurés pour permettre à Lambda d’accéder à ces services via le réseau interne AWS.
Déploiement de la solution
Déploiement automatisé
Details
Suivez cette série d’étapes pour terminer le déploiement automatisé de cette solution :
Étape 1 : cloner le référentiel GitHub
Cloner le référentiel GitHub sur votre système local :
git clone https://github.com/NetApp-Automation/fsxn-monitoring-auto-resizing.git
Étape 2 : configuration d’un compartiment AWS S3
-
Accédez à la console AWS > S3 et cliquez sur Create bucket. Créez le compartiment avec les paramètres par défaut.
-
Une fois dans le compartiment, cliquez sur Upload > Add Files et sélectionnez Paramiko.zip et Requests.zip dans le référentiel GitHub cloné de votre système.
Étape 3 : configuration SMTP des ses d’AWS (requise si aucun accès Internet n’est disponible)
Suivez cette étape si vous souhaitez déployer la solution sans accès à Internet (remarque : des coûts supplémentaires seront associés en raison de la configuration des terminaux VPC).
-
Accédez à la console AWS > AWS simple Email Service (ses) > Paramètres SMTP et cliquez sur Créer des informations d’identification SMTP
-
Entrez un nom d’utilisateur IAM ou laissez-le à sa valeur par défaut et cliquez sur Créer. Enregistrez le nom d’utilisateur et le mot de passe pour une utilisation ultérieure.
Ignorez cette étape si la configuration SMTP ses est déjà en place.
Étape 4 : déploiement d’AWS CloudFormation
-
Accédez à la console AWS > CloudFormation > Créer une pile > avec de nouvelles ressources (Standard).
Prepare template: Template is ready Specify template: Upload a template file Choose file: Browse to the cloned GitHub repo and select fsxn-monitoring-solution.yaml
Cliquez sur Suivant
-
Entrez les détails de la pile. Cliquez sur Suivant et cochez la case « Je reconnais qu’AWS CloudFormation peut créer des ressources IAM », puis cliquez sur Envoyer.
Si le VPC a-t-il accès à Internet ? Est défini sur Faux, « Nom d’utilisateur SMTP pour les se AWS » et « Mot de passe SMTP pour les se AWS » sont requis. Sinon, ils peuvent être laissés vides. -
Une fois le déploiement de CloudFormation lancé, l’ID d’e-mail mentionné dans l'« ID d’e-mail de l’expéditeur » est envoyé par e-mail pour lui demander d’autoriser l’utilisation de l’adresse e-mail avec les ingénieurs système d’AWS. Cliquez sur le lien pour vérifier l’adresse e-mail.
-
Une fois le déploiement de la pile CloudFormation terminé, en cas d’avertissements/notifications, un e-mail sera envoyé à l’ID du destinataire avec les détails de la notification.
Déploiement manuel
Details
Suivez la série d’étapes pour terminer le déploiement manuel de cette solution :
Étape 1 : cloner le référentiel GitHub
Cloner le référentiel GitHub sur votre système local :
git clone https://github.com/NetApp-Automation/fsxn-monitoring-auto-resizing.git
Étape 2 : configuration SMTP des ses d’AWS (requise si aucun accès Internet n’est disponible)
Suivez cette étape si vous souhaitez déployer la solution sans accès à Internet (remarque : des coûts supplémentaires seront associés en raison de la configuration des terminaux VPC).
-
Accédez à la console AWS > AWS simple Email Service (ses) > Paramètres SMTP et cliquez sur Créer des informations d’identification SMTP
-
Entrez un nom d’utilisateur IAM ou laissez-le à sa valeur par défaut et cliquez sur Créer. Enregistrez le nom d’utilisateur et le mot de passe pour une utilisation ultérieure.
Etape 3 : création d’un paramètre SSM pour le mot de passe fsxadmin
Accédez à la console AWS > Parameter Store et cliquez sur Create Parameter.
Name: <Any name/path for storing fsxadmin password> Tier: Standard Type: SecureString KMS key source: My current account KMS Key ID: <Use the default one selected> Value: <Enter the password for "fsxadmin" user configured on FSx for ONTAP>
Cliquer sur Créer paramètre.
Effectuez les mêmes étapes pour stocker le nom d’utilisateur smtp et le mot de passe smtp si vous déployez la solution sans accès à Internet. Sinon, ignorez l’ajout de ces 2 paramètres.
Étape 4 : Configuration du service de messagerie
Accédez à la console AWS > simple Email Service (ses) et cliquez sur Créer une identité.
Identity type: Email address Email address: <Enter an email address to be used for sending resizing notifications>
Cliquez sur Créer une identité
L’ID d’e-mail indiqué dans l’ID d’e-mail de l’expéditeur vous est envoyé par e-mail pour vous demander d’autoriser l’utilisation de cette adresse aux ingénieurs système d’AWS. Cliquez sur le lien pour vérifier l’adresse e-mail.
Étape 5 : configuration des terminaux VPC (requis si aucun accès Internet n’est disponible)
|
Nécessaire uniquement si déployé sans accès à Internet. Des coûts supplémentaires seront associés à la gestion des terminaux VPC. |
-
Accédez à la console AWS > VPC > Endpoint et cliquez sur Create Endpoint et entrez les détails suivants :
Name: <Any name for the vpc endpoint> Service category: AWS Services Services: com.amazonaws.<region>.fsx vpc: <select the vpc where lambda will be deployed> subnets: <select the subnets where lambda will be deployed> Security groups: <select the security group> Policy: <Either choose Full access or set your own custom policy>
Cliquez sur Créer un point final.
-
Suivez le même processus pour créer des points finaux ses et SSM VPC. Tous les paramètres restent les mêmes que ci-dessus, à l’exception des services qui correspondent respectivement à com.amazonaws.<region>.smtp et com.amazonaws.<region>.ssm.
Étape 6 : création et configuration de la fonction Lambda d’AWS
-
Accédez à la console AWS > AWS Lambda et cliquez sur Create Function dans la même région que FSX pour ONTAP
-
Utilisez le auteur à partir de zéro par défaut et mettez à jour les champs suivants :
Function name: <Any name of your choice> Runtime: Python 3.9 Architecture: x86_64 Permissions: Select "Create a new role with basic Lambda permissions" Advanced Settings: Enable VPC: Checked VPC: <Choose either the same VPC as FSx for ONTAP or a VPC that can access both FSx for ONTAP and the internet via a private subnet> Subnets: <Choose 2 private subnets which have NAT gateway attached pointing to public subnets with internet gateway and subnets that have internet access> Security Group: <Choose a Security Group>
Cliquez sur Créer fonction.
-
Faites défiler jusqu’à la section couches de la nouvelle fonction Lambda et cliquez sur Ajouter une couche.
-
Cliquez sur Créer un nouveau calque sous Source du calque
-
Créez 2 couches - 1 pour les demandes et 1 pour les fichiers Paramiko et upload Requests.zip et Paramiko.zip. Sélectionnez Python 3.9 comme runtime compatible et cliquez sur Create.
-
Retournez à AWS Lambda Ajouter un calque > couches personnalisées et ajoutez le calque paramiko et demandes l’un après l’autre.
-
Accédez à l’onglet Configuration de la fonction Lambda et cliquez sur Modifier sous Configuration générale. Définissez le délai d’attente sur 5 min et cliquez sur Enregistrer.
-
Accédez à l’onglet autorisations de la fonction Lambda et cliquez sur le rôle attribué. Dans l’onglet autorisations du rôle, cliquez sur Ajouter des autorisations > Créer une stratégie Inline.
-
Cliquez sur l’onglet JSON et collez le contenu du fichier policy.json à partir du référentiel GitHub.
-
Remplacez chaque occurrence de ${AWS::AccountId} par votre ID de compte et cliquez sur consulter la politique
-
Indiquez un nom pour la police et cliquez sur Créer une police
-
-
Copiez le contenu de fsxn_monitoring_resize_lambda.py du git repo vers lambda_function.py dans la section Source du code de fonction Lambda d’AWS.
-
Créez un nouveau fichier au même niveau que lambda_function.py et nommez-le vars.py et copiez le contenu de vars.py du git repo dans le fichier lambda Function vars.py. Mettez à jour les valeurs variables dans vars.py. Définissez les variables de référence ci-dessous et cliquez sur Deploy :
Nom
Type
Description
FsxMgmtIp
Chaîne
(Obligatoire) Entrez « terminal de gestion - adresse IP » dans la console FSX pour ONTAP sur AWS.
FsxId
Chaîne
(Obligatoire) Entrez l’ID du système de fichiers dans la console FSX pour ONTAP sur AWS.
nom d’utilisateur
Chaîne
(Obligatoire) Entrez le « nom d’utilisateur d’administrateur ONTAP » FSX for ONTAP dans la console FSX for ONTAP sur AWS.
resize_threshold
Entier
(Obligatoire) Entrez le pourcentage de seuil de 0 à 100. Ce seuil sera utilisé pour mesurer la capacité de stockage, le volume et l’utilisation de la LUN et lorsque le pourcentage d’utilisation de toute augmentation au-dessus de ce seuil, une activité de redimensionnement se produira.
email_expéditeur
Chaîne
(Obligatoire) Entrez l’ID d’e-mail enregistré sur ses qui sera utilisé par la fonction Lambda pour envoyer des alertes de notification liées à la surveillance et au redimensionnement.
email_destinataire
Chaîne
(Obligatoire) Entrez l’ID d’e-mail sur lequel vous souhaitez recevoir les notifications d’alerte.
fsx_password_ssm_parameter
Chaîne
(Obligatoire) Entrez le chemin d’accès utilisé dans AWS Parameter Store pour stocker le mot de passe « fsxadmin ».
avertir_notification
BOOL
(Obligatoire) définissez cette variable sur vrai pour recevoir une notification lorsque l’utilisation de la capacité de stockage/du volume/de la LUN dépasse 75 % mais est inférieure au seuil.
enable_snapshot_deletion
BOOL
(Obligatoire) définissez cette variable sur vrai pour activer la suppression de snapshot au niveau du volume pour les snapshots antérieurs à la valeur spécifiée dans « snapshot_age_Threshold_in_Days ».
snapshot_age_threshold_in_days
Entier
(Obligatoire) Entrez le nombre de jours de snapshots de niveau volume que vous souhaitez conserver. Tous les instantanés antérieurs à la valeur fournie seront supprimés et la même sera notifiée par e-mail.
accès_internet
BOOL
(Obligatoire) définissez cette variable sur vrai si l’accès Internet est disponible à partir du sous-réseau où ce lambda est déployé. Sinon, définissez-le sur Faux.
région_smtp
Chaîne
(Facultatif) si la variable « Internet_Access » est définie sur Faux, entrez la région dans laquelle lambda est déployé. Par exemple US-East-1 (dans ce format)
smtp_username_ssm_parameter
Chaîne
(Facultatif) si la variable "Internet_Access" est définie sur Faux, entrez le nom de chemin utilisé dans AWS Parameter Store pour stocker le nom d’utilisateur SMTP.
smtp_password_ssm_parameter
Chaîne
(Facultatif) si la variable "Internet_Access" est définie sur Faux, entrez le nom de chemin utilisé dans AWS Parameter Store pour stocker le mot de passe SMTP.
-
Cliquez sur Test, créez un événement de test vide et exécutez le test et vérifiez si le script s’exécute correctement.
-
Une fois le test réussi, accédez à Configuration > Triggers > Ajouter un déclencheur.
Select a Source: EventBridge Rule: Create a new rule Rule name: <Enter any name> Rule type: Schedule expression Schedule expression: <Use "rate(1 day)" if you want the function to run daily or add your own cron expression>
Cliquez sur Ajouter.
Conclusion
Avec la solution fournie, il est facile de configurer une solution de surveillance qui surveille régulièrement FSX pour le stockage ONTAP, la redimensionne en fonction du seuil spécifié par l’utilisateur et fournit un mécanisme d’alerte. Ainsi, le processus d’utilisation et de surveillance de FSX pour ONTAP est transparent et permet aux administrateurs de se concentrer sur les activités stratégiques et le stockage augmente automatiquement lorsque cela est nécessaire.