技術情報

Matomoを高可用性マルチサーバー環境に設定するには?

デフォルトでは、Matomoはデータベースサーバーとアプリサーバーの1つ(または2つ)だけを使用するように設定されています。これはうまく機能しますが、この単純なセットアップには欠点があります。特に可用性が高くないことです。

Matomoのマルチサーバー設定とは、Matomoを複数のウェブサーバーで実行し、データベースを2つのサーバーに複製することです。こうすることで、ウェブサーバの1台がダウンしたり、データベースサーバの1台がダウンしても、Matomoのサービスは影響を受けません。

マルチサーバー構成は、水平方向に拡張して、より多くのトラフィックや大きなトラフィックのピークを処理するのにも便利です。(現在のサーバーのRAMとCPUを増やすことで垂直方向に拡張することもできますが、Matomoを1つの大きなアプリサーバーで動作させるということは、高い可用性が得られないということです)。

スケーラブルなマルチサーバーの構成図

この図は、スケーラブルなマルチサーバー構成の標準的なセットアップを示しています:

この構成に含まれる要素は以下の通り:

  • ロードバランサー
    すべての受信トラフィックをフロントエンド・サーバーに転送する。

  • フロントエンド・ウェブサーバー
    ウェブサーバーとPHPでMatomoを動かす。
    毎分crontabでcustom-matomo-js:updatetagmanager:regenerate-released-containersコマンドを実行している。
    トラッキング+UI+レポートAPIを担当する。
    NFSはコードベースの保存に使うべきではありません(パフォーマンスのため)。

  • アーカイブサーバー
    MatomoをPHP上でCLI経由で実行する(ウェブサーバは不要)
    crontabエントリが設定されている(毎時core:archiveコマンド)
    レポート処理+スケジュールされたタスクを担当
    NFSはコードベースの保存に使うべきではありません(パフォーマンスのため)。詳細はよくある質問をご覧ください。

  • データベースサーバー
    MySQLまたはMariaDBを実行し、すべてのMatomoデータを保存する。
    マスター-スレーブ(ソース/レプリカ)レプリケーションまたはマスター-マスターレプリケーションとして2台のサーバーをセットアップすることができる。
    RAIDとSSDディスクを推奨(パフォーマンスのため)
    NFSはデータの保存に使うべきではありません(パフォーマンスのため)。

この図は、スケーラブルで、マルチサーバー、マルチデータセンター、高可用性(HA)構成の、より複雑なセットアップを示している:

この構成に含まれる要素は以下の通り:

  • ロードバランサー
    2台の高可用性ロードバランサー(例:F5ロードバランサー、またはフローティングIPベースのロードバランサー)
    すべての受信トラフィックをフロントエンド・サーバーに転送する。

  • フロントエンド・ウェブサーバー
    この例では、1つのデータセンターに2台のフロントエンド・サーバーがあり、もう1つのデータセンターに1台のフロントエンドがある。
    ウェブサーバーとPHPでMatomoを実行
    毎分crontabを実行するcustom-matomo-js:updatetagmanager:regenerate-released-containersコマンドを実行している。
    トラッキング+UI+レポートAPIを担当
    NFSはコードベースの保存に使うべきではありません(パフォーマンスのため)。詳細はよくある質問をご覧ください。

  • 1 x アーカイビング・サーバー
    アーカイブサーバーは通常1台で十分です。
    サーバーに問題が発生しても、簡単に再作成して配備することができます。Matomoサービスへの影響は、アーカイブサーバが利用できない間、新しいレポートが処理されたり、メールレポートが送信されたりすることはありません。
    MatomoをPHP上でCLI経由で実行する(ウェブサーバは不要)
    crontabエントリが設定されています。(1時間ごとにcore:archiveコマンドを実行してください)
    レポート処理+スケジュールされたタスクを担当
    NFSはコードベースの保存に使うべきではありません(パフォーマンスのため)。よくある質問)

  • 2 x データベースサーバー
    各データセンターに1台のデータベース・サーバーを設置
    MySQLまたはMariaDBを実行し、すべてのMatomoデータを保存する。
    マスター-スレーブ・レプリケーション(ソース/レプリカ)またはマスター-マスター・レプリケーション(HA用)としてセットアップする。
    効率的なレプリケーションを実現するには、2つのデータセンター間で低レイテンシーが必要である。
    RAIDとSSDディスクを推奨(パフォーマンスのため)
    NFSはデータの保存に使うべきではありません(パフォーマンスのため)。

すべてのサーバーに同じコードベースをデプロイする

Matomo を複数のサーバーで動作させる場合、同じコードベースが次のサーバーにデプロイされる必要があります。
こちらをご覧ください:すべてのサーバーに同じコードベースをデプロイするには?

設定ファイルとトラッカーJSファイルの同期

Matomo を複数のサーバで動作させる場合、設定ファイルと tracker js ファイルを同期させる必要があります。参照してください: 設定ファイルとトラッカーJSファイルの同期方法は?

DockerでMatomoを動かす

スケーラブルなマルチサーバ構成を構築する1つの方法は、Dockerを使用することです。出発点として、上記の記事やMatomo Analyticsの公式Dockerプロジェクトを参照してください。Matomo Analyticsの公式Dockerプロジェクトです。.