Citrix ADC

使用事例4:デタベス固有の負荷分散

データベースサーバーファームは,サーバーの状態だけでなく,各サーバーのデータベースの可用性にも基づいて負荷分散する必要があります。サビスが稼働している可能性があり、負荷分散デバイスでは稼働状態と表示されますが、要求されたデータベースがそのサービスでは利用できない可能性があります。データベースが使用できないサービスにクエリが転送された場合、要求は提供されません。したがって、負荷分散デバイスは、各サービス上のデータベースの可用性を認識する必要があります。また、負荷分散を決定する際には、データベースが使用可能なサービスのみを考慮する必要があります。

たとえば,データベースサーバーserver1, server2、およびserver3がデータベースmydatabase1およびmydatabase2をホストしているとします。mydatabase1がserver2で使用不能になった場合,負荷分散デバイスはその状態の変化を認識する必要があります。mydatabase1に対する要求をserver1とserver3に対してのみ負荷分散する必要があります。mydatabase1がserver2で使用可能になったら,負荷分散の決定にserver2を含める必要があります。同様に,mydatabase2がserver3で使用不能になった場合,デバイスはmydatabase2に対する要求をserver1とserver2に対してのみ負荷分散する必要があります。mydatabase2が使用可能になった場合にのみ,負荷分散の決定にserver3を含める必要があります。この負荷分散の動作は,サーバーファームでホストされているすべてのデータベース間で一貫している必要があります。

Citrix ADCアプライアンスは,サービス上でアクティブなすべてのデータベースのリストを取得することによって,この動作を実装します。アクティブなデータベースのリストを取得するには,アプライアンスは適切なSQLクエリで構成されたモニターを使用します。要求されたデータベースがサービス上で利用できない場合,アプライアンスはサービスを使用可能になるまで負荷分散の決定から除外します。この動作により、クラ。

データベース固有の負荷分散は,该およびMySQLサービスタイプでのみサポートされます。このサポートは,Microsoft SQL Server 2012年の高可用性展開でも利用できます。

デタベス固有の負荷分散を設定するには,以下を設定する必要があります。

  • 負荷分散機能を有効にし,タイプが该またはMySQLの負荷分散仮想サーバーを構成します。
  • デタベスをホストするサビスを構成し,サンドします。モニタでデタベにログオンするには,有効なユ資格情報が必要です。そのため,各サーバーでデータベースユーザーアカウントを構成し,そのユーザーアカウントをCitrix ADCアプライアンスに追加する必要があります。
  • 次に,MSSQL-ECVまたはMYSQL-ECVモニターを構成し,モニターを各サービスにバインドします。
  • 最後に,設定をテストして,意図したとおりに動作していることを確認する必要があります。これらの構成タスクを実行する前に,デタベス固有の負荷分散の仕組みを理解しておいてください。

デタベス固有の負荷分散のしくみ

データベース固有のロード・バランシングでは,各データベース・サーバにあるすべてのアクティブなデータベースの名前を定期的に照会するモニターを設定します。Citrix ADCアプライアンスは結果を格納し,監視によって取得した情報に基づいてレコードを定期的に更新します。クライアントが特定のデータベースに問い合わせると,アプライアンスは設定された負荷分散方式を使用してサービスを選択し,そのレコードをチェックして,そのサービスでデータベースが使用可能かどうかを判断します。レコードでデータベースが使用できないことが示されている場合,構成された負荷分散方法を使用して次に使用可能なサービスを選択し,チェックを繰り返します。アプラ,デ。

負荷分散を有効にする

負荷分散機能が無効になっている場合,サービスや仮想サーバーなどの負荷分散エンティティを構成できます。エンティティは,この機能を有効にするまで機能しません。

cliを使用して負荷分散を有効にする

コマンドプロンプトで次のコマンドを入力して,負荷分散を有効にし,構成を確認します。

enable ns feature LB show ns feature 

> enable ns feature LoadBalancing Done > show ns feature feature Acronym Status ------- ------- ------ 1) Web Logging WL OFF 2) Surge Protection SP ON 3) LoadBalancing LB ON…24) NetScaler Push Push OFF Done 

guiを使用して負荷分散を有効にする

システム]>[設定]に移動し,[基本機能の構成]で[負荷分散を選択します。

デタベス固有の負荷分散のために負荷分散仮想サバを構成する

可用性に基づいてデータベースを負荷分散するように仮想サーバーを構成するには,仮想サーバーでデータベース固有の負荷分散パラメーターを有効にします。このパラメータを有効にすると,負荷分散ロジックが変更され,Citrix ADCアプライアンスが選択したサービスに送信された監視プローブの結果を参照してから,そのサービスにクエリが転送されます。

cliを使用して,デタベス固有の負荷分散用に負荷分散仮想サバを構成します

コマンドプロンプトで次のコマンドを入力して,データベース固有の負荷分散用に負荷分散仮想サーバーを構成し,構成を確認します。

add lb vserver     -dbsLb ENABLED show lb vserver  

サビスの構成

負荷分散機能を有効にした後,負荷分散設定に含めるアプリケーションサーバーごとに少なくとも1つのサービスを作成する必要があります。構成するサ,Citrix ADCアプラ。各サビスには名前があり,ipアドレス,ポト,および提供されるデタの種類を指定します。

最初にサーバオブジェクトを作成せずにサービスを作成する場合,サービスのIPアドレスもサービスをホストするサーバの名前になります。サーバーをIPアドレスではなく名前で識別する場合は,サーバーオブジェクトを作成し,サービスの作成時にIPアドレスの代わりにサーバー名を指定できます。

デタベスユザを構成する

デタベスでは,接続は常にステトフルです。まり,接続が確立されると,認証される必要があります。

Citrix ADCでデタベスのユザ名とパスワドを構成します。たとえば,データベースにユーザー约翰が設定されている場合は,ADCにもユーザー约翰を設定する必要があります。adcに追加されたデタベスのユnsconfigファ邮箱ルに追加されます。

名前では,大文字と小文字が区別されます。

ADCは,これらのユーザー資格情報を使用してクライアントを認証し,データベースサーバーとのサーバー接続を認証します。

cliを使用してデタベスユザを追加します

コマンドプロンプトで,次のように入力します。

添加数据库用户<用户名> -密码<密码> 

增加数据库用户nsbuser -password dd260427edf 

guiを使用してデタベスユザを追加します

[システム]>[ユザ管理]>[デタベスユザ.に移動し,デ。

データベースサーバーでデータベースユーザーのパスワードを変更した場合は,Citrix ADCアプライアンスで構成されている対応するユーザーのパスワードをリセットする必要があります。

cliを使用してデタベスユ

コマンドプロンプトで,次のように入力します。

设置db user  -password  

设置数据库用户nsbuser -password dd260538abs 

guiを使用してデタベスユ

[システム]>[ユザ管理]>[デタベスユザに移動し,ユザを選択して,パスワ。

データベースサーバー上にデータベースユーザーが存在しなくなった場合は,Citrix ADCアプライアンスからユーザーを削除できます。ただし,ユーザがデータベースサーバ上に存在し続け,ADCアプライアンスからそのユーザを削除すると,このユーザ名のクライアントからの要求は認証されません。したがって,ユザティングされません。

cliを使用してデタベスユザを削除します

コマンドプロンプトで,次のように入力します。

Rm db user  

Rm dbuser nssdbuser 

guiを使用してデタベスユザを削除します

[システム]>[ユザ管理]>[デタベスユザ.に移動し,ユザを選択して[削除をクリックします。

アクティブなデタベスの名前を取得するようにモニタを構成します

モニタを作成して,データベース・インスタンス上のすべてのアクティブ・データベースのリストを取得できます。モニターは,有効なユーザー資格情報を使用してデータベースサーバーにログオンし,適切なSQLクエリを実行します。使用する必要があるSQLクエリは,SQLサ。たとえば,该データベースミラーリングのセットアップでは,次のクエリを使用して,サーバーインスタンスで使用可能なアクティブなデータベースの一覧を取得できます。

从sys中选择名称。其中state=0 

MySQLデータベース設定では,次のクエリを使用して,サーバーインスタンスで使用可能なアクティブなデータベースのリストを取得できます。

デタベスの表示

また,エラ状態の応答を評価し,エラを構成します。応答にエラが含まれている場合,モニタはサビスを下来としてマクします。アプラアンスは,エラが返されなくなるまで,サビスを負荷分散の決定から除外します。

データベース固有の負荷分散機能は,该およびMySQLサービスタイプでのみサポートされます。したがって、モニタタereplicationプはmssql-ecvまたはmysql-ecvである必要があります。

CLIを使用して,サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成します

コマンドプロンプトで次のコマンドを入力して,サービスでホストされているすべてのアクティブなデータベースの名前を取得し,構成を確認します。

add lb monitor   -userName  -sqlQuery  -evalRule  -storedb ENABLED show lb monitor  

GUIを使用して,サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成します

  1. トラフィック管理]>[負荷分散]>[モニタ,mssql-ecvまたはmysql-ecvタ。
  2. 特殊パラメタで,ユ,ザ,名,クエリ,およびル,ルを指定します。たとえば,MSSQL-ECVの場合,クエリは"状態= 0のsys. ecv。数据库から名前を選択"である必要があります)。また,ルルは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 のプライマリサービスです。

HaデプロSQL

サビス サビス上のアクティブなデタベスのリスト
S1 Db1、db2、db3、db4
S2 DB4, DB4
S3 DB4, DB4
S4 DB1、DB2
S5 DB1、DB2
可用性グルプ デタベス 可用性グルプのサバを表すサビス
AV1 DB1、DB2 S1, S4, S5
AV2 DB4, DB4 S1、S2、S3

クエリは次のようにフロされます。

  1. Av1の读取クエリは,s4とs5の間で負荷分散されます。S1はav1のプラescマリです。
  2. Av1の写クエリは,l1写に送信されます。
  3. Av2の读クエリは,s1とs3の間で負荷分散されます。S2はav2のプラereplicationマリです。
  4. Av1の写クエリは,l2に送信されます。

構成例

  1. 負荷分散とコンテンスッチング仮想サバを構成します。
    • 启用lb vserver lbwrite -dbslb功能
    • add lbvserver lbread MSSQL -dbslb enabled .使用实例
    • add csvserver csv MSSQL 1.1.1.10 1433
  2. 可用性グループごとに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
  3. サビスを負荷分散仮想サバにバ。
    • bind lbvserver lbwrite L1
    • 绑定lbvserver lbwrite L2
    • 绑定lbvserver lbread s1
    • 绑定lbvserver lbread s2
    • 绑定lbvserver lbread s3
    • 绑定lbvserver lbread s4
    • 绑定lbvserver lbread s5
  4. デタベス·ユザを構成します。
    • 添加数据库用户nsbuser1 -密码dd260427edf
    • 添加数据库用户nsbuser2 -密码ccd1234xyzw
  5. リスナーサービスごとにmonitor_L1とmonitor_L2の2つのモニターを構成して,その可用性グループ内のアクティブなデータベースの一覧を取得します。モニタmonitor1を追加して,セカンダリデータベースサーバーインスタンスのデータベースのリストを取得します。
    • add lb monitor monitor_L1 MSSQL-ECV -userName user1 -sqlQuery "SELECT name FROM sys. name "数据库内部连接系统。dm_hadr_availability_replica_states b ON .replica_id=b。sys. replica_id INNER JOIN。availability_group_listeners c on b.group_id = c.group_id INNER JOINavailability_group_listener_ip_addresses d on c.listener_id = d.listener_id WHERE b.role = 1 and d.l 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. name "数据库内部连接系统。dm_hadr_availability_replicca_states b ON .replica_id=b。sys. replica_id INNER JOIN。availability_group_listeners c on b.group_id = c.group_id INNER JOINWHERE b.role = 1 and d.ip_address like '1.1.1.12'" -evalRule "MSSQL.RES.TYPE.NE(ERROR)"-storedb启用
    • add lb monitor monitor1 MSSQL-ECV -userNameuser1 -sqlQuery "SELECT name FROM sys. name "数据库内部连接系统。dm_hadr_availability_replica_states b ON .replica_id=b。WHERE b.role = 2" -evalRule "MSSQL.RES.TYPE.NE(ERROR)"-storedb启用
  6. 読み取りおよび書き込みポリシを構成します。
    • 添加cs策略pol_write -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("insert")"
    • 添加cs策略pol_read -rule "MSSQL.REQ.QUERY.TEXT.CONTAINS("select")"
  7. ポリシをコンテン。
    • bind csvserver csv -targetLBVserver lbwrite -policyName pol_write -priority
    • bind csvserver csv -targetLBVserver lbread -policyName pol_read -priority
  8. モニタをサビスにバ。監視をサービスL1およびL2にバインドして,リスナーである可用性グループのアクティブなデータベースの一覧を取得します。読み取り専用の仮想サバにバ。
    • 绑定服务L1 -monitorName monitor_L1
    • 绑定服务L2 -monitorName monitor_L2
    • 绑定服务s1 -monitorName monitor1
    • 绑定服务s2 -monitorName monitor1
    • 绑定服务s3 -monitorName monitor1
    • 绑定服务s4 -monitorName monitor1
    • 绑定服务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 

サビスを構成するには,次の手順に従います。

添加服务5.5.5.5 MSSQL 1433 .使用实例

コマンドラインを使用して,サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成するには,次の手順を実行します。

add lb monitor mssql-monitor1 MSSQL-ECV -userName user1 -sqlQuery "select name from sys. name "数据库状态=0" -evalRule "MSSQL.RES.TYPE.NE(ERROR)"-storedb EN Done显示lb monitor mssql-monitor1 1)名称.......: mssql-monitor1类型……: MSSQL-ECV…特殊的参数:数据库……:“用户名…:“user1”查询. .:从sys中选择名称。database where state=0 EvalRule…:MSSQL.RES.TYPE.NE(ERROR) Version…: 70 STORE_DB……:在ABLED Done 

MySQL仮想サバの設定例

デタベス固有のロド·バランシング用にロド·バランシング仮想サバを構成するには,次の手順を実行します。

add lb vserver DBSpecificLB1 MYSQL 192.0.2.10 3306 - dbslb ENABLED完成显示lb vserver DBSpecificLB1 DBSpecificLB1 (192.0.2.10:3306) - MYSQL类型:ADDRESS…DBS_LB: ENABLED Done 

サビスを構成するには,次の手順に従います。

5.5.5.5 MYSQL 3306 

コマンドラインを使用して,サービスでホストされているすべてのアクティブなデータベースの名前を取得するようにモニターを構成するには,次の手順を実行します。

add lb monitor mysql-monitor1 MYSQL-ECV -userName user1 -sqlQuery "show databases" -evalRule "MYSQL.RES.TYPE.NE(ERROR)"-storedb ENABLED完成显示lb monitor mysql-monitor1 1)名称.......: mysql-monitor1类型……: MYSQL-ECV状态……:使…特殊的参数:数据库……:“用户名…:“user1”查询. .:show databases EvalRule...:MYSQL.RES.TYPE.NE(ERROR) STORE_DB...:ENABLED Done