コンテンツにスキップ

アクティブ/スタンバイ#

設定#

既存のプロジェクトをアクティブ/スタンバイに対応させるためには、Lagoon APIを使用してプロジェクト設定をいくつか設定する必要があります。

  • productionEnvirommentは、現在アクティブな環境のブランチ名に設定する必要があります。
  • standbyProductionEnvironmentは、現在スタンバイ中の環境のブランチ名に設定する必要があります。
プロジェクト設定の更新
mutation updateProject {
  updateProject(input:{
    id:1234
    patch:{
      productionEnvironment:"production-brancha"
      standbyProductionEnvironment:"production-branchb"
    }
  }){
    standbyProductionEnvironment
    name
    productionEnvironment
  }
}

.lagoon.yml - production_routes#

.lagoon.ymlファイルでプロジェクトをアクティブ/スタンバイに設定するためには、active環境にアタッチしたいルートとstandbyにアタッチしたいルートをproduction_routesセクションに設定する必要があります。 環境。アクティブ/スタンバイの切り替え時には、これらのルートは2つの環境間で移動します。

もし2つのプロダクション環境、production-branchaproduction-branchbがあり、現在アクティブなプロダクション環境がproduction-branchaであるなら:

  • production_routes.activeの下のルートはあなたをproduction-branchaに向かわせます。
  • production_routes.standbyの下のルートはあなたをproduction-branchbに向かわせます。

アクティブ/スタンバイの切り替え時には、ルートが交換されます:

  • production_routes.activeの下のルートはあなたをproduction-branchbに向かわせます。
  • production_routes.standbyの下のルートはあなたをproduction-branchaに向かわせます。
.lagoon.yml
production_routes:
  active:
    routes:
      - nginx:
        - example.com:
            tls-acme: 'false'
        - active.example.com:
            tls-acme: 'false'
  standby:
    routes:
      - nginx:
        - standby.example.com:
            tls-acme: 'false'

情報

セクションenvironments..routesの下にあるルートは、アクティブ/スタンバイの一部として移動されません。これらのルートは常に定義された環境に付属しています。特定のルートを必要とする場合は、そのルートが アクティブ/スタンバイ切り替え中に移行した場合、それらを環境セクションから削除し、それがアクティブルートかスタンバイルートであるべきか特定の production_routes セクションに配置してください。 .lagoon.yml のルートについて詳しくはこちらを参照してください。

切り替えイベントのトリガー#

UI経由#

環境ルートの切り替えをトリガーするには、Lagoon UIでスタンバイ環境を訪れ、Switch Active/Standby environmentsというラベルのボタンをクリックします。アクションを確認するように求められます。

確認されると、スイッチの進行状況を確認することができるタスクページに移動します。

API経由#

環境を切り替えるイベントをトリガーするには、次のGraphQL変異を実行します。これにより、Lagoonがプロセスを開始します。

アクティブスタンバイスイッチ
mutation ActiveStandby {
  switchActiveStandby(
    input:{
      project:{
        name:"drupal-example"
      }
    }
  ){
    id
    remoteId
  }
}

切り替えイベントがトリガーされると、現在のアクティブ環境の tasks タブにタスクが作成されます。ここでスイッチの状態を確認することができます。

switchActiveStandby 変異からの remoteId を使用して、 タスクのステータスも確認することができます。

タスクステータスの確認
query getTask {
  taskByRemoteId(id: "<remoteId>") {
    id
    name
    created
    started
    completed
    status
    logs
  }
}

drushエイリアス#

デフォルトでは、プロジェクトは以下のエイリアスが作成され、プロジェクトでアクティブ/スタンバイが有効になっている場合に利用できます。

  • lagoon-production
  • lagoon-standby

lagoon-productionエイリアスはproductionEnvironmentとして定義されているサイトを指し、lagoon-standbyは常にstandbyProductionEnvironmentとして定義されているサイトを指します。

これらのエイリアスは、プロジェクトの更新によって設定を変更することができます。ただし、それらを変更すると、それらに依存するスクリプトを更新する必要があるかもしれません。

Drushエイリアスの更新
mutation updateProject {
  updateProject(input:{
    id:1234
    patch:{
      productionAlias:"custom-lagoon-production-alias"
      standbyAlias:"custom-lagoon-standby-alias"
    }
  }){
    productionAlias
    name
    standbyAlias
  }
}

Active/Standbyの無効化#

これら2つのブランチのうち、どちらを主な環境として進めていくかを決定する必要があります。その後、 それがアクティブなブランチとして設定されていることを確認してください(例:production-branchb)。

  1. この(現在アクティブな)ブランチの.lagoon.ymlファイルで、production_routes.active.routesセクションからルートをenvironments.production-branchbセクションに移動します。これは、そのルートがproduction-branchb environmentにのみ関連付けられることを意味します。
  2. これが完了したら、.lagoon.ymlファイルから完全にproduction_routesセクションを削除し、production-branchb環境を再デプロイできます。
  3. もう他のブランチproduction-branchaが必要ない場合、それを削除できます。
  4. Gitでブランチを保持する場合、混乱を避けるためにそのブランチの.lagoon.ymlからもproduction_routesを削除するべきです。ブランチはproductionタイプのままになりますが、それを削除して再デプロイしない限り(すべてのストレージとデータベースなどを消去)。
  5. プロジェクトがproduction-branchbプロダクション環境だけが存在し、他のすべての環境がdevelopmentである状態になったら、プロジェクトからstandbyProductionEnvironmentを削除して、環境のアクティブ/スタンバイラベルを消去します。
アクティブ/スタンバイをオフにする
mutation updateProject {
  updateProject(input:{
    id:1234
    patch:{
      productionEnvironment:"production-branchb"
      standbyProductionEnvironment:""
    }
  }){
    standbyProductionEnvironment
    name
    productionEnvironment
  }
}

ノート#

アクティブ/スタンバイトリガーが実行されたとき、productionEnvironmentstandbyProductionEnvironmentsはLagoon API内で切り替わります。両方の環境はまだproduction環境タイプとして分類されています。productionEnvironmentはどちらがactiveとラベル付けされているかを決定するために使用します。環境タイプの違いについての詳細は、environment typesのドキュメンテーションをご覧ください。

GraphQLを使って環境を取得する
query projectByName {
  projectByName(name:"drupal-example"){
    productionEnvironment
    standbyProductionEnvironment
  }
}

環境を切り替える前:

環境クエリの結果
{
  "data": {
    "projectByName": {
      "productionEnvironment": "production-brancha",
      "standbyProductionEnvironment": "production-branchb"
    }
  }
}

環境を切り替えた後:

結果 の環境クエリ
{
  "data": {
    "projectByName": {
      "productionEnvironment": "production-branchb",
      "standbyProductionEnvironment": "production-brancha"
    }
  }
}