-
-
-
VMware ESX、Linux KVM、およびCitrix HypervisorでCitrix ADC VPXのパフォーマンスを最適化する
-
Linux-KVMプラットフォームへのCitrix ADC VPXインスタンスのインストール
-
-
-
-
-
-
-
-
-
-
-
-
-
This content has been machine translated dynamically.
Dieser Inhalt ist eine maschinelle Übersetzung, die dynamisch erstellt wurde. (Haftungsausschluss)
Cet article a été traduit automatiquement de manière dynamique. (Clause de non responsabilité)
Este artículo lo ha traducido una máquina de forma dinámica. (Aviso legal)
此内容已经过机器动态翻译。 放弃
このコンテンツは動的に機械翻訳されています。免責事項
이 콘텐츠는 동적으로 기계 번역되었습니다. 책임 부인
Este texto foi traduzido automaticamente. (Aviso legal)
Questo contenuto è stato tradotto dinamicamente con traduzione automatica.(Esclusione di responsabilità))
This article has been machine translated.
Dieser Artikel wurde maschinell übersetzt. (Haftungsausschluss)
Ce article a été traduit automatiquement. (Clause de non responsabilité)
Este artículo ha sido traducido automáticamente. (Aviso legal)
この記事は機械翻訳されています.免責事項
이 기사는 기계 번역되었습니다.책임 부인
Este artigo foi traduzido automaticamente.(Aviso legal)
这篇文章已经过机器翻译.放弃
Questo articolo è stato tradotto automaticamente.(Esclusione di responsabilità))
Translation failed!
使用事例 4: データベース固有の負荷分散
データベースサーバーファームは、サーバーの状態だけでなく、各サーバーのデータベースの可用性にも基づいて負荷分散する必要があります。サービスが稼働している可能性があり、負荷分散デバイスでは稼働状態と表示されますが、要求されたデータベースがそのサービスでは利用できない可能性があります。データベースが使用できないサービスにクエリが転送された場合、要求は提供されません。したがって、負荷分散デバイスは、各サービス上のデータベースの可用性を認識する必要があります。また、負荷分散を決定する際には、データベースが使用可能なサービスのみを考慮する必要があります。
たとえば、データベースサーバー server1、server2、および server3 がデータベース mydatabase1 および mydatabase2 をホストしているとします。mydatabase1 が server2 で使用不能になった場合、負荷分散デバイスはその状態の変化を認識する必要があります。mydatabase1 に対する要求を server1 と server3 に対してのみ負荷分散する必要があります。mydatabase1 が server2 で使用可能になったら、負荷分散の決定に server2 を含める必要があります。同様に、mydatabase2 が server3 で使用不能になった場合、デバイスは mydatabase2 に対する要求を server1 と server2 に対してのみ負荷分散する必要があります。mydatabase2 が使用可能になった場合にのみ、負荷分散の決定に server3 を含める必要があります。この負荷分散の動作は、サーバーファームでホストされているすべてのデータベース間で一貫している必要があります。
Citrix ADCアプライアンスは、サービス上でアクティブなすべてのデータベースのリストを取得することによって、この動作を実装します。アクティブなデータベースのリストを取得するには、アプライアンスは適切なSQLクエリで構成されたモニターを使用します。要求されたデータベースがサービス上で利用できない場合、アプライアンスはサービスを使用可能になるまで負荷分散の決定から除外します。この動作により、クライアントへのサービスが中断されることはありません。
注
データベース固有の負荷分散は、MSSQL および MySQL サービスタイプでのみサポートされます。このサポートは、Microsoft SQL Server 2012年の高可用性展開でも利用できます。
データベース固有の負荷分散を設定するには、以下を設定する必要があります。
- 負荷分散機能を有効にし、タイプが MSSQL または MySQL の負荷分散仮想サーバーを構成します。
- データベースをホストするサービスを構成し、サービスを仮想サーバーにバインドします。モニターでデータベースサーバーにログオンするには、有効なユーザー資格情報が必要です。そのため、各サーバーでデータベースユーザーアカウントを構成し、そのユーザーアカウントをCitrix ADCアプライアンスに追加する必要があります。
- 次に、MSSQL-ECV または MYSQL-ECV モニターを構成し、モニターを各サービスにバインドします。
- 最後に、設定をテストして、意図したとおりに動作していることを確認する必要があります。これらの構成タスクを実行する前に、データベース固有の負荷分散の仕組みを理解しておいてください。
データベース固有の負荷分散のしくみ
データベース固有のロード・バランシングでは、各データベース・サーバにあるすべてのアクティブなデータベースの名前を定期的に照会するモニターを設定します。Citrix ADCアプライアンスは結果を格納し、監視によって取得した情報に基づいてレコードを定期的に更新します。クライアントが特定のデータベースに問い合わせると、アプライアンスは設定された負荷分散方式を使用してサービスを選択し、そのレコードをチェックして、そのサービスでデータベースが使用可能かどうかを判断します。レコードでデータベースが使用できないことが示されている場合、構成された負荷分散方法を使用して次に使用可能なサービスを選択し、チェックを繰り返します。アプライアンスは、データベースがアクティブである最初に使用可能なサービスにクエリーを転送します。
負荷分散を有効にする
負荷分散機能が無効になっている場合、サービスや仮想サーバーなどの負荷分散エンティティを構成できます。エンティティは、この機能を有効にするまで機能しません。
CLIを使用して負荷分散を有効にする
コマンドプロンプトで次のコマンドを入力して、負荷分散を有効にし、構成を確認します。
enable ns feature LB
show ns feature
<!--NeedCopy-->
例:
> enable ns feature LoadBalancing
Done
> show ns feature
Feature Acronym Status
------- ------- ------
1) Web Logging WL OFF
2) Surge Protection SP ON
3) Load Balancing LB ON
.
.
.
24) NetScaler Push push OFF
Done
<!--NeedCopy-->
GUIを使用して負荷分散を有効にする
[ システム] > [設定] に移動し、[ 基本機能の構成] で [ 負荷分散] を選択します。
データベース固有の負荷分散のために負荷分散仮想サーバーを構成する
可用性に基づいてデータベースを負荷分散するように仮想サーバーを構成するには、仮想サーバーでデータベース固有の負荷分散パラメーターを有効にします。このパラメータを有効にすると、負荷分散ロジックが変更され、Citrix ADCアプライアンスが選択したサービスに送信された監視プローブの結果を参照してから、そのサービスにクエリが転送されます。
CLIを使用して、データベース固有の負荷分散用に負荷分散仮想サーバーを構成します
コマンドプロンプトで次のコマンドを入力して、データベース固有の負荷分散用に負荷分散仮想サーバーを構成し、構成を確認します。
add lb vserver <name> <serviceType> <ipAddress> <port> -dbsLb ENABLED
show lb vserver <name>
<!--NeedCopy-->
サービスの構成
負荷分散機能を有効にした後、負荷分散設定に含めるアプリケーションサーバーごとに少なくとも 1 つのサービスを作成する必要があります。構成するサービスは、Citrix ADCアプライアンスと負荷分散サーバー間の接続を提供します。各サービスには名前があり、IP アドレス、ポート、および提供されるデータの種類を指定します。
最初にサーバオブジェクトを作成せずにサービスを作成する場合、サービスの IP アドレスもサービスをホストするサーバの名前になります。サーバーを IP アドレスではなく名前で識別する場合は、サーバーオブジェクトを作成し、サービスの作成時に IP アドレスの代わりにサーバー名を指定できます。
データベースユーザーを構成する
データベースでは、接続は常にステートフルです。つまり、接続が確立されると、認証される必要があります。
Citrix ADCでデータベースのユーザー名とパスワードを構成します。たとえば、データベースにユーザー John が設定されている場合は、ADC にもユーザー John を設定する必要があります。ADCに追加されたデータベースのユーザー名とパスワードが nsconfig
ファイルに追加されます。
注
名前では、大文字と小文字が区別されます。
ADC は、これらのユーザー資格情報を使用してクライアントを認証し、データベースサーバーとのサーバー接続を認証します。
CLIを使用してデータベースユーザーを追加します
コマンドプロンプトで、次のように入力します。
add db user <username> - password <password>
<!--NeedCopy-->
例:
add db user nsdbuser -password dd260427edf
<!--NeedCopy-->
GUIを使用してデータベースユーザーを追加します
[システム] > [ユーザ管理] > [データベースユーザ] に移動し、データベースユーザを設定します。
データベースサーバーでデータベースユーザーのパスワードを変更した場合は、Citrix ADCアプライアンスで構成されている対応するユーザーのパスワードをリセットする必要があります。
CLIを使用してデータベースユーザーのパスワードをリセットします
コマンドプロンプトで、次のように入力します。
set db user <username> -password <password>
<!--NeedCopy-->
例:
set db user nsdbuser -password dd260538abs
<!--NeedCopy-->
GUIを使用してデータベースユーザーのパスワードをリセットします
[システム] > [ユーザー管理] > [データベースユーザー] に移動し、ユーザーを選択して、パスワードの新しい値を入力します。
データベースサーバー上にデータベースユーザーが存在しなくなった場合は、Citrix ADCアプライアンスからユーザーを削除できます。ただし、ユーザがデータベースサーバ上に存在し続け、ADC アプライアンスからそのユーザを削除すると、このユーザ名のクライアントからの要求は認証されません。したがって、ユーザー名はデータベースサーバーにルーティングされません。
CLIを使用してデータベースユーザーを削除します
コマンドプロンプトで、次のように入力します。
rm db user <username>
<!--NeedCopy-->
例:
rm db user nsdbuser
<!--NeedCopy-->
GUIを使用してデータベースユーザーを削除します
[システム] > [ユーザ管理] > [データベースユーザ] に移動し、ユーザを選択して [削除] をクリックします。
アクティブなデータベースの名前を取得するようにモニターを構成します
モニタを作成して、データベース・インスタンス上のすべてのアクティブ・データベースのリストを取得できます。モニターは、有効なユーザー資格情報を使用してデータベースサーバーにログオンし、適切な SQL クエリを実行します。使用する必要がある SQL クエリは、SQL サーバーのデプロイメントによって異なります。たとえば、MSSQL データベースミラーリングのセットアップでは、次のクエリを使用して、サーバーインスタンスで使用可能なアクティブなデータベースの一覧を取得できます。
select name from sys.databases where state=0
<!--NeedCopy-->
MySQL データベース設定では、次のクエリを使用して、サーバーインスタンスで使用可能なアクティブなデータベースのリストを取得できます。
データベースの表示:
また、エラー状態の応答を評価し、エラーがない場合は結果を保存するようにモニターを構成します。応答にエラーが含まれている場合、モニタはサービスを DOWN としてマークします。アプライアンスは、エラーが返されなくなるまで、サービスを負荷分散の決定から除外します。
注
データベース固有の負荷分散機能は、MSSQL および MySQL サービスタイプでのみサポートされます。したがって、モニタタイプは MSSQL-ECV または MYSQL-ECV である必要があります。
CLIを使用して、サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成します
コマンドプロンプトで次のコマンドを入力して、サービスでホストされているすべてのアクティブなデータベースの名前を取得し、構成を確認します。
add lb monitor <monitorName> <type> -userName <string> -sqlQuery <text> -evalRule <expression> -storedb ENABLED
show lb monitor <monitorName>
<!--NeedCopy-->
GUIを使用して、サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成します
- [トラフィック管理] > [負荷分散] > [モニ ター] に移動し、MSSQL-ECV または MYSQL-ECV タイプのモニタを設定します。
- 「 特殊パラメータ」で、ユーザー名、クエリー、およびルールを指定します。たとえば、MSSQL-ECV の場合、クエリは「状態 = 0 の sys.databases から名前を選択」である必要があります)。また、ルールは MSSQL.RES.TYPE.NE (エラー) である必要があります。MYSQL-ECVの場合、クエリは「データベースの表示」でなければならず、ルールはMYSQL.RES.TYPE.NE(エラー)でなければなりません。
MSSQLの可用性グループ展開のサポート
高可用性グループの展開で、データベース固有の負荷分散が構成される次のシナリオを検討します。S1 ~ S5 は、ADC アプライアンス上のサービスです。DB1 ~ DB4 は、サービス S1 ~ S5 で表されるサーバ上のデータベースです。AV1 と AV2 は可用性グループです。各可用性グループには、プライマリデータベースサーバーインスタンスとセカンダリデータベースサーバーインスタンスが 4 つまで含まれます。可用性グループ内のサーバーを表すサービスは、ある可用性グループのプライマリ、別の可用性グループのセカンダリにすることができます。各可用性グループには、異なるデータベースと、サービスである 1 つのリスナーが含まれます。すべての要求は、プライマリ・データベースに存在するリスナー・サービスに到着します。AVIは、データベースDB1とDB2が含まれています。AV2は、データベースDB3とDB4が含まれています。L1とL2は、それぞれAV1とAV2のリスナーです。S1 は AV1 のプライマリサービスで、S2 は AV2 のプライマリサービスです。
サービス | サービス上のアクティブなデータベースのリスト |
---|---|
S1 | DB1, DB2, DB3, DB4 |
S2 | DB3, DB4 |
S3 | DB3, DB4 |
S4 | DB1, DB2 |
S5 | DB1, DB2 |
可用性グループ | データベース | 可用性グループのサーバーを表すサービス |
---|---|---|
AV1 | DB1, DB2 | S1, S4, S5 |
AV2 | DB3, DB4 | S1, S2, S3 |
クエリは次のようにフローされます。
- AV1 の READ クエリは、S4 と S5 の間で負荷分散されます。S1 は AV1 のプライマリです。
- AV1 の WRITE クエリは、L1 に送信されます。
- AV2 の READ クエリは、S1 と S3 の間で負荷分散されます。S2 は AV2 のプライマリです。
- AV1 の WRITE クエリは、L2 に送信されます。
構成例
- 負荷分散とコンテンツスイッチング仮想サーバーを構成します。
add lb vserver lbwrite -dbslb enabled
add lbvserver lbread MSSQL -dbslb enabled
add csvserver csv MSSQL 1.1.1.10 1433
- 可用性グループごとに 1 つずつ、データベース DB1 から DB4 を表す 5 つのサービス S1 から S5 の 2 つのリスナーサービスを構成します。
add service L1 1.1.1.11 MSSQL 1433
add service L2 1.1.1.12 MSSQL 1433
add service s1 1.1.1.13 MSSQL 1433
add service s2 1.1.1.14 MSSQL 1433
add service s3 1.1.1.15 MSSQL 1433
add service s4 1.1.1.16 MSSQL 1433
add service s5 1.1.1.17 MSSQL 1433
- サービスを負荷分散仮想サーバーにバインドします。
bind lbvserver lbwrite L1
bind lbvserver lbwrite L2
bind lbvserver lbread s1
bind lbvserver lbread s2
bind lbvserver lbread s3
bind lbvserver lbread s4
bind lbvserver lbread s5
- データベース・ユーザーを構成します。
add db user nsdbuser1 -password dd260427edf
add db user nsdbuser2 -password ccd1234xyzw
- リスナーサービスごとに monitor_L1 と monitor_L2 の 2 つのモニターを構成して、その可用性グループ内のアクティブなデータベースの一覧を取得します。モニタ monitor1 を追加して、セカンダリデータベースサーバーインスタンスのデータベースのリストを取得します。
add lb monitor monitor_L1 MSSQL-ECV -userName user1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replica_states b ON a.replica_id=b.replica_id INNER JOIN sys.availability_group_listeners c on b.group_id = c.group_id INNER JOIN sys.availability_group_listener_ip_addresses d on c.listener_id = d.listener_id WHERE b.role = 1 and d.ip_address like '1.1.1.11'" -evalRule "MSSQL.RES.TYPE.NE(ERROR)” –storedb ENABLED
add lb monitor monitor_L2 MSSQL-ECV -userNameuser1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replicca_states b ON a.replica_id=b.replica_id INNER JOIN sys.availability_group_listeners c on b.group_id = c.group_id INNER JOIN sys.availability_group_listener_ip_addresses d on c.listener_id = d.listener_id WHERE b.role = 1 and d.ip_address like '1.1.1.12'" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED
add lb monitor monitor1 MSSQL-ECV -userNameuser1 -sqlQuery "SELECT name FROM sys.databases a INNER JOIN sys.dm_hadr_availability_replica_states b ON a.replica_id=b.replica_id WHERE b.role = 2" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED
- 読み取りおよび書き込みポリシーを構成します。
add cs policy pol_write -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("insert")"
add cs policy pol_read -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("select")"
- ポリシーをコンテンツスイッチ仮想サーバーにバインドします。
bind csvserver csv -targetLBVserver lbwrite -policyName pol_write -priority 11
bind csvserver csv -targetLBVserver lbread -policyName pol_read -priority 12
- モニタをサービスにバインドします。監視をサービス L1 および L2 にバインドして、リスナーである可用性グループのアクティブなデータベースの一覧を取得します。読み取り専用の仮想サーバーにバインドされているすべてのサービスにモニターをバインドします。
bind service L1 -monitorName monitor_L1
bind service L2 -monitorName monitor_L2
bind service s1 -monitorName monitor1
bind service s2 -monitorName monitor1
bind service s3 -monitorName monitor1
bind service s4 -monitorName monitor1
bind service s5 -monitorName monitor1
MSSQL 仮想サーバーの設定例
データベース固有のロード・バランシング用にロード・バランシング仮想サーバーを構成するには、次の手順を実行します。
add lb vserver DBSpecificLB1 MSSQL 192.0.2.10 1433 -dbsLb ENABLED
Done
show lb vserver DBSpecificLB1
DBSpecificLB1 (192.0.2.10:1433) - MSSQL Type: ADDRESS
. . .
DBS_LB: ENABLED
Done
<!--NeedCopy-->
サービスを構成するには、次の手順に従います。
add service msservice1 5.5.5.5 MSSQL 1433
コマンドラインを使用して、サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成するには、次の手順を実行します。
add lb monitor mssql-monitor1 MSSQL-ECV -userName user1 -sqlQuery "select name from sys.databases where state=0" -evalRule "MSSQL.RES.TYPE.NE(ERROR)" -storedb EN
Done
show lb monitor mssql-monitor1
1) Name.......: mssql-monitor1 Type......: MSSQL-ECV
...
Special parameters: Database.....:""
User name.....:"user1"
Query..:select name from sys.databases where state=0 EvalRule...:MSSQL.RES.TYPE.NE(ERROR)
Version...:70 STORE_DB...:ENABLED
Done
<!--NeedCopy-->
MySQL 仮想サーバーの設定例
データベース固有のロード・バランシング用にロード・バランシング仮想サーバーを構成するには、次の手順を実行します。
add lb vserver DBSpecificLB1 MYSQL 192.0.2.10 3306 -dbsLb ENABLED
Done
show lb vserver DBSpecificLB1
DBSpecificLB1 (192.0.2.10:3306) - MYSQL Type: ADDRESS
. . .
DBS_LB: ENABLED
Done
<!--NeedCopy-->
サービスを構成するには、次の手順に従います。
add service msservice1 5.5.5.5 MYSQL 3306
<!--NeedCopy-->
コマンドラインを使用して、サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成するには、次の手順を実行します。
add lb monitor mysql-monitor1 MYSQL-ECV -userName user1 -sqlQuery "show databases" -evalRule "MYSQL.RES.TYPE.NE(ERROR)" -storedb ENABLED
Done
show lb monitor mysql-monitor1
1) Name.......: mysql-monitor1 Type......: MYSQL-ECV State....: ENABLED
...
Special parameters: Database.....:""
User name.....:"user1" Query..:show databases
EvalRule...:MYSQL.RES.TYPE.NE(ERROR) STORE_DB...:ENABLED
Done
<!--NeedCopy-->
共有
共有
This Preview product documentation is Citrix Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Citrix Beta/Tech Preview Agreement.
The development, release and timing of any features or functionality described in the Preview documentation remains at our sole discretion and are subject to change without notice or consultation.
The documentation is for informational purposes only and is not a commitment, promise or legal obligation to deliver any material, code or functionality and should not be relied upon in making Citrix product purchase decisions.
If you do not agree, select Do Not Agree to exit.