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 コーディングのヒント (並べ替え)
Docker が今日非常に人気がある理由は、主にその軽量性、迅速な展開、およびリソースの利用にありま...
序文MySQL スロー クエリ ログは、日常業務でよく遭遇する機能です。MySQL スロー クエリ ...
(P4) Web 標準は一連の標準で構成されています。中心となる概念は、Web ページの構造、スタイ...
目次マルチ環境構成とは何ですか? また、なぜそれが必要なのですか? .env ファイルはどこで設定さ...
目次1. 開発前の準備2. 新しいプロジェクトIdea は Java 開発のための強力なツールであり...
CSS を導入する方法には、インライン スタイル、内部スタイル シート、外部スタイル シートの 3 ...
Centos8仮想マシンを起動し、上下キーを押して図1のインターフェースの最初の行を選択します。図1...
Windows フォームと同様の効果を得るには、中央をドラッグして div の位置を変更し、端をド...
目次1. Dockerコンサルの概要2. nginxとconsulをベースにした自動検出と高可用性の...
オペレーティング システム win10 MySQL は、公式 Web サイトからダウンロードした 6...
目次1. 短絡判定2. オプション連鎖演算子 (?) 3. ヌル合体演算子 (??) 4. 終了関数...
この記事では、Vueで開始時間と終了時間の範囲を照会する方法を参考までに紹介します。具体的な内容は次...
目次序文導入ngram全文パーサー全文インデックスを作成する検索方法1. 自然言語検索(自然言語モー...
序文vsftp は使いやすく安全な FTP サーバー ソフトウェアです。システムユーザーまたは仮想ユ...
目次序文:特定の操作ステップ1: プレハブを準備するステップ2: オブジェクトプールを初期化するステ...