天天看點

supervisor 重新開機_使用supervisor管理Linux的應用服務安裝啟動主配置檔案程式配置執行個體管理

supervisor 重新開機_使用supervisor管理Linux的應用服務安裝啟動主配置檔案程式配置執行個體管理

原創:小姐姐味道(微信公衆号ID:xjjdog),歡迎分享,轉載請保留出處。

supervisor 是一個Python程式,采用守護程序的方式,對單台機器上的程式進行啟停管理、自動重新開機等。如果你想保證的的程式異常推出後能夠自動啟動,supervisor就是你的一個選擇

安裝

pip install supervisor
           

安裝後會産生兩個可執行程式

  • supervisortd:守護程序服務
  • supervisorctl:用戶端,用于指令行互動

啟動

建議通過指定配置檔案的方式進行啟動

supervisord -c /etc/supervisord/supervisord.conf
           

主配置檔案

[unix_http_server]file=/var/run/supervisor.sock ; (the path to the socket file)chmod=0700 ; sockef file mode (default 0700)[supervisord]logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)environment=SPAN_STORAGE_TYPE="elasticsearch"[supervisorctl]serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket[include]files = /etc/supervisord/conf.d/*.conf[inet_http_server]port = 127.0.0.1:9001[rpcinterface:supervisor]supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
           

我們會将啟動管理的程式放在/etc/supervisord/conf.d/*.conf目錄下(可自定義)

environment 可以追加一些啟動環境的環境變量

注意下面的inet_http_server一定要加上,否則,你的用戶端控制程式就需要連結socket檔案進行啟動,而不是預設的端口。

程式配置執行個體

上面的配置檔案隻是為了控制supervioed的行為,為了管理我們的程式,還需要建立一批配置檔案。每一個配置檔案,對應一個外部程式的管理。

例子:

[[email protected] conf.d]# cat agent.conf[program:agent]command = /root/jaeger-1.5.0-linux-amd64/jaeger-agent --collector.host-port=192.168.3.237:14267 --discovery.min-peers=1 --log-level=debugdirectory = /root/jaeger-1.5.0-linux-amd64user = rootstartsecs = 3redirect_stderr = truestdout_logfile_maxbytes = 50MBstdout_logfile_backups = 10stdout_logfile = agent.log
           

注意日志終端是直接阻塞在supervisor上的,是以不需要使用nohup之類的語句

管理

直接運作supervisorctl即可

[[email protected] conf.d]# supervisorctlagent RUNNING pid 1656, uptime 7 days, 1:28:47collect RUNNING pid 2663, uptime 7 days, 0:35:11doc RUNNING pid 1657, uptime 7 days, 1:28:47query RUNNING pid 2595, uptime 7 days, 1:24:32
           

可以看到提供了豐富的指令

supervisor> helpdefault commands (type help ):=====================================add exit open reload restart start tailavail fg pid remove shutdown status updateclear maintail quit reread signal stop versionsupervisor>
           
注意:supervisor的啟動要和應用程式使用相同的使用者和權限(程式自己控制的除外),否則會産生死鎖問題。遇到這種情況,需要手動kill程序,修正權限後使用。
作者簡介:小姐姐味道 (xjjdog),一個不允許程式員走彎路的公衆号。聚焦基礎架構和Linux。十年架構,日百億流量,與你探讨高并發世界,給你不一樣的味道。我的個人微信xjjdog0,歡迎添加好友,​進一步交流。​
supervisor 重新開機_使用supervisor管理Linux的應用服務安裝啟動主配置檔案程式配置執行個體管理