1. はじめに Supervisor は Python で開発された汎用プロセス管理プログラムです。通常のコマンドライン プロセスをバックグラウンド デーモンに変換し、プロセスの状態を監視し、異常終了したときに自動的に再起動することができます。現在、Supervisor はほとんどの Unix システムで実行できますが、Windows システムでの実行はサポートされていません。 Supervisor には Python 2.4 以降が必要ですが、Python 3 バージョンはサポートされていません。 2. 組み込みのWeb管理プログラム スーパーバイザーには 4 つのコンポーネントがあります。 1. 監督者 2. スーパーバイザー 3. Web サーバー これは supervisord の Web クライアントです。ユーザーは Web ページ上で supervisorctl と同様の機能を実行できます。 4. XML-RPC インターフェース これは、サードパーティ統合用に予約されたインターフェースです。サービスはこれらの XML-RPC インターフェースをリモートで呼び出して、supervisord によって管理されるサブプロセスを制御できます。上記の Web サーバーは、実際にはこの XML-RPC インターフェイスを通じて実装されています。 3. インストール 以下の3つの方法からお選びいただけます 1. インストール echo "supervisor-3.3.4 のインストール (はいの場合は 1 を入力してください。いいえの場合はその他を入力してください):" SVを読む [ "$SV" = "1" ]の場合; cd $ベースパス $basepath/supervisor-3.3.4.zip を解凍します。 cd スーパーバイザー-3.3.4 python setup.py インストール echo "supervisor-3.3.4 のインストールが完了しました" それ以外 echo "supervisor-3.3.4 をインストールしないことを選択しました" フィ 2. ソースコードのインストール https://pypi.python.org/packages/7b/17/88adf8cb25f80e2bc0d18e094fcd7ab300632ea00b601cbbbb84c2419eae/supervisor-3.3.4.tar.gz を実行します。 tar -zxvf スーパーバイザー-3.3.4.tar.gz cd スーパーバイザー-3.3.4 python setup.py install #ローカルの python バージョンは python2.7 です 3. Yumのインストール yum インストール スーパーバイザー 4. 設定ファイル インストール後に /etc/supervisord.conf 構成ファイルが存在しない場合は、次のコマンドで生成します。 echo_supervisord_conf > /etc/supervisord.conf 5. スタートアップ スーパーバイザード -c /etc/supervisord/supervisord.conf echo "supervisor-3.3.4 が正常に起動しました" 6. スタートアップを設定する systemctl は supervisord.service を有効にします 7. supervisordが実行中かどうかを確認する ps aux | grep supervisord 8. supervisorctl 管理コマンド supervisorctl status #ステータス supervisorctl stop nginx #nginx をシャットダウン supervisorctl start nginx #nginxを起動する supervisorctl restart nginx #nginxを再起動します supervisorctl reload #すべてを再起動 supervisorctl update #設定を更新 このコマンドは、個別に使用することも、組み合わせて使用することもできます。 9. 設定ファイルの説明 [unix_http_サーバー] file=/tmp/supervisor.sock ;UNIX ソケット ファイル、supervisorctl が使用します。chmod=0700 ;ソケット ファイル モード、デフォルトは 0700 です。 ;chown=nobody:nogroup ;ソケットファイルの所有者、形式: uid:gid ;[inet_http_server] ;Web 管理インターフェースを提供する HTTP サーバー;port=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意する必要があります;username=user ;管理バックエンドにログインするためのユーザー名;password=123 ;管理バックエンドにログインするためのパスワード [supervisord] logfile=/tmp/supervisord.log; ログファイル、デフォルトは $CWD/supervisord.log logfile_maxbytes=50MB; ログ ファイルのサイズ。これを超えるとローテーションされます。デフォルトは 50MB です。0 に設定すると、サイズ制限がないことを意味します。logfile_backups=10; ログ ファイルのバックアップのデフォルト数は 10 です。0 に設定すると、バックアップがないことを意味します。loglevel=info; ログ レベル。デフォルトは info、その他: debug、warn、trace pidfile=/tmp/supervisord.pid ;pid ファイル nodaemon=false ;フォアグラウンドで起動するかどうか。デフォルトは false、つまりデーモン モードで起動します。 minfds=1024 ;開くことができるファイル記述子の最小値。デフォルトは 1024 です。 minprocs=200; 開くことができるプロセスの最小数。デフォルトは200です。 [スーパーバイザーctl] serverurl=unix:///tmp/supervisor.sock ; UNIX ソケット経由で supervisord に接続します。パスは unix_http_server 部分のファイルと一致します。 serverurl=http://127.0.0.1:9001 ; HTTP 経由で supervisord に接続します ; [program:xx] は管理対象プロセスの構成パラメータ、xx はプロセスの名前です [program:xx] command=/opt/apache-tomcat-8.0.35/bin/catalina.sh run ; プログラムの起動コマンド autostart=true ; supervisord の起動時に自動的に起動 startsecs=10 ; 起動後 10 秒経過しても異常終了がない場合は、プロセスが正常に起動したことを意味します。デフォルトは 1 秒です autorestart=true ; プログラム終了後、自動的に再起動します。オプションの値: [unexpected、true、false]。デフォルトは、unexpected です。つまり、プロセスは、誤って強制終了された場合にのみ再起動します startretries=3 ; 起動が失敗した場合の自動再試行回数。デフォルトは 3 です user=tomcat; プロセスを開始するために使用されるユーザー。デフォルトはrootです。 priority=999; プロセス起動の優先度、デフォルトは999、値が小さいプロセスが最初に起動されます redirect_stderr=true; stderrをstdoutにリダイレクトします、デフォルトはfalseです stdout_logfile_maxbytes=20MB; stdout ログ ファイルのサイズ、デフォルトは 50MB stdout_logfile_backups = 20 ; stdout ログファイルのバックアップ数。デフォルトは 10 です。 ; stdout ログ ファイル。指定されたディレクトリが存在しない場合は正常に起動できないため、手動でディレクトリを作成する必要があります (supervisord はログ ファイルを自動的に作成します)。 stdout_logfile=/opt/apache-tomcat-8.0.35/logs/catalina.out stopasgroup=false; デフォルトは false で、プロセスが強制終了されたときに、子プロセスを含むプロセス グループに停止信号を送信するかどうかを指定します。killasgroup=false; デフォルトは false で、子プロセスを含むプロセス グループに強制終了信号を送信します。その他の設定ファイルが含まれます [include] files =/etc/supervisord.d/*.ini ; .iniで終わる1つ以上の設定ファイルを指定できます。 10. ini設定ファイルの例 [プログラム:MysqlToRedis] ディレクトリ = /data/py/SmartServerModel/SmartServerModel/ModelManagerServer/ コマンド = python3 -u mysql2redis_robot_config.py cs 自動起動 = true 自動再起動=true 開始秒数 = 5 ユーザー =root リダイレクトstderr = true stdout_logfile = /data/logs/supervisord/mysqltoredis.log [プログラム:SmartBinLog] コマンド = /data/go/src/SmartBinLog/SmartBinLog 自動起動 = true 自動再起動=true 開始秒数 = 5 ユーザー =root リダイレクトstderr = true stdout_logfile = /data/logs/supervisord/smartbinlog.log [グループ:nlp] programs=MysqlToRedis、SmartBinLog ;server、progname2 はそれぞれ [program:x] 定義の 'x' を参照します priority=999 ; 相対的な開始優先度(デフォルト 999) 11.ウェブページ管理プログラムを開く conf設定ファイル内のコメント行をすべてコメント解除し、ポート、ユーザー名、パスワードを変更します。 [inet_http_server] ;Web 管理インターフェイスを提供する HTTP サーバーport=127.0.0.1:9001 ;Web 管理バックエンドの IP とポート。パブリック ネットワークに公開されている場合は、セキュリティに注意してくださいusername=user ;管理バックエンドにログインするためのユーザー名password=123 ;管理バックエンドにログインするためのパスワード 12. 「unix:///tmp/supervisor.sock そのようなファイルはありません」という問題を解決する 時々、次のような問題に遭遇します:
①. 既存のsupervisorctlプロセスを停止する ②. 設定ファイル「/etc/supervisord.conf」を修正し、tmpをetcに変更します。 /tmpディレクトリ内のファイルはオペレーティングシステムによって定期的にリサイクルされるため、変更する必要があります。 ③. 変更した設定ファイルを使用して supervisord を起動すると、すべてが正常に戻ります。 以下もご興味があるかもしれません:
|
>>: MySQLデュアルマシンホットスタンバイと負荷分散の実装手順の詳細説明
1.1. ダウンロード:公式ウェブサイトから zip パッケージをダウンロードします。私は 64 ビ...
MySQL-8.0.23 をダウンロードクリックしてダウンロード: mysql-8.0.23-li...
誤って source.list の内容を変更し、一連のエラーが発生した場合は、デフォルトのソース フ...
ボリュームデータボリュームは Docker の重要な概念です。データ ボリュームは、1 つ以上のコン...
10 日間のチュートリアルでは、最も理解しやすい言語を使用し、最も基本的なことから始めて、誰もが W...
目次1. Bootstrap5 ブレークポイント1.1 モバイルファースト1.2 ブートストラップブ...
Nginx の紹介Nginx (「エンジン x」) は、ロシアのプログラマー Igor Sysoev...
目次1. 型2. インスタンス3. 違い1. 型typeof 演算子は、評価されていないオペランドの...
序文動的プロキシの原理を説明する前に、まず、mybatis を統合した後の dao 層の 2 つの実...
パフォーマンス例えば: HTML: <div class="first"&...
1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...
大規模な Web サイトでは、多数の同時アクセスを処理するために、Web サイト上の分散負荷分散以上...
領事の基本概念サーバーモードとクライアントモードサーバー モードとクライアント モードは、consu...
2 つのパラメータ innodb_flush_log_at_trx_commit と sync_bi...
日々の開発で遭遇した様々な問題と、その解決策を閲覧しながら、日々の開発でよく使用するスキルや知識ポイ...