アクティブおよびパッシブのFTP / TFTPサービスのロードバランシングと高可用性

投稿者 Zevenet | 16年2017月XNUMX日

概要

FTP or ファイル転送プロトコル は、TCP / IPネットワーク層に依存するクライアントサーバーアーキテクチャ設計でファイル転送に広く使用されているアプリケーション層プロトコルです。 FTPは複雑でプレーンな(セキュリティを意識しない)プロトコルであり、使用されるポートはクライアントとサーバー間のアプリケーション層でネゴシエートされるため、負荷分散やファイアウォールルールの作成は少し困難です。 さらに、FTPサーバーとクライアントは、アクティブモードまたはパッシブモードで動作する可能性があります。これについては、以下で説明します。

FTPを提供するいくつかの機能は次のとおりです。2 TCPポート(デフォルトで20、21)は制御コマンド用、もう1つはデータ用、認証メカニズムサポート、暗号化サポートなし、ASCIIおよびバイナリ転送、幅広いコマンド(ディレクトリ一覧、ディレクトリ参照)ファイルのアップロード、ファイルのダウンロードなど)と固有のTCP回復力。

TFTP or 簡単なFTP 1つのUDPポート(デフォルトでは69)、認証メカニズムのサポートや暗号化、3つの転送モード(netascii、octet、mail)、アップロードとダウンロードなどの基本的なコマンドのみを使用する、より速いファイル転送と単純なアーキテクチャ設計のバリエーションです。ファイル

FTPとTFTPの両方のサービスは、次のようにして簡単に負荷分散できます。 Zevenetロードバランサー。 それを達成する方法を知るために読み続けてください。

FTPロードバランシング環境

この記事で達成したいシナリオを以下の図に示します。

ユーザーの同時実行性が高く、サービスを拡張する必要があるか、高可用性が必要な重要なサービスである場合は、FTPサービスロードバランサーが必要になります。

アクティブFTPモードの設定

An アクティブFTP セットアップはポートを使用する必要があります 20 及び 21 サーバー側またはバックエンド側で。 下の図は、クライアントとFTPサーバー間でデータを転送する必要がある場合に接続がどのように流れるかを示しています。

active_ftp_client_server

上記の順序で:
1. クライアントはポート経由でサーバーに要求します 21 コマンド
2. サーバーはクライアントに確認応答します。
3. 世界 サーバーが起動します データポートを使用したデータ接続 20.
4. クライアントは、サーバーが終了するとサーバーに確認応答します。

この時点で、クライアントとサーバーの両方の間にロードバランサーをセットアップしてから、クライアントとサーバー間のトラフィックフロー、接続初期化子、およびポートアグリーメントを処理する必要があります。

Zevenet Load Balancerを使用すると、この種の構成を実現して、ポートを備えたLSLBファームプロファイルL4xNATを作成する必要があります。 20,21 及び FTP 次の図に示すように、プロトコルを作成し、最後にバックエンドを設定します(ポートを設定する必要はありません)。

zevenet_adc_lb_active_ftp_configuration

クライアントは新しいFTPファームのVIPアドレスに接続する必要があります。

注意: この設定は、アクティブとパッシブの両方のクライアント/サーバーモードに使用できるようになっています。

パッシブFTPモードの設定

A パッシブFTP セットアップはポートのみを使用します 21 サーバー側またはバックエンド側で。 下の図は、クライアントとFTPサーバー間でデータを転送する必要がある場合に接続がどのように流れるかを示しています。

passive_ftp_client_server

上記の順序で:
1. クライアントはポート経由でサーバーに要求します 21 コマンド
2. サーバーはクライアントに確認応答します。
3. 世界 クライアントが開始 アプリケーション層への上位データポートを使用したデータ接続は、サーバー側のポートに同意しました。
4. サーバーは、終了時にクライアントに確認応答します。

この時点で、クライアントとサーバーの両方の間にロードバランサーをセットアップしてから、クライアントとサーバー間のトラフィックフロー、接続初期化子、およびポートアグリーメントを処理する必要があります。

Zevenet Load Balancerを使用して、この種の構成を実現し、ポートを使用してLSLBファームプロファイルL4xNATを作成する必要があります。 21 及び FTP 次の図に示すように、プロトコルを作成し、最後にバックエンドを設定します(ポートを設定する必要はありません)。

zevenet_adc_lb_passive_ftp_configuration

クライアントは新しいFTPファームのVIPアドレスに接続する必要があります。

TFTP設定

簡単なFTP プロトコルは主に PXE DHCPとTFTPサービスの組み合わせで構成された(Preboot eXecution Environment)環境。ここでは、ネットワークを通じて数十、数百、さらには数千のコンピューターを展開できます。

主なプロトコル動作は次のようになります。
1. クライアントはポート経由でサーバーに要求します 69 ファイルおよび転送モードを含む読み取り要求(RRQ)または書き込み要求(WRQ)コマンド。
2. サーバーはクライアントに確認応答し、使用する新しいデータポートを通知します。
3. 世界 クライアントが開始 アプリケーション層へのデータ接続はサーバー側でポートを合意しました。
4. 最新の512バイトが残っているとき、サーバーはクライアントに確認応答します。

TFTPサービスを拡張する必要がある環境では、Zevenet5を使用した構成は非常に簡単です。 ポートを使用してLSLBファームプロファイルL4xNATを作成する必要があります 69 及び TFTP 次の図に示すように、プロトコルを作成し、最後にバックエンドを設定します(ポートを設定する必要はありません)。

zevenet_adc_lb_tftp_configuration

クライアントは新しいTFTPファームのVIPアドレスに接続する必要があります。

セキュアFTP

FTPプロトコルの強化されたセキュリティを解決するために、 SSHファイル転送プロトコル またはよりよく知られている SFTP セキュリティ層を提供するように設計されました。 そのシナリオでは、FTPサーバーはSFTPとして構成する必要があり、それらのロードバランシングはデフォルトポートでL4xNATプロファイルファームを使用してLSLBを作成するのと同じくらい簡単です 22 そして、プロトコル TCP 以下のスクリーンショットに示されているように。 最後に、SFTPサービスのバックエンドを追加するだけです。

zevenet_adc_lb_secure_ftp_sftp_configuration

クライアントは、SFTPサービスを提供する新しいTCPファームのVIPアドレスに接続する必要があります。

高度な健康診断

FTPヘルスチェック

Zevenetアプライアンスにはすでに check_ftp FTPサービスのヘルスチェックなので、バックエンドを使ってヘルスチェックをテストできます。

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org
FTP OK - 0.262 second response time on ftp.debian.org port 21 [220 ftp.debian.org FTP server]|time=0.262090s;;;0.000000;10.000000 

一方、ダウンバックエンドを使用すると、次の出力が得られます。

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./check_ftp -H ftp.debian.org
CRITICAL - Socket timeout after 10 seconds

そのため、FTPファームで設定するFarm Guardianコマンドは次のようになります。

check_ftp -H HOST

[サービス]タブで、次に示すようにFarm Guardianの構成を確認します。 60秒のタイムアウトはバックエンドの正しい振る舞いを保証するのに十分でしょう。

zevenet_active_passive_ftp_farm_guardian_advanced_health_check_config

TFTPヘルスチェック

もし check_tftp 高度なチェックはZevenetアプライアンスにはまだ存在していません。以下に説明するように、TFTPサービス用の簡単なヘルスチェックスクリプトを作成できます。

まず、TFTPバックエンドディレクトリにダミーファイルを作成します。例えば、 tftp_zevenet_check.txt、「OK」などのコンテンツを追加します。

次に、Zevenetアプライアンスに次のコマンドを実行してtftpクライアントをインストールします。

apt-get install tftp

そして、Zevenetヘルスチェックのデフォルトディレクトリに新しいスクリプトファイルを作成します。例えば、 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh 次のスクリプトコードを使います。

#!/bin/bash
###
### Check TFTP services
### Copyright 2017-now Zevenet SL
###
### $1 : Host to be checked
CRITICAL=1
OK=0
RESULT=$(echo get tftp_zevenet_check.txt | tftp $1 2>&1 | head -n 1)

echo "TFTP health check status for $1 is $RESULT"

if [ "`echo $RESULT | grep Received`" != "" ]; then
        exit $OK
else
        exit $CRITICAL
fi

次に、次のコマンドで実行権限を割り当てます。

root@zevenet:/# chmod 755 /usr/local/zenloadbalancer/app/libexec/check_mytftp.sh

スクリプトを実行しようとすると、バックエンドが起動して適切に構成されたときに成功したメッセージが表示されます。

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250
TFTP health check status for 192.168.101.250 is tftp> Received 4 bytes in 0.0 seconds

あるいはバックエンドがダウンしているときのエラー:

root@zevenet:/usr/local/zenloadbalancer/app/libexec# ./tftp_check.sh 192.168.101.250
TFTP health check status for 192.168.101.254 is tftp> Transfer timed out.

最後に、コマンドにHOSTトークンを含め、TFTPファームでヘルスチェックを設定します。

check_mytftp.sh HOST

[サービス]タブで、次に示すようにFarm Guardianの構成を確認します。 60秒のタイムアウトはバックエンドの正しい振る舞いを保証するのに十分でしょう。

zevenet_tftp_farm_guardian_advanced_health_check_config

SFTPヘルスチェック

ヘルスチェックはすでにご利用いただけますので check_ssh直接使用できます。 したがって、SFTPファームで設定するFarm Guardianコマンドは次のようになります。

check_ssh HOST

次に、次のスクリーンショットに示すように構成が表示されます。

zevenet_ssh_sftp_farm_guardian_advanced_health_check_config

可用性が高くスケーラブルなファイル転送をお楽しみください。

上の共有:

GNU Free Documentation Licenseの条項に基づくドキュメンテーション。

この記事は役に立ちましたか?

関連記事