sql >> データベース >  >> RDS >> PostgreSQL

MicrosoftAzureでのPostgreSQLのフェイルオーバーとフェイルバック

    クラウドを使用してデータを保存したり、マスターに障害が発生した場合のフェイルオーバーオプションとして使用したりすることは非常に一般的です。クラウドプラットフォームを介してデータを保存、管理、取得、操作できるクラウドプロバイダーがいくつかあります。インターネット経由でアクセス可能。各クラウドプロバイダーには独自の製品と独自の機能があり、それぞれに異なるコストモデルがあります。

    Microsoft Azureは、これらの可能性のあるプロバイダーの1つです。このブログでは、ディザスタリカバリサイトとしてMicrosoft Azureがプライマリストレージに提供する機能を確認し、特に混合PostgreSQLデータベース環境をどのように処理するかを確認します。

    MicrosoftAzureでのPostgreSQLデータベースインスタンスの展開

    このタスクを実行する前に、このインスタンスをどのように使用するか、およびどのAzure製品が最適かを決定する必要があります。 MicrosoftAzureにPostgreSQLインスタンスをデプロイする基本的な方法は2つあります。

    1. Azure Database for PostgreSQL :クラウドで高可用性PostgreSQLデータベースを実行、管理、およびスケーリングするために使用できるマネージドサービスです。シングルサーバーとハイパースケールの2つの導入オプションで利用できます。
    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の実行の詳細については、詳細なブログをご覧ください。


    1. 事前入力されたデータベースはAPI28で機能せず、そのようなテーブル例外はスローされません

    2. SQL Server(T-SQL)の特定のパーティションからすべての行を返す

    3. 3つの簡単なSQLServerパフォーマンスの勝利

    4. MariaDBでのDATE_ADD()のしくみ