Docker デプロイメント Always on クラスターSQL Server は 2016 年に Linux のサポートを開始しました。 2017 バージョンと 2019 バージョンのリリースにより、Linux およびコンテナー プラットフォーム上の HA/DR、Kubernetes、ビッグ データ クラスター ソリューションのサポートが開始されました。 この記事では、3 ノードの Docker コンテナーに SQL Server 2019 をインストールし、AlwaysOn 可用性グループを作成します。 私たちの目標は、単一の構成ファイルを使用して環境を迅速に準備することです。したがって、開発者やテストチームは、互換性、接続性、コード機能などのテストを迅速に実行できます。 このセクションでは、まずコンテナに可用性グループをインストールできるように、Ubuntu ベースのイメージを準備します。その後、必要なインストールを実行します。 重要: この操作は実稼働環境では推奨されません。インストールはUbuntu 18.04で実行されました。 DockerをインストールするDockerのインストールについては紹介しませんので、ご自身でインストールしてください。 建築
関連するコンテナイメージを準備する次のようにオペレーティングシステムとデータベースのDockerイメージをプルします。 オペレーティング·システムdocker pull ubuntu:18.04 SQL Server 2019 docker pull mcr.microsoft.com/mssql/server:2019-latest ダウンロードしたイメージ情報は ミラー アドレス: https://hub.docker.com/_/microsoft-mssql-server 構成コンテナを起動する環境が準備できたら、正式な設定とインストールを開始します。 ステップ1: Dockerfileを作成するdockerfile や docker-compose.yml などのファイルを保存するディレクトリを作成します。 mkdir /sql2019ha cd /sql2019ha dockerfile をタッチする vi ドッカーファイル dockerfileの内容は次のとおりです ubuntu:18.04より apt-get updateを実行する apt install sudo wget curl gnupg gnupg1 gnupg2 -yを実行します。 apt install software-properties-common systemd vim -y を実行します。 wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo apt-key add - を実行します。 add-apt-repository "$(wget -qO- https://packages.microsoft.com/config/ubuntu/18.04/mssql-server-2019.list)" を実行します。 apt-get updateを実行する apt-get install -y mssql-serverを実行します。 /opt/mssql/bin/mssql-conf を実行して hadr.hadrenabled 1 を設定します。 /opt/mssql/bin/mssql-conf を実行して sqlagent.enabled を true に設定します。 エクスポーズ1433 エントリポイント /opt/mssql/bin/sqlservr 例:
ステップ2: イメージをコンパイルする後続のインストールのために、Dockerfile を使用してイメージをコンパイルします。コマンド: ここで、 以下の出力は簡潔です。実際には、出力はたくさんあり、ネットワーク速度によっては、パッケージやデータベースのインストールなどに時間がかかります。 ビルドが成功しました。 ビルドコンテキストを Docker デーモンに送信 2.56kB ステップ 1/12: ubuntu:18.04 から ---> c3c304cb4f22 ステップ 2/12: apt-get update を実行する ---> 950e50f80f00 で実行中 入手:1 http://archive.ubuntu.com/ubuntu bionic InRelease [242 kB] 入手:2 http://security.ubuntu.com/ubuntu bionic-security InRelease [88.7 kB] 取得:3 http://security.ubuntu.com/ubuntu bionic-security/main amd64 パッケージ [932 kB] 取得:4 http://archive.ubuntu.com/ubuntu bionic-updates InRelease [88.7 kB]... ステップ 3/12: apt install sudo wget curl gnupg gnupg1 gnupg2 -y を実行します。 ---> edc9d15b2383 で実行中 .. .. ステップ 8/12: sudo apt-get install -y mssql-server を実行します。 ---> 43d82a503f8a で実行中 パッケージリストを読み込んでいます... 依存関係ツリーを構築しています... 状態情報を読み取っています... 次の追加パッケージがインストールされます: ステップ 9/12: sudo /opt/mssql/bin/mssql-conf set hadr.hadrenabled 1 を実行します。 ---> 166c6596d2dd で実行中 この設定を適用するにはSQL Serverを再起動する必要があります。 'systemctl mssql-server.service を再起動します。 中間コンテナ 166c6596d2dd を削除しています ---> bcdb057fed43 ステップ 10/12: sudo /opt/mssql/bin/mssql-conf set sqlagent.enabled true を実行します。 ---> 22dd6a93d1ef で実行中 この設定を適用するにはSQL Serverを再起動する必要があります。 'systemctl mssql-server.service を再起動します。 中間コンテナ 22dd6a93d1ef を削除 ---> 6b90afbaf94e ステップ 11/12: EXPOSE 1433 ---> bcc14f3b0bad で実行中 中間コンテナ bcc14f3b0bad を削除しています ---> 4aae1563aa74 ステップ 12/12: ENTRYPOINT /opt/mssql/bin/sqlservr ---> 68b6ed45ff6a で実行中 中間コンテナ 68b6ed45ff6a を削除しています ---> b7467618c371 b7467618c371 の構築に成功しました sqlag2019:ha のタグ付けに成功しました 最後に ステップ3: コンテナを作成するイメージがコンパイルされたので、 $ docker-compose.yml をタッチします $ vi docker-compose.yml バージョン: '3' サービス: db1: コンテナ名: sqlNode1 画像: sqlag2019:ha ホスト名: sqlNode1 ドメイン名: lab.local 環境: SA_パスワード: "MyPassWord123" EULA に同意: 「Y」 ポート: - 「1501:1433」 追加ホスト: sqlNode2.labl.local: "172.16.238.22" sqlNode3.labl.local: "172.16.238.23" ネットワーク: 内部: ipv4_アドレス: 172.16.238.21 db2: コンテナ名: sqlNode2 画像: sqlag2019:ha ホスト名: sqlNode2 ドメイン名: lab.local 環境: SA_パスワード: "MyPassWord123" EULA に同意: 「Y」 ポート: - 「1502:1433」 追加ホスト: sqlNode1.lab.local: "172.16.238.21" sqlNode3.lab.local: "172.16.238.23" ネットワーク: 内部: ipv4_アドレス: 172.16.238.22 db3: コンテナ名: sqlNode3 画像: sqlag2019:ha ホスト名: sqlNode3 ドメイン名: lab.local 環境: SA_パスワード: "MyPassWord123" EULA に同意: 「Y」 ポート: - 「1503:1433」 追加ホスト: sqlNode1.lab.local: "172.16.238.21" sqlNode2.lab.local: "172.16.238.22" ネットワーク: 内部: ipv4_アドレス: 172.16.238.23 ネットワーク: 内部: ipam: ドライバー: デフォルト 設定: - サブネット: 172.16.238.0/24 ステップ4: コンテナを起動する次に、 $ docker-compose アップ -d デフォルト ドライバーを使用してネットワーク「sql2019hademo_internal」を作成しています sqlNode2 を作成しています... sqlNode1 を作成しています... sqlNode2 を作成しています sqlNode3 を作成しています... sqlNode1 を作成しています sqlNode2 を作成しています...完了
コンテナのステータスを表示する $ docker-compose ps 名前 コマンド 状態 ポート -------------------------------------------------------------------------- sqlNode1 /bin/sh -c /opt/mssql/bin/ ... 0.0.0.0:1501->1433/tcp を起動 sqlNode2 /bin/sh -c /opt/mssql/bin/ ... 0.0.0.0:1502->1433/tcp が起動します sqlNode3 /bin/sh -c /opt/mssql/bin/ ... 0.0.0.0:1503->1433/tcp が起動します これでコンテナが起動しました。次に、SSMS を介してデータベースに接続し、関連するチェックを実行して ALWAYSON を構成します。 ステップ5: SSMSをMSSQLに接続する次のように、ホストの外部ネットワーク IP + ポートを介して対応するデータベースに接続します。
データベースアイコンも Linux アイコンであることがわかります。 構成 - データベースこの部分では、KEY 暗号化ファイルの作成、ユーザーや利用可能なグループの管理など、データベース内の関連する構成を実行します。 ステップ 1: メイン データベース (sqlNode1) に接続するメインデータベースはノード1、ポートは1501、接続方法は上記の通りです。 証明書と秘密鍵を これらのファイルを他のノードにコピーし、次のファイルに基づいてマスターキーと証明書を作成します。次のスクリプトを実行します。 マスターを使用する 行く パスワード = 'MyStr0ngPa$w0rd' でログイン dbm_login を作成します。 ログイン dbm_login のユーザー dbm_user を作成します。 行く PASSWORD = 'MyStr0ngPa$w0rd' によるマスター キー暗号化の作成; 行く SUBJECT = 'dbm' を指定して証明書 dbm_certificate を作成します。 バックアップ証明書 dbm_certificate ファイル = '/tmp/dbm_certificate.cer' 秘密鍵付き( ファイル = '/tmp/dbm_certificate.pvk', パスワードによる暗号化 = 'MyStr0ngPa$w0rd' ); 行く ファイルを他の 2 つのノードにコピーします。 sqlNode1 に dbm_certificate.cer というファイルを作成します。 sqlNode1 に .pvk というファイルを作成します。 $ docker cp dbm_certificate.cer sqlNode2:/tmp/ $ docker cp dbm_certificate.pvk sqlNode2:/tmp/ $ docker cp dbm_certificate.cer sqlNode3:/tmp/ $ docker cp dbm_certificate.pvk sqlNode3:/tmp/ ステップ 2: スレーブ ライブラリ (sqlNode2 および sqlNode3) に接続する2 つのスレーブ ライブラリのポートは 1502 と 1503 です。次に、マスター ライブラリによって実行される操作を次のように繰り返します。 パスワード = 'MyStr0ngPa$w0rd' でログイン dbm_login を作成します。 ログイン dbm_login のユーザー dbm_user を作成します。 行く PASSWORD = 'MyStr0ngPa$w0rd' によるマスター キー暗号化の作成; 行く 証明書の作成 dbm_certificate 認証 dbm_user ファイルから = '/tmp/dbm_certificate.cer' 秘密鍵付き( ファイル = '/tmp/dbm_certificate.pvk', パスワードによる復号 = 'MyStr0ngPa$w0rd' ); 行く ステップ3: すべてのノードすべてのノードで次のコマンドを実行します。 エンドポイントの作成 [Hadr_endpoint] AS TCP (LISTENER_IP = (0.0.0.0)、LISTENER_PORT = 5022) データミラーリングの場合( 役割 = 全員、 認証 = 証明書 dbm_certificate、 暗号化 = 必要なアルゴリズム AES ); ALTER ENDPOINT [Hadr_endpoint] STATE = STARTED; ENDPOINT::[Hadr_endpoint]への接続を[dbm_login]に許可します。 自動起動を常に有効にして、すべてのノードで次のコマンドを実行します。 ALTER EVENT SESSION AlwaysOn_health ON SERVER を (STARTUP_STATE=ON) にして変更します。 行く ステップ4: 高可用性グループを作成するSSMS ツールと T-SQL を使用できます。以下は T-SQL の例です。 次のスクリプトを実行して、 Linux に AlwaysOn AG をインストールする場合は、Pacemaker に対して CLUSTER_TYPE = EXTERNAL を選択する必要があります。 可用性グループの作成 [AG1] (CLUSTER_TYPE = なし) レプリカ用 N'sqlNode1' と ( ENDPOINT_URL = N'tcp://sqlNode1:5022', 可用性モード = 非同期コミット、 SEEDING_MODE = 自動、 FAILOVER_MODE = 手動、 SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL) )、 N'sqlNode2' と ( ENDPOINT_URL = N'tcp://sqlNode2:5022', 可用性モード = 非同期コミット、 SEEDING_MODE = 自動、 FAILOVER_MODE = 手動、 SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL) )、 N'sqlNode3' と ( ENDPOINT_URL = N'tcp://sqlNode3:5022', 可用性モード = 非同期コミット、 SEEDING_MODE = 自動、 FAILOVER_MODE = 手動、 SECONDARY_ROLE (ALLOW_CONNECTIONS = ALL) ); 行く スレーブ ライブラリで次のコマンドを実行して、スレーブ ライブラリを AG グループに追加します。 ALTER AVAILABILITY GROUP [ag1] を (CLUSTER_TYPE = NONE) に結合します。 ALTER AVAILABILITY GROUP [ag1] GRANT CREATE ANY DATABASE; 行く この時点で、Docker コンテナーへの SQL Server AlwaysOn クラスターのインストールは完了です。 注: 可用性グループを作成するために 可用性グループの変更 [ag1] FORCE_FAILOVER_ALLOW_DATA_LOSS テストプライマリ データベース上にデータベースを作成し、可用性グループ AG に追加します。 データベース agtestdb を作成します。 行く ALTER DATABASE agtestdb SET RECOVERY FULL; 行く データベース agtestdb をディスクにバックアップ = '/var/opt/mssql/data/agtestdb.bak'; 行く 可用性グループを変更 [ag1] データベースを追加 [agtestdb]; 行く SSMS を使用して、同期ステータスが正常かどうかを確認します。 参考リンクhttps://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15 これで、SQL Server 2019 Always On クラスターの Docker デプロイメントの実装に関するこの記事は終了です。SQLServer クラスターの Docker デプロイメントに関する関連コンテンツの詳細については、123WORDPRESS.COM で以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
>>: 効率化に役立つ 20 の CSS コーディングのヒント (並べ替え)
1. 親コンポーネントは props を使用して子コンポーネントにデータを渡すことができます。 2....
目次setStateを使用する理由setStateの使用法非同期または同期更新要約するsetStat...
データの初期化 `test_01` が存在する場合はテーブルを削除します。 テーブル「test_01...
目次デコレータパターンの紹介TypeScript のデコレータデコレータの使用デコレーターファクトリ...
目次1. データベースを理解する1.1 データベースとデータ構造の関係1.2 なぜデータベースが必要...
1. vue uiでプロジェクトを作成する 2. 基本設定項目を選択する 3. プロジェクトを実行す...
1. テーブル構造テーブル人id名前1あなた2あなた(スペース) 3あなた(スペース2つ) 2. ク...
<abbr>タグと<acronym>タグは、Web ページに表示される略語と...
今日、仕事中に左結合に関するSQLの問題に遭遇しました。後で解決しましたが、この問題を通じてSQLの...
実際の開発環境や本番環境では、コンテナを独立して実行することはあまりなく、複数のコンテナを一緒に実行...
CSS セレクターHTML タグにスタイルを設定すると、タグの属性を設定できます。 <div ...
1. 問題の説明Docker コンテナにインストールされているストレージが終了状態になっているため、...
前回は、Explain 実行プランの表示、インデックスの分析など、MySQL での SQL クエリの...
ピップとは何かpip は、Python パッケージの検索、ダウンロード、インストール、アンインストー...
MySQL解凍版とNavicatデータベース操作ツールのインストールは、以下のとおりです。 1. M...