1. 程式人生 > >Palo通過supervisor進行程序管理 CentOS7 安裝supervisor守護程序管理器

Palo通過supervisor進行程序管理 CentOS7 安裝supervisor守護程序管理器

下面一段文字是摘自doris官方文件:
注:在生產環境中,所有例項都應使用守護程序啟動,以保證程序退出後,會被自動拉起,如 Supervisor。如需使用守護程序啟動,需要修改各個 start_xx.sh 指令碼,去掉最後的 & 符號

首先安裝supervisor,具體請參照本人的另一篇部落格CentOS7 安裝supervisor守護程序管理器

 

1 配置palo be 程序管理

1.1 修改各個 start_be.sh 指令碼,去掉最後的 & 符號

/home/workspace/palo-0.8.2/be/bin/start_be.sh

:wq儲存退出

1.2 建立be supervisor程序管理配置檔案

輸入命令:

vim /etc/supervisord.d/palo_be-0.8.2.ini

填寫以下內容

[program:palo_be]      
process_name=%(program_name)s                 ;程序名稱        
directory=/opt/palo-0.8.2/be                  ;工作目錄
command=sh /opt/palo-0.8.2/be/bin/start_be.sh ;執行的命令
autostart=true                                ;自動開啟
autorestart
=true ;自動重啟 user=root ;使用者 numprocs=1 ;程序數 startretries=3 ;啟動重試次數 stopasgroup=true ;是否停止子程序 killasgroup=true ;是否殺死子程序 startsecs
=5 ;啟動5秒後,如果還是執行狀態才認為程序已經啟動 //redirect_stderr = true //stdout_logfile_maxbytes = 20MB //stdout_logfile_backups = 10 //stdout_logfile=/var/log/supervisor-palo_be-0.8.2.log

 

 

2 配置broker程序管理

2.1 修改各個 start_broker.sh 指令碼,去掉最後的 & 符號

vim /opt/palo-0.8.2/apache_hdfs_broker/bin/start_broker.sh

:wq儲存退出

 2.2 建立broker supervisor程序管理配置檔案

輸入命令

vim /etc/supervisord.d/palo_broker-0.8.2.ini

輸入以下內容

[program:BrokerBootstrap]
process_name=%(program_name)s                                       ;程序名稱
directory=/opt/palo-0.8.2/apache_hdfs_broker                        ;工作目錄
command=sh /opt/palo-0.8.2/apache_hdfs_broker/bin/start_broker.sh   ;執行的命令
autostart=true                                                      ;自動開啟
autorestart=true                                                    ;自動重啟
user=root                                                           ;使用者
numprocs=1                                                          ;程序數
startretries=3                                                      ;啟動重試次數
stopasgroup=true                                                    ;是否停止子程序
killasgroup=true                                                    ;是否殺死子程序
startsecs=5                                                         ;啟動5秒後,如果還是執行狀態才認為程序已經啟動
//redirect_stderr=true
//stdout_logfile_maxbytes=20MB
//stdout_logfile_backups=10
//stdout_logfile=/var/log/supervisor-BrokerBootstrap-0.8.2.log

 

3 配置fe程序管理

3.1 修改各個 start_fe.sh 指令碼,去掉最後的 & 符號

vim /opt/palo-0.8.2fe/bin/start_fe.sh

:wq儲存退出

 3.2 建立fe supervisor程序管理配置檔案

輸入命令

vim /etc/supervisord.d/palo_fe-0.8.2.ini

輸入內容如下:

[program:PaloFe]
process_name=PaloFe                                 ;程序名稱
directory=/opt/palo-0.8.2/fe                        ;工作目錄
command=sh /opt/palo-0.8.2/fe/bin/start_fe.sh       ;執行的命令
autostart=true                                      ;自動開啟
autorestart=true                                    ;自動重啟
user=root                                           ;使用者
numprocs=1                                          ;程序數
startretries=3                                      ;啟動重試次數
stopasgroup=true                                    ;是否停止子程序
killasgroup=true                                    ;是否殺死子程序
startsecs=5                                         ;啟動5秒後,如果還是執行狀態才認為程序已經啟動
//redirect_stderr=true
//stdout_logfile_maxbytes=20MB
//stdout_logfile_backups=10
//stdout_logfile=/var/log/supervisor-PaloFe-0.8.2.log

 

4. 驗證

4.1 先確保沒有palo fe,be,broker程序在執行,如果有則使用kill -9  [processid]殺死掉

停止掉fe,broker

[[email protected] palo-0.8.2]# jps
50258 DataNode
60387 Jps
59908 PaloFe
50109 NameNode
40318 BrokerBootstrap
[[email protected] palo-0.8.2]# kill -9 59908
[[email protected] palo-0.8.2]# kill -9 40318

說明: BrokerBootstrap為broker的程序名稱,PaloFe為fe的程序名稱

停止掉be

[[email protected] palo-0.8.2]# ps -e | grep palo
59362 ?        00:00:07 palo_be
[[email protected] palo-0.8.2]# kill -9 59362

 

4.2 啟動supervisor,驗證fe,be,broker是否啟動

啟動supervisor

supervisord -c /etc/supervisord.conf 

 

檢視狀態:

[[email protected] palo-0.8.2]# supervisorctl status
BrokerBootstrap                  RUNNING   pid 64312, uptime 0:00:16
PaloFe                           RUNNING   pid 64314, uptime 0:00:16
palo_be                          RUNNING   pid 64313, uptime 0:00:16

 

驗證fe,be,broker程序是否啟動

[[email protected] palo-0.8.2]# jps
50258 DataNode
63846 Jps
61548 BrokerBootstrap
50109 NameNode
60734 PaloFe
[[email protected] palo-0.8.2]# ps -e | grep palo
61118 ?        00:00:01 palo_be

我們發現程序確實已經啟動了

 

4.3 通過supervisorctl stop後,程序是否停止

be:

[[email protected] palo-0.8.2]# supervisorctl stop palo_be
palo_be: stopped
[[email protected] palo-0.8.2]# ps -e | grep palo

be停止成功

 

fe:

[[email protected] palo-0.8.2]# supervisorctl stop PaloFe
PaloFe: stopped
[[email protected] palo-0.8.2]# jps
50258 DataNode
64411 BrokerBootstrap
50109 NameNode
65295 Jps

fe停止成功

 

broker:

[[email protected] palo-0.8.2]# jps
50258 DataNode
64411 BrokerBootstrap
50109 NameNode
65295 Jps
[[email protected] palo-0.8.2]# supervisorctl stop BrokerBootstrap
BrokerBootstrap: stopped
[[email protected] palo-0.8.2]# jps
65328 Jps
50258 DataNode
50109 NameNode

broker停止成功

 

4.4 通過supervisorctl start可以開啟程序

[[email protected] palo-0.8.2]# jps
50258 DataNode
65400 Jps
50109 NameNode
[[email protected] palo-0.8.2]# ps -e | grep palo
[[email protected] palo-0.8.2]# supervisorctl start all
palo_be: started
PaloFe: started
BrokerBootstrap: started
[[email protected] palo-0.8.2]# supervisorctl status
BrokerBootstrap                  RUNNING   pid 65421, uptime 0:00:21
PaloFe                           RUNNING   pid 498, uptime 0:00:21
palo_be                          RUNNING   pid 65422, uptime 0:00:21
[[email protected] palo-0.8.2]# jps
50258 DataNode
65480 BrokerBootstrap
1212 Jps
50109 NameNode
1101 PaloFe
[[email protected] palo-0.8.2]# ps -e | grep palo
  500 ?        00:00:00 palo_be

結果顯示啟動控制成功。

 

4.5 驗證在fe,be,broker崩潰後supervisor能夠自動重啟程序

 輸入命令ps xuf 檢視程序間的父子關係

ps xuf
root     64311  0.0  0.0 221680 12884 ?        Ss   16:48   0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root     65421  0.0  0.0 113124  1528 ?        S    16:55   0:00  \_ sh /opt/palo-0.8.2/apache_hdfs_broker/bin/start_broker.sh
root     65480  0.2  0.1 24345924 44188 ?      Sl   16:55   0:00  |   \_ /usr/java/jdk1.8.0_172-amd64/bin/java -Xmx20480m -Dfile.encoding=UTF-8 com.baidu.palo.broker.hdfs.BrokerBootstrap
root     65422  0.0  0.0 113128  1540 ?        S    16:55   0:00  \_ sh /opt/palo-0.8.2/be/bin/start_be.sh
root       500  0.5  0.3 1787780 91400 ?       Sl   16:55   0:00  |   \_ /opt/palo-0.8.2/be/lib/palo_be
root       498  0.0  0.0 113120  1492 ?        S    16:55   0:00  \_ sh /opt/palo-0.8.2/fe/bin/start_fe.sh
root      1101  6.1  1.3 9002228 342412 ?      Sl   16:55   0:10      \_ /usr/java/jdk1.8.0_172-amd64/bin/java -Xmx5120m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails 

我們發現在該列表中 fe的pid為1101,be的pid為500,broker的pid為65480

執行下面命令殺死這三個程序

kill -9 1101
kill -9 500 
kill -9 65480

再次輸入ps xuf 檢視程序父子關係

ps xuf
root     64311  0.0  0.0 221680 12892 ?        Ss   16:48   0:00 /usr/bin/python /usr/bin/supervisord -c /etc/supervisord.conf
root      1375  0.0  0.0 113124  1548 ?        S    17:03   0:00  \_ sh /opt/palo-0.8.2/fe/bin/start_fe.sh
root      1709 14.0  1.3 9004284 330748 ?      Sl   17:03   0:09  |   \_ /usr/java/jdk1.8.0_172-amd64/bin/java -Xmx5120m -XX:+UseMembar -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=7 -XX:+PrintGCDateStamps -XX:+PrintGCDetails -XX:+Us
root      1791  0.0  0.0 113128  1540 ?        S    17:03   0:00  \_ sh /opt/palo-0.8.2/be/bin/start_be.sh
root      2054  0.7  0.3 1774784 92008 ?       Sl   17:03   0:00  |   \_ /opt/palo-0.8.2/be/lib/palo_be
root      2265  0.0  0.0 113124  1528 ?        S    17:03   0:00  \_ sh /opt/palo-0.8.2/apache_hdfs_broker/bin/start_broker.sh
root      2295  0.6  0.1 24345924 42224 ?      Sl   17:03   0:00      \_ /usr/java/jdk1.8.0_172-amd64/bin/java -Xmx20480m -Dfile.encoding=UTF-8 com.baidu.palo.broker.hdfs.BrokerBootstrap

發現supervisor確實將程序重新啟動起來了。

 

使用supervisor配置palo守護程序的完畢,使用supervisor後,確實能夠提高應用的健壯性!