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後,確實能夠提高應用的健壯性!