コンテンツにスキップ

Porta On Prem README

Porta On Prem には、次の最小システム構成が必要です。

  • データベースレプリケーションを実行する場合は、最低 3 台のマシン。
コンポーネント仕様
オペレーティングシステムWindows 10 または 11、64 ビット、Win10 は最低でも更新プログラム 21H2 が必要
仮想化オペレーティングシステムWSL 2、デフォルトディストロとして Ubuntu 22.04
CPUIntel i7 第 4 世代(必須: AVX2 をサポートする CPU)
メモリ8GB RAM
ストレージ30GB 以上
  • 役割: Porta UI と API
  • Published Ports:
    • UI 用 8080
    • API 用 8000
  • 役割: Porta MySQL データベース
  • Published Ports:
    • MySQL クライアントポート:
      • porta-db 用 3306
      • porta-db-2 用 3307
      • porta-db-3 用 3308
    • MySQL レプリケーションポート:
      • porta-db 用 33061
      • porta-db-2 用 33062
      • porta-db-3 用 33063
  • 役割: Porta WebSocket リレーサーバー
  • Published Ports: 6001
  • 役割: Porta Redis サーバー
  • Published Ports: 6379

Porta On Prem は、MySQL 標準の Group Replication 機能を利用して 3 つの MySQL データベースを実行します。

データベースレプリケーション

Section titled “データベースレプリケーション”

MySQL Group Replication は、グループ内のサーバー間で自動的に調整される分散レプリケーションを提供します。グループレプリケーションにより、データベースサービスが継続的に利用可能であることが保証されます。

レプリケーショングループは、自動プライマリ選出を伴うシングルプライマリモードで動作し、一度に 1 つのサーバーのみが書き込みを受け付けます。プライマリ障害の場合、Porta バックエンドは新しく選出されたプライマリへの再接続を自動的に試みます。

performance_schema.replication_group_members の member_state がとりうる値

メンバーの状態説明
ONLINEサーバーはグループのアクティブなメンバーであり、完全に機能している状態です。
RECOVERING サーバーはグループに参加し、アクティブなメンバーになる
過程にあります。
OFFLINEGroup Replication プラグインは読み込まれていますが、メンバーは
どのグループにも属していません。
この状態は、メンバーがグループに参加または再参加する間、一時的に発生することがあります。
UNREACHABLEローカルの障害検出器が、グループのメッセージがタイムアウトしているため、メンバーに連絡できないと疑っています。
これは、メンバーが意図せず切断された場合に発生することがあります。
ERRORメンバーはエラー状態にあり、グループメンバーとして正しく機能していません。
メンバーがレプリケーショングループに参加または再参加する間、グループが互換性チェックを完了してメンバーとして受け入れる前に、そのステータスが ERROR と表示されることがあります。

Database Replication Setup

Default Setup

WebSocket サーバーの障害とフェイルオーバー

Section titled “WebSocket サーバーの障害とフェイルオーバー”

Porta On Prem は WebSocket サーバーへの接続を監視し、接続が失われた場合は自動的にバックアップサーバーへのフェイルオーバーを試みます。
Primary Failure
Failover to Backup

障害が発生したサーバーがオンラインに復帰した場合、アクティブなサーバーを置き換えることは なく、アクティブなサーバーが障害を起こすか、その他の理由でシャットダウンするまで、新しい「バックアップ」サーバーとして動作します。
Failed Machine Recovers

多くの復旧またはモニタリングタスクには、使いやすいショートカットスクリプトが用意されており、これらのドキュメント全体で参照されます。

場所: porta-database

スクリプト名説明
view-group-repl-status.batデータベースレプリケーショングループのメンバーステータスを表示する(このマシンが報告したもの)
view-ALL-group-repl-status.batデータベースレプリケーショングループのメンバーステータスを表示する(各マシンが報告したもの)
view-database-log.batこのマシンのデータベースログを表示する
follow-database-log.batこのマシンのデータベースログをリアルタイムで表示する
view-repl-vars.batこのマシンのデータベースレプリケーション変数の値を表示する
view-binlog-events.batこのマシンのデータベースバイナリログイベントを表示する
view-transactions.batこのマシンのデータベーストランザクションを表示する
view-database-users.batデータベースに登録されている Porta ユーザーを表示する

場所: porta-database/actions

スクリプト名説明
bootstrap.batこのデータベースのレプリケーションをブートストラップする
restart-repl.batこのデータベースのレプリケーションを再起動する
START-repl.batこのデータベースのレプリケーションを開始する
STOP-repl.batこのデータベースのレプリケーションを停止する

バックアップと復旧アクション

Section titled “バックアップと復旧アクション”

場所: porta-database/actions

スクリプト名説明
create-backup.batデータベースのバックアップを作成する
restore-from-backup.batバックアップからデータベースを復元する
caution/copy-DB-backup-from-container-to-host.ps1データベースコンテナからホストマシンへデータベースバックアップをコピーする
caution/copy-DB-backup-into-container-and-restore.ps1ホストマシンからデータベースコンテナへデータベースバックアップをコピーし、オプションでそれを使用してデータベースを復元する

その他のデータベースアクション

Section titled “その他のデータベースアクション”

場所: porta-database/actions/caution

スクリプト名説明
reset.bat ⚠️このデータベースをリセットする
⚠️ これはマシン上のデータを消去します
migrate-or-seed.batデータベースをマイグレーションおよび/またはシードする
set-bootstrap-OFF.batデータベース起動時のブートストラップを無効にする(これがデフォルト設定です)
破壊的なデータベースアクション
Section titled “破壊的なデータベースアクション”

場所: porta-database/actions/caution

スクリプト名説明
set-bootstrap-ON.batデータベース起動時のブートストラップを有効にする
3 台構成で使用すると、データ損失につながります
transfer/MAIN-TO-BACKUP-transfer-database.batデータベースをメインマシンからバックアップマシンに転送する。
これはバックアップマシンの データベース内のすべてのデータを上書き します。2 台構成での使用のみを意図しています。
transfer/BACKUP-TO-MAIN-transfer-database.batデータベースをバックアップマシンからメインマシンに転送する。
これはメインマシンの データベース内のすべてのデータを上書き します。2 台構成での使用のみを意図しています。

場所: porta-checks

スクリプト名説明
view-workers.batPorta のサーバーワーカーを表示する
view-failed-jobs.batPorta の失敗したジョブを表示する
check-default-connection.batPorta がキャッシュしているデフォルトのデータベース接続を確認する
check-env-connections.batPorta の環境構成で設定されているデータベース接続を確認する
check-primary-connection.batPorta が使用しているプライマリデータベース接続を確認する
check-version.batPorta のバージョンを確認する

場所: porta-log-viewers

スクリプト名説明
view-laravel-log.batPorta API のログを表示する
view-horizon-log.batPorta のキューログを表示する
view-tasks-log.batPorta のバックグラウンドタスクログを表示する
view-php-errors-log.batPorta API の低レベルエラーログを表示する
view-server-log.batPorta の一般サーバーログを表示する
view-socket-log.batPorta のソケットサーバーログを表示する
view-redis-log.batPorta の Redis サーバーログを表示する

場所: porta-config-viewers

スクリプト名説明
view-api-env.batPorta の API 環境構成ファイルの内容を表示する
view-app-env.batPorta の UI 環境構成ファイルの内容を表示する
view-cached-connection.batPorta が使用しているキャッシュされたデフォルトデータベース接続を表示する
view-cache-config.batPorta が使用しているすべてのキャッシュされた構成を表示する
view-supervisor-conf.batPorta の supervisord 構成を表示する
view-php-conf.batPorta の PHP 構成を表示する
view-nginx-conf.batPorta の nginx 構成を表示する

場所: porta-run

スクリプト名説明
cache-api-config.batPorta API の構成ファイルをキャッシュする
clear-api-cache.batPorta API のキャッシュをクリアする
rotate-porta-logs.batPorta のシステムログを手動でローテーションする
copy-file-from-container.bat実行中のコンテナからホストマシンへファイルをコピーする
copy-file-from-stopped container.bat停止したコンテナからホストマシンへファイルをコピーする

場所: porta-run/sysadmin

スクリプト名説明
fix-crlf.bat指定されたディレクトリ内の Windows 改行コード(CRLF)を Linux 改行コード(LF)に変換する
generate-secret.batPorta の環境構成ファイル用の新しいシークレットキーを生成する。これにより API 構成もキャッシュされます。
❌ migrate-volumes.bat廃止 — 古いバージョンの Porta On Prem で、マウントされたドライブを docker ボリュームに移行する
restart-workers.batPorta サーバーワーカーを再起動する
restart-container.batDocker コンテナを再起動する
stop-container.batDocker コンテナを停止する
stop-porta-socket-server.batporta-socket コンテナを停止する

Porta インストーラーのログは、WSL ディレクトリ /home/$USER/porta/logs/installer にあります。

これらのログには、(インストールに応じて)次のいずれかのパスに移動することで、Windows エクスプローラーでアクセスできます。

  • \\wsl$\Ubuntu\home\<USERNAME>\porta\logs\installer
  • \\wsl$\Ubuntu-22.04\home\<USERNAME>\porta\logs\installer
  • \\wsl$\Ubuntu-20.04\home\<USERNAME>\porta\logs\installer

フロントエンドのログは、Web ブラウザのコンソールで表示できます。ログにアクセスするには、ブラウザの開発者ツール(F12)を開き、Console タブを選択します。

Porta サーバーおよびサービスログ

Section titled “Porta サーバーおよびサービスログ”

Porta 関連のログは、それぞれのコンテナ内にあります。これらのログの一部は、porta-onprem-bundle\porta-helpers\porta-log-viewers フォルダ内のヘルパーのいずれかを実行することで表示できます。

これらのログは、Porta API の一般的なデバッグとトラブルシューティングに最も役立ちます。

  • ヘルパー: view-laravel-log.bat
    • 注: ログのファイル名は laravel- で始まり、日付でスコープされます(例: laravel-YYYY-MM-DD.log)。

スケジュール/バックグラウンドタスクログ

Section titled “スケジュール/バックグラウンドタスクログ”

これらは、ソケットサーバーチェック、データベースバックアップとチェックなど、スケジュールされた、または長時間実行されるバックグラウンドタスクで構成されます。

  • ヘルパー: view-tasks-log.bat

キューに入れられたタスクログ

Section titled “キューに入れられたタスクログ”

これらのログは、メディアの取り込みや変換などの、キューに入れられたバックグラウンドタスク用です。

  • ヘルパー: view-horizon-log.bat

これらのログは、より低レベルの PHP エラーと例外用です。これらは、メモリエラーなど、サーバーレベルで何か問題が発生した場合に発生します。

  • ヘルパー: view-php-errors-log.bat

サーバープロセスとサービスに関するログ。

  • ヘルパー: view-server-log.bat

これらのログは、Porta データベースサーバー用です。レプリケーションに関する情報やその他の MySQL ログが含まれます。

  • ヘルパー: porta-onprem-bundle\porta-helpers\porta-database\view-database-log.bat

これらのログには、WebSocket 接続とサーバーを通過するリクエストに関する多くの情報が含まれます。ほぼすべてのイベントとステータス変更がここに記録されます。

  • ヘルパー: view-socket-log.bat

これらのログは、ソケットサーバーまたは API ログで Redis エラーが見られない限り、ほとんど必要になることはありません。

  • ヘルパー: view-redis-log.bat

Porta 診断を実行して、さまざまなログと構成情報を 1 つのアーカイブにまとめます。

  1. porta-onprem-bundle の porta-helpers フォルダで、porta-full-diag.bat をダブルクリックして完全診断ヘルパーを実行します。
  2. 診断が実行され、ヘルパースクリプトと同じフォルダにディレクトリと .tar.gz ファイルが作成されます。

データベースヘルスダッシュボードは http://<MACHINE-IP>:8000/health で利用できます。このダッシュボードには、進行中のデータベースレプリケーションヘルスチェックの結果が表示されます。

プレイグループシーケンスを処理するもの(porta-horizon-worker)や、バックグラウンドでデータベースチェックを実行するもの(porta-task-worker)など。

  • ヘルパー: porta-onprem-bundle\porta-helpers\porta-checks\view-workers.bat
  • 結果の例:
    Terminal window
    nginx RUNNING pid 7, uptime 0:16:57
    php-fpm RUNNING pid 8, uptime 0:16:57
    porta-task-worker:porta-task-worker_00 RUNNING pid 746, uptime 0:02:57
    porta-task-worker:porta-task-worker_01 RUNNING pid 747, uptime 0:02:57
    porta-horizon-worker:porta-horizon-worker_00 RUNNING pid 732, uptime 0:02:59
    porta-horizon-worker:porta-horizon-worker_01 RUNNING pid 733, uptime 0:02:59

キューに入れられたタスクの表示

Section titled “キューに入れられたタスクの表示”

メディア変換などの一部の負荷の高いタスクは、キューに入れられてバックグラウンドで実行されます。これらのタスクを監視するための最小限の UI が http://<MACHINE-IP>:8000/horizon で利用できます。

失敗したタスクは、ヘルパー porta-onprem-bundle\porta-helpers\porta-checks\view-failed-jobs.bat で直接表示できます。

http://<PORTA-MACHINE-IP>:8000/socketio-adminui で Socket.IO Admin UI を表示して、Porta ソケットサーバーのステータスを監視します。ログイン認証情報については、support@disguise.one までお問い合わせください。

Porta OnPrem データベースのバックアップと復元の方法の詳細については、Porta On Prem Backup and Restore Guide を参照してください。