クラウドを使用してデータを保存したり、マスターに障害が発生した場合のフェイルオーバーオプションとして使用したりすることは非常に一般的です。クラウドプラットフォームを介してデータを保存、管理、取得、操作できるクラウドプロバイダーがいくつかあります。インターネット経由でアクセス可能。各クラウドプロバイダーには独自の製品と独自の機能があり、それぞれに異なるコストモデルがあります。
Microsoft Azureは、これらの可能性のあるプロバイダーの1つです。このブログでは、ディザスタリカバリサイトとしてMicrosoft Azureがプライマリストレージに提供する機能を確認し、特に混合PostgreSQLデータベース環境をどのように処理するかを確認します。
MicrosoftAzureでのPostgreSQLデータベースインスタンスの展開
このタスクを実行する前に、このインスタンスをどのように使用するか、およびどのAzure製品が最適かを決定する必要があります。 MicrosoftAzureにPostgreSQLインスタンスをデプロイする基本的な方法は2つあります。
- Azure Database for PostgreSQL :クラウドで高可用性PostgreSQLデータベースを実行、管理、およびスケーリングするために使用できるマネージドサービスです。シングルサーバーとハイパースケールの2つの導入オプションで利用できます。
- 仮想マシン :オンデマンド、大規模、安全な仮想化インフラストラクチャを提供します。 Ubuntu Server、RedHat Enterprise Linux、SUSE Linux Enterprise Server、CentOS、Debian、およびWindows Serverをサポートしており、アプリケーションの開発、テスト、実行、およびデータセンターの拡張をわずか数秒で行うことができます。
このブログでは、PostgreSQL用のAzureデータベースを作成する方法と、MicrosoftAzureポータルから仮想マシンAzureを使用する方法の両方について説明します。
PostgreSQL用のAzureデータベースの展開
Azureポータル->リソースの作成->データベース->PostgreSQL用のAzureデータベースに移動すると、シングルサーバーまたはハイパースケールのいずれかを選択できます。このブログでは、ハイパースケールオプションがプレビュー中であり、SLAがまだ提供されていないため、単一サーバーを使用します。
ここで、新しいPostgreSQLインスタンスに関する情報を追加する必要があります。サブスクリプション、サーバー名、ユーザー資格情報、場所など。使用するPostgreSQLのバージョン(現在、9.5、9.6、10、または11のバージョンが利用可能)とそれを実行する仮想ハードウェア(コンピューティング+ストレージ)を選択することもできます。
ハードウェアを指定すると、実際の見積もり価格が表示されます-時間。これは、来月の大きな驚きを避けるのに非常に役立ちます。この手順の後、リソース構成を確認し、Azureが作成ジョブを完了するまで数分待つ必要があります。
新しいリソースを作成したら、[すべてのリソース]に移動して、使用可能なリソースオプションを確認できます。
作成されたリソースオプションで、レプリケーションに移動して有効にし、マスターサーバーから最大5つのレプリカにレプリケートします。また、[接続のセキュリティ]セクションをチェックして、外部アクセスを有効または無効にする必要があります。アクセス情報を知るには、概要リソースセクションにアクセスする必要があります。
$ psql -h pg1blog.postgres.database.azure.com -U [email protected] postgres
Password for user [email protected]:
psql (11.5, server 11.4)
SSL connection (protocol: TLSv1.2, cipher: ECDHE-RSA-AES256-GCM-SHA384, bits: 256, compression: off)
Type "help" for help.
postgres=>
PostgreSQL用Azureデータベースのフェイルオーバー
残念ながら、マスターサーバーとレプリカサーバー間の自動フェイルオーバーは利用できません。ただし、マスターインスタンスを削除すると、Azureはフェイルオーバープロセスを実行して、レプリカを自動的に昇格させます。
このフェイルオーバータスクを手動で実行するオプションがあり、次の手順を実行する必要があります。レプリカを停止し、新しいマスターを指すようにアプリケーションに新しいエンドポイントを構成します。レプリカはプロモートされ、マスターからリンク解除されます。このレプリカをマスターに再度リンクする方法はありません。
Azure仮想マシンへのPostgreSQLのデプロイ
Azureポータル->リソースの作成->コンピューティング->仮想マシンに移動すると、[仮想マシンの作成]セクションが開き、新しいAzure仮想マシンのさまざまな構成を指定できます。 。
[基本]タブで、Azureサブスクリプション、リージョン、可用性を指定する必要がありますオプション、オペレーティングシステム、サーバーサイズ、アクセス資格情報(ユーザー名/パスワードまたはSSHキー)、およびインバウンドファイアウォールルール。
[ディスク]タブで、ストレージ(タイプとサイズ)を指定する必要があります新しい仮想マシン用。ディスクタイプは、標準HDD、標準SSD、またはプレミアムSSDです。最後の1つは、IOPSの高いワークロードに推奨されます。
[ネットワーク]タブで、仮想ネットワーク、パブリックIPアドレスを指定できます、および許可されたインバウンドポート。この新しい仮想マシンを、既存のAzure負荷分散ソリューションの背後に追加することもできます。
次のタブには、監視やバックアップなどの管理オプションがあります。 。
最後に、[詳細設定]タブで、拡張機能、クラウドを追加できます- init、またはホストグループ。
前のオプションを確認して確認すると、新しい仮想マシンが作成され、Azureポータルからアクセスできるようになります。 [リソース]->[概要]セクションで、仮想マシンのアクセス情報(パブリック/プライベートIPアドレス)を確認できます。
これで、SSH経由でアクセスし、ClusterControlを使用してPostgreSQLデータベースをインストールできます。 。
$ ssh 23.102.177.27
Last login: Mon Sep 23 21:33:27 2019
[[email protected] ~]$
このリンクをチェックして、ClusterControlを使用してPostgreSQLデプロイメントを実行する手順を確認できます。
Azure仮想マシンでのPostgreSQLフェイルオーバー
ディザスタリカバリは、[操作]セクションの仮想マシン機能であり、環境を別のAzureリージョンに複製できます。これを有効にするには、ターゲットリージョンを選択する必要があります。 [詳細設定]タブでは、特定のターゲットの詳細を変更できます。仮想ネットワーク、ストレージ設定、レプリケーション設定など。
ディザスタリカバリが有効になっている場合は、レプリケーションステータス、フェイルオーバープロセスのテスト、または手動でフェイルオーバーします。
これを有効にすると、障害が発生した場合にフェイルオーバーオプションを使用できます。ただし、これはデータベースサービスだけでなく、環境全体のフェイルオーバーになります。
MicrosoftAzure向けに改善されたPostgreSQLフェイルオーバープロセス
SSHアクセスがあるため、ClusterControlを使用して仮想マシンをインポートする(またはPostgreSQLデータベースをデプロイする)ことで、このフェイルオーバープロセスを改善できます。
データベースノードをClusterControlで管理している場合(および「自動回復」オプションがオンの場合)、マスターに障害が発生した場合、ClusterControlは最も高度なスレーブを昇格させます(ブラックリストに登録されていない場合)。 )マスターするだけでなく、問題を通知します。また、残りのスレーブを自動的にフェイルオーバーして、新しいマスターから複製します。
ClusterControlを使用すると、クラウド上の一部のノードとオンプレミス上の他のノードを含む混合環境をデプロイすることもできます。トポロジにロードバランサーを追加して、高可用性環境を改善することもできます。このトピックの詳細については、こちらをご覧ください。
Azureには、エンタープライズレベルのソリューションを提供するための多くの機能と製品があります。ただし、これらのテスト中に私が見つけた主な問題は、作成とフェイルオーバーにかかる時間が、ほとんどのアプリケーションのニーズに対して長すぎることでした。
高速なフェイルオーバーとリカバリが必要な場合は、ロードバランサー、またはClusterControlなどの外部システムを使用して環境の可用性を向上させ、ダウンタイムを減らす必要があります。 Microsoft AzureでのPostgreSQLの実行の詳細については、詳細なブログをご覧ください。