Amazon でホストされている MS SQL サーバー (RDS、単一 AZ) に HAProxy 経由で接続できるようにする必要があります。次の構成 (下) を試しましたが、MS SQL から次の結果が返されました (有効なログインとパスワードを使用したにもかかわらず)。
サーバーとの接続は正常に確立されましたが、ログイン前のハンドシェイク中にエラーが発生しました。(プロバイダー: TCP プロバイダー、エラー: 0 - 既存の接続がリモート ホストによって強制的に閉じられました。) (Microsoft SQL Server、エラー: 10054)
listen RDS_MSSQL *:1433
mode tcp
balance roundrobin
option log-health-checks
server legacy xxxx.xxxxxx.us-east-1.rds.amazonaws.com:1433 check port 1433 inter 1000
答え1
可能です。 の代わりにブロックとブロックlisten
を使用します。frontend
backend
frontend tcp-in-mssql
bind :8800
mode tcp
use_backend mssql
backend mssql
mode tcp
server mssqlserver 10.10.10.10:1433 check
答え2
MS SQL で必要な 3 ウェイ ハンドシェイクのため、デフォルトでは不可能のようです。
https://support.microsoft.com/ja-jp/kb/287932 より
PostgreSQLのような他のデータベースサーバーでは、この特別な処理は必要なく、HAProxy経由でも問題なく動作します。