4 votes

Mauvaises performances d'OpenVPN NFS

J'ai des serveurs d'application EC2 derrière un répartiteur de charge élastique. Tous les serveurs d'application ont accès à un serveur de stockage partagé, notamment pour les fichiers de cache centralisés, les journaux, etc. Le serveur de stockage partagé implémente NFS via OpenVPN pour faire son travail. Tous les serveurs sont dans la même zone de disponibilité et communiquent entre eux via le réseau interne. Cependant, la solution de stockage partagé entraîne une augmentation anormalement élevée du CPU et de la latence qui n'existe généralement pas si le stockage est à 100% local. Des diminutions légères des performances avec cette configuration sont attendues, mais dans ce cas, le CPU a augmenté et la sortie a ralenti de 2 à 3 fois.

Donc, c'est une question en 2 parties:

  1. Que puis-je faire pour mieux comprendre quel est le coupable ? Je sais que c'est la combinaison d'OpenVPN & NFS, mais puis-je identifier les fichiers spécifiques les plus lus & écrits ? Ou puis-je facilement dire où se situe le goulot d'étranglement ?

  2. Est-ce que quelqu'un a des conseils basés uniquement sur les informations ci-dessus ? Y a-t-il une meilleure façon de partager des fichiers entre serveurs dans un environnement basé sur le cloud ? (Veuillez ne pas répondre avec "utilisez S3", car cela ne convient pas aux besoins de fichiers instantanés/temporaires)

Merci !

5voto

Seth Robertson Points 1119

Assurez-vous que le link-MTU de votre tunnel openvpn est correctement configuré pour éviter la fragmentation double (une au niveau de l'hôte de 8192 octets à 1500 octets et une au niveau de openvpn de 1500 octets à 1400 octets ou autre). openvpn gère très mal le réglage de l'interface mtu (entrave activement les tentatives de réglage de la mtu correctement).

Vérifiez la latence pour différentes tailles de paquets traversant et contournant le tunnel. Tracez et recherchez des problèmes.

Configurez un test NFS à l'extérieur du tunnel et effectuez des mesures de performance de cette manière pour isoler si openvpn est le problème ou non.

Essayez différentes versions de NFS, à la fois TCP et UDP.

Essayez d'activer le caching agressif et l'E/S asynchrone.


Le suivant est un coup de gueule à propos du "harcèlement actif" d'openvpn concernant MTU (ajouté par "demande")

Oui. Définir tun-mtu entraîne openvpn à générer ATTENTION: normalement si vous utilisez --mssfix et/ou --fragment, vous devriez également définir --tun-mtu 1500 (actuellement c'est 1413). Je n'utilise pas --mssfix ou --fragment.

De plus, définir une MTU statique dans la configuration est stupide et sujet aux erreurs, elle doit être dynamique. Donc, vous utilisez "mtu-disc yes", n'est-ce pas? Bien sûr, sauf que la valeur qu'il passe dans le script de démarrage est décalée de 14 (bien que j'utilise TAP pour le support IPv6, ce qui pourrait le confondre de manière mystérieuse). Donc, j'ai besoin de /sbin/ifconfig $1 mtu $(($2-14)) up pour obtenir la bonne valeur (bonne signifiant une valeur qui ne causera pas de fragments ou de paquets abandonnés parce qu'ils sont trop gros).

J'ai du mal à imaginer une circonstance où le réglage de l'interface MTU à la valeur correcte n'est pas une bonne idée, au moins si vous n'avez pas de fragment défini (et vous ne devriez jamais avoir de fragment défini, à moins que vos péchés réseau ne vous hantent). Il devrait également changer dynamiquement l'interface MTU si elle est ultérieurement confrontée à des erreurs nécessitant des fragments en raison de changements réseau après l'initialisation.

Le MSS est totalement le mauvais niveau réseau pour effectuer ce travail. Si vous avez configuré correctement l'interface MTU, la découverte du MTU du chemin, le MSS, et tout fonctionnent simplement. Sinon, certaines choses peuvent fonctionner plus ou moins, d'autres non, et quelles choses fonctionnent dépendent de savoir si le véritable paquet est envoyé depuis l'hôte openvpn ou un autre hôte. Oh, et ne me lancez pas sur ce qui peut échouer si le MTU est asymétrique (ce qui n'est pas entièrement rare).

Je pense qu'OpenVPN a été écrit par des personnes sans beaucoup d'expérience en réseau et en administration système et leurs mauvais choix ont été codés en dur dans la configuration et les structures de données/API. Ils n'ont vraiment pas fait un très bon travail avec une configuration réseau flexible et saine et son intégration (ce n'est qu'un des plusieurs exemples). La chose triste est qu'il est des centaines de fois meilleur que les autres solutions disponibles, ce qui fait de moi un partisan d'OpenVPN. Le VPN Cisco est une catastrophe, par exemple.

0 votes

Vous pouvez demander explicitement un MTU spécifique avec tun-mtu dans OpenVPN - avez-vous eu des problèmes avec cela ?

0 votes

@Eduardo Ivanec : Ai-je eu des problèmes avec ça ? Tu paries. J'ai ajouté une diatribe à ce sujet dans ma réponse.

0voto

Fabiano Tarlao Points 161

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X