-
-
-
VMware ESX、Linux KVM、およびCitrix HypervisorでNetScaler 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:データベース固有の負荷分散
データベースサーバーファームは、サーバーの状態だけでなく、各サーバーのデータベースの可用性にも基づいて負荷分散する必要があります。サービスが稼働していて、負荷分散デバイスが UP 状態と表示されていても、要求されたデータベースがそのサービスで使用できない場合があります。データベースが利用できないサービスにクエリが転送された場合、リクエストは処理されません。そのため、負荷分散デバイスは、各サービスのデータベースの可用性を認識する必要があります。また、負荷分散を決定する際には、データベースを利用できるサービスのみを考慮する必要があります。
例として、データベースサーバー server 1、サーバー 2、サーバー 3 が mydatabase1 と mydatabase2 というデータベースをホストしているとします。mydatabase1 が server2 で使用できなくなった場合、負荷分散デバイスはその状態の変化を認識している必要があります。mydatabase1 へのリクエストの負荷をサーバー 1 とサーバー 3 のみに分散する必要があります。mydatabase1 がサーバー 2 で使用できるようになったら、負荷分散デバイスは負荷分散の決定に server2 を含める必要があります。同様に、mydatabase2 がサーバー 3 で使用できなくなった場合、デバイスは mydatabase2 のリクエストをサーバー 1 とサーバー 2 のみに負荷分散する必要があります。mydatabase2 が使用可能になった場合にのみ、ロードバランシングの決定に server3 を含める必要があります。この負荷分散の動作は、サーバーファームでホストされているすべてのデータベースで一貫している必要があります。
NetScalerアプライアンスは、サービス上でアクティブなすべてのデータベースのリストを取得することでこの動作を実装します。アクティブなデータベースのリストを取得するために、アプライアンスは適切な SQL クエリで構成されたモニターを使用します。要求されたデータベースがサービスで使用できない場合、アプライアンスはそのサービスが利用可能になるまで負荷分散の決定から除外します。この動作により、クライアントへのサービスが中断されることはありません。
注
データベース固有の負荷分散は、MS SQL と MySQL のサービスタイプでのみサポートされます。このサポートは、Always On 高可用性グループで構成された MS SQL Server でも利用できます。詳細については、「 サポートされているデータベースバージョン、プロトコル、認証方法」を参照してください。
データベース固有の負荷分散を設定するには、以下を設定する必要があります:
- 負荷分散機能を有効にし、MSSQL または MySQL タイプの負荷分散仮想サーバーを構成します。
- データベースをホストするサービスを構成し、サービスを仮想サーバーにバインドします。モニターがデータベースサーバーにログオンするには有効なユーザー認証情報が必要なので、各サーバーでデータベースユーザーアカウントを構成し、そのユーザーアカウントをNetScalerアプライアンスに追加する必要があります。
- 次に、MSSQL-ECV または MYSQL-ECV モニターを設定し、モニターを各サービスにバインドします。
- 最後に、構成をテストして、意図したとおりに機能することを確認する必要があります。これらの構成タスクを実行する前に、データベース固有の負荷分散の仕組みを理解しておいてください。
データベース固有の負荷分散の仕組み
データベース固有の負荷分散では、各データベースサーバーに、そのサーバー上のすべてのアクティブなデータベースの名前を定期的に問い合わせるモニターを構成します。NetScalerアプライアンスは結果を保存し、監視を通じて取得した情報に基づいて定期的にレコードを更新します。クライアントが特定のデータベースにクエリを実行すると、アプライアンスは設定された負荷分散方法を使用してサービスを選択し、そのレコードをチェックして、そのサービスでデータベースが使用可能かどうかを判断します。レコードからデータベースが使用できないことが示された場合、構成された負荷分散方法を使用して次に利用可能なサービスを選択し、チェックを繰り返します。アプライアンスは、データベースがアクティブになっている最初に使用可能なサービスにクエリを転送します。
負荷分散を有効にする
負荷分散機能が無効になっている場合は、サービスや仮想サーバーなどの負荷分散エンティティを構成できます。この機能を有効にするまで、エンティティは機能しません。
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 を使用して負荷分散を有効にする
[ システム] > [設定] に移動し、[ 基本機能の設定] で [ 負荷分散] を選択します。
データベース固有の負荷分散用の負荷分散仮想サーバーの構成
可用性に基づいてデータベースの負荷分散を行うように仮想サーバーを構成するには、仮想サーバーでデータベース固有の負荷分散パラメーターを有効にします。パラメーターを有効にすると、NetScalerアプライアンスがクエリをそのサービスに転送する前に、選択したサービスに送信された監視プローブの結果を参照するように負荷分散ロジックが変更されます。
CLIを使用してデータベース固有の負荷分散用の負荷分散仮想サーバーを構成する
コマンドプロンプトで次のコマンドを入力して、データベース固有の負荷分散用の負荷分散仮想サーバーを構成し、構成を確認します。
add lb vserver <name> <serviceType> <ipAddress> <port> -dbsLb ENABLED
show lb vserver <name>
<!--NeedCopy-->
サービスを構成する
負荷分散機能を有効にしたら、負荷分散設定に含めるアプリケーションサーバーごとに少なくとも 1 つのサービスを作成する必要があります。構成するサービスは、NetScalerアプライアンスと負荷分散サーバー間の接続を提供します。各サービスには名前があり、IPアドレス、ポート、提供されるデータの種類を指定します。
最初にサーバーオブジェクトを作成せずにサービスを作成した場合、サービスの IP アドレスは、サービスをホストするサーバーの名前でもあります。IP アドレスではなく名前でサーバーを識別したい場合は、サーバーオブジェクトを作成してから、サービスの作成時に IP アドレスの代わりにサーバーの名前を指定できます。
データベースユーザーを構成する
データベースでは、接続は常にステートフルです。つまり、接続が確立されたら認証を受ける必要があります。
NetScalerでデータベースのユーザー名とパスワードを設定します。たとえば、データベースに John というユーザーを設定している場合、ADC にもユーザー John を設定する必要があります。ADC nsconfig
に追加されたデータベースユーザー名とパスワードがファイルに追加されます。
注
名前は大文字と小文字が区別されます。
ADC は、これらのユーザー認証情報を使用してクライアントを認証し、次にデータベースサーバーとのサーバー接続を認証します。
CLI を使用してデータベースユーザーを追加する
コマンドプロンプトで、次のように入力します。
add db user <username> - password <password>
<!--NeedCopy-->
例:
add db user nsdbuser -password dd260427edf
<!--NeedCopy-->
GUI を使用してデータベースユーザーを追加する
[ システム] > [ユーザー管理] > [データベースユーザー] に移動し、データベースユーザーを設定します。
データベースサーバー上のデータベースユーザーのパスワードを変更した場合は、NetScalerアプライアンス上で構成されている対応するユーザーのパスワードをリセットする必要があります。
CLI を使用してデータベースユーザーのパスワードをリセットする
コマンドプロンプトで、次のように入力します。
set db user <username> -password <password>
<!--NeedCopy-->
例:
set db user nsdbuser -password dd260538abs
<!--NeedCopy-->
GUI を使用してデータベースユーザーのパスワードをリセットする
[ システム] > [ユーザー管理] > [データベースユーザー] に移動し、ユーザーを選択し、パスワードの新しい値を入力します。
データベースサーバーにデータベースユーザーが存在しなくなった場合は、そのユーザーをNetScalerアプライアンスから削除できます。ただし、ユーザーがデータベースサーバーに残っている場合に ADC アプライアンスからユーザーを削除すると、このユーザー名のクライアントからのリクエストは認証されません。そのため、ユーザー名はデータベースサーバーにルーティングされません。
CLI を使用してデータベースユーザーを削除する
コマンドプロンプトで、次のように入力します。
rm db user <username>
<!--NeedCopy-->
例:
rm db user nsdbuser
<!--NeedCopy-->
GUI を使用してデータベースユーザーを削除する
[システム] > [ユーザ管理] > [データベースユーザ] に移動し、ユーザを選択して [削除] をクリックします。
アクティブなデータベースの名前を取得するようにモニターを設定
モニターを作成して、データベースインスタンス上のすべてのアクティブなデータベースのリストを取得できます。モニターは、有効なユーザー認証情報を使用してデータベースサーバーにログオンし、適切な SQL クエリを実行します。使用する必要がある SQL クエリは、SQL Server のデプロイメントによって異なります。たとえば、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 の場合、クエリは「sys.database から名前を選択 (state=0)」で、ルールは MSSQL.RES.TYPE.NE (エラー) でなければなりません。MYSQL-ECV の場合、クエリは「データベースを表示」で、ルールは MYSQL.RES.TYPE.NE (エラー) でなければなりません。
MSSQL の可用性グループ展開サポート
高可用性グループ展開でデータベース固有の負荷分散が設定されている次のシナリオを考えてみましょう。S1からS5はADCアプライアンス上のサービスです。DB1 ~ DB4 は、サービス S1 ~ S5 によって表されるサーバー上のデータベースです。AV1 と AV2 は可用性グループです。各可用性グループには、最大 1 つのプライマリデータベースサーバーインスタンスと最大 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 の書き込みクエリは L1 に送信されます。
- AV2 の READ クエリは S1 と S3 の間で負荷分散されます。S2 は AV2 のプライマリです。
- AV1 の書き込みクエリは L2 に送信されます。
設定例
- 負荷分散とコンテンツスイッチング仮想サーバーを設定します。
add lb vserver lbwrite -dbslb enabled
add lbvserver lbread MSSQL -dbslb enabled
add csvserver csv MSSQL 1.1.1.10 1433
- 可用性グループごとに 1 つずつ、合計 2 つのリスナーサービスと、データベース DB1 から DB4 を表す 5 つのサービス S1 ~ S5 を設定します。
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-->
サービスを設定するには:
サービス msservice1 を追加 5.5.5.5 MSQL 143
コマンドラインを使用して、サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成するには、次の手順を実行します。
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 Cloud Software Group Confidential.
You agree to hold this documentation confidential pursuant to the terms of your Cloud Software Group 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 Cloud Software Group product purchase decisions.
If you do not agree, select I DO NOT AGREE to exit.