Kubernetes クラスター上の SQL Server Always On 可用性グループをデプロイします。Deploy a SQL Server Always On availability group on a Kubernetes cluster

この記事の例では、3 つのレプリカでの Kubernetes クラスター上の SQL Server Always On 可用性グループをデプロイします。The example in this article deploys a SQL Server Always On availability group on a Kubernetes cluster with three replicas. セカンダリ レプリカは同期コミット モードです。The secondary replicas are in synchronous commit mode.

Kubernetes で、展開には、SQL Server の演算子では、SQL Server のコンテナー、および負荷が含まれていますバランサー サービス。On Kubernetes, the deployment includes a SQL Server operator, the SQL Server containers, and load balancer services. 演算子は、可用性グループを自動的に調整します。The operator orchestrates the availability group automatically. この記事で説明する方法。This article explains how to:

  • 演算子、SQL Server のコンテナー、および負荷分散サービスをデプロイします。Deploy the operator, SQL Server containers, and load-balancing services.
  • サービスと可用性グループに接続します。Connect to the availability group with the services.
  • データベースを可用性グループに追加します。Add a database to the availability group.

要件Requirements

  • Kubernetes クラスターA Kubernetes cluster
  • Kubernetes バージョン 1.11.0 以降Kubernetes version 1.11.0 or higher
  • 少なくとも 3 つのノードAt least three nodes
  • kubectlkubectl
  • アクセス、 sql server のサンプルGitHub リポジトリAccess to the sql-server-samples GitHub repository

注意

Kubernetes クラスターの任意の型を使用することができます。You can use any type of Kubernetes cluster. Azure Kubernetes Service (AKS) での Kubernetes クラスターを作成するを参照してください。 AKS クラスターの作成です。To create a Kubernetes cluster on Azure Kubernetes Service (AKS), see Create an AKS cluster. 次のスクリプトでは、Azure で 4 つのノードの Kubernetes クラスターを作成します。The following script creates a four-node Kubernetes cluster in Azure.

az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 4 --kubernetes-version 1.11.3 --generate-ssh-keys

演算子、SQL Server のコンテナー、およびサービスの負荷分散展開します。Deploy the operator, SQL Server containers, and load-balancing services

  1. 作成、名前空間します。Create a namespace.

    この例と呼ばれる名前空間を使用してag1します。This example uses a namespace called ag1. 名前空間を作成するには、次のコマンドを実行します。Run the following command to create the namespace.

    kubectl create namespace ag1
    

    このソリューションに属するすべてのオブジェクトは、ag1名前空間。All objects belonging to this solution are in the ag1 namespace.

  2. 構成し、SQL Server の演算子のマニフェストをデプロイします。Configure and deploy the SQL Server operator manifest.

    SQL Server のコピー operator.yaml ファイルからsql server のサンプルします。Copy the SQL Server operator.yaml file from sql-server-samples.

    operator.yamlファイルは、Kubernetes の演算子の配置マニフェスト。The operator.yaml file is the deployment manifest for the Kubernetes operator.

    マニフェストは、Kubernetes クラスターに適用されます。Apply the manifest to the Kubernetes cluster.

    kubectl apply -f operator.yaml --namespace ag1
    
  3. Kubernetes 用のパスワードを持つシークレットの作成、saアカウントと SQL Server インスタンスのマスター _ キー。Create a secret for Kubernetes with passwords for the sa account, and the SQL Server instance master key.

    シークレットの作成kubectlです。Create the secret with kubectl.

    次の例では、という名前のシークレットを作成するsql-secretsで、ag1名前空間。The following example creates a secret named sql-secrets in the ag1 namespace. シークレットは、2 つのパスワードを格納します。The secret stores two passwords:

    • sapassword SQL Server のパスワードを格納saアカウント。sapassword stores the password for the SQL Server sa account.
    • masterkeypassword SQL Server のマスター _ キーの作成に使用するパスワードを格納します。masterkeypassword stores the password used to create the SQL Server master key.

    ターミナルに、スクリプトをコピーします。Copy the script to your terminal. 各を置き換える<>複雑なパスワードおよびシークレットを作成するスクリプトを実行します。Replace each <> with a complex password, and run the script to create the secret.

    注意

    パスワードは使用できません&または` 文字。The password can't use & or ` characters.

    kubectl create secret generic sql-secrets --from-literal=sapassword="<>" --from-literal=masterkeypassword="<>"  --namespace ag1
    
  4. SQL Server のカスタム リソースをデプロイします。Deploy the SQL Server custom resource.

    SQL Server のマニフェストをコピー sqlserver.yaml からsql server のサンプルします。Copy the SQL Server manifest sqlserver.yaml from sql-server-samples.

    注意

    sqlserver.yamlファイルは、SQL Server のコンテナー、永続ボリューム要求、永続ボリューム、および SQL Server インスタンスごとに必要な負荷分散サービスについて説明します。The sqlserver.yaml file describes the SQL Server containers, persistent volume claims, persistent volumes, and load-balancing services that are required for each SQL Server instance.

    マニフェストは、Kubernetes クラスターに適用されます。Apply the manifest to the Kubernetes cluster.

    kubectl apply -f sqlserver.yaml --namespace ag1
    

次の図は、成功したアプリケーションのkubectl applyこの例です。The following image shows successful application of kubectl apply for this example.

sqlservers を作成します。

SQL Server のマニフェストを適用した後、演算子は、SQL Server のコンテナーを展開します。After you apply the SQL Server manifest, the operator deploys the SQL Server containers.

Kubernetes では、pod でコンテナーを配置します。Kubernetes places the containers in pods. 使用kubectl get pods --namespace ag1ポッドの状態を確認します。Use kubectl get pods --namespace ag1 to see the status of the pods. 次の図は、SQL Server のポッドを展開した後に、展開の例を示します。The following image shows the example deployment after the SQL Server pods are deployed.

ポッドの構築

展開を監視します。Monitor the deployment

使用することができます、 Azure Kubernetes Service の Kubernetes ダッシュ ボード展開の監視。You can use the Kubernetes dashboard with Azure Kubernetes Service to monitor the deployment.

使用az aks browseをダッシュ ボードを起動します。Use az aks browse to launch the dashboard.

サービスと可用性グループへの接続します。Connect to the availability group with the services

ag-services.yaml からsql server のサンプルの例は、可用性グループ レプリカに接続できる負荷分散サービスをについて説明します。The ag-services.yaml from sql-server-samples example describes load-balancing services that can connect to availability group replicas.

  • ag1-primary プライマリ レプリカに接続するエンドポイントを提供します。ag1-primary provides an endpoint to connect to the primary replica.
  • ag1-secondary 任意のセカンダリ レプリカに接続するエンドポイントを提供します。ag1-secondary provides an endpoint to connect to any secondary replica.

マニフェスト ファイルを適用すると、Kubernetes には、レプリカの種類ごとに負荷分散サービスが作成されます。When you apply the manifest file, Kubernetes creates the load-balancing services for each type of replica. 負荷分散サービスには、IP アドレスが含まれています。The load-balancing service includes an IP address. この IP アドレスを使用する必要があるレプリカの種類に接続します。Use this IP address to connect to the type of replica you need.

サービスをデプロイするには、次のコマンドを実行します。To deploy the services, run the following command.

kubectl apply -f ag-services.yaml --namespace ag1

サービスをデプロイした後を使用して、kubectl get services --namespace ag1サービスの IP アドレスを識別します。After you deploy the services, use kubectl get services --namespace ag1 to identify the IP address for the services.

IP アドレスを持つことができますに接続する SQL Server インスタンスをホストするレプリカの各型。With the IP address, you can connect to the SQL Server instance that hosts each type of replica.

次の図を示しています。The following image shows:

  • 出力kubectl get services名前空間のag1します。The output from kubectl get services for the namespace ag1.

  • SQL Server の各コンテナーに対して作成された負荷分散サービスです。The load-balancing services that are created for each SQL Server container. エンドポイントとしてこれらの IP アドレスを使用して、クラスター内の SQL Server のインスタンスに直接接続します。Use these IP addresses as endpoints to connect directly to the instances of SQL Server in the cluster.

  • sqlcmd 、プライマリ レプリカへの接続で、saロード バランサーのエンドポイントを使用してアカウント。The sqlcmd connection to the primary replica, with the sa account via the load-balancer endpoint.

接続

可用性グループにデータベースを追加するAdd a database to the availability group

注意

現時点では、SQL Server Management Studio は、可用性グループにデータベースを追加することはできません。At this time, SQL Server Management Studios can't add a database to an availability group. TRANSACT-SQL を使用します。Use Transact-SQL.

Kubernetes では、SQL Server のコンテナーが作成された後は、データベースを可用性グループに追加する次の手順を完了します。After Kubernetes creates the SQL Server containers, complete the following steps to add a database to the availability group.

  1. 接続クラスター内の SQL Server インスタンスにします。Connect to a SQL Server instance in the cluster.

  2. データベースの作成。Create a database.

    CREATE DATABASE [demodb]
    
  3. 完全なログ チェーンを開始するデータベースのバックアップを実行します。Take a full backup of the database to start the log chain.

    USE MASTER
    GO
    BACKUP DATABASE [demodb] 
    TO DISK = N'/var/opt/mssql/data/demodb.bak'
    
  4. データベースを可用性グループに追加します。Add the database to the availability group.

    ALTER AVAILABILITY GROUP [ag1] ADD DATABASE [demodb]
    

SQL Server がセカンダリ レプリカを自動的に作成できるように、自動シード処理では、可用性グループが作成されます。The availability group is created with automatic seeding so that SQL Server automatically creates the secondary replicas.

SQL Server Management Studio の可用性グループ ダッシュ ボードから可用性グループの状態を表示することができます。You can view the state of the availability group from the SQL Server Management Studio Availability Groups dashboard.

ダッシュボード

次の手順Next steps