码迷,mamicode.com
首页 > 系统相关 > 详细

Palo通过supervisor进行进程管理

时间:2018-11-17 17:56:28      阅读:258      评论:0      收藏:0      [点我收藏+]

标签:安装   博客   trap   列表   自动重启进程   htm   broker   work   nod   

下面一段文字是摘自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

[root@palo252 palo-0.8.2]# jps
50258 DataNode
60387 Jps
59908 PaloFe
50109 NameNode
40318 BrokerBootstrap
[root@palo252 palo-0.8.2]# kill -9 59908
[root@palo252 palo-0.8.2]# kill -9 40318

说明: BrokerBootstrap为broker的进程名称,PaloFe为fe的进程名称

停止掉be

[root@palo252 palo-0.8.2]# ps -e | grep palo
59362 ?        00:00:07 palo_be
[root@palo252 palo-0.8.2]# kill -9 59362

 

4.2 启动supervisor,验证fe,be,broker是否启动

启动supervisor

supervisord -c /etc/supervisord.conf 

 

查看状态:

[root@palo252 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进程是否启动

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

我们发现进程确实已经启动了

 

4.3 通过supervisorctl stop后,进程是否停止

be:

[root@palo252 palo-0.8.2]# supervisorctl stop palo_be
palo_be: stopped
[root@palo252 palo-0.8.2]# ps -e | grep palo

be停止成功

 

fe:

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

fe停止成功

 

broker:

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

broker停止成功

 

4.4 通过supervisorctl start可以开启进程

[root@palo252 palo-0.8.2]# jps
50258 DataNode
65400 Jps
50109 NameNode
[root@palo252 palo-0.8.2]# ps -e | grep palo
[root@palo252 palo-0.8.2]# supervisorctl start all
palo_be: started
PaloFe: started
BrokerBootstrap: started
[root@palo252 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
[root@palo252 palo-0.8.2]# jps
50258 DataNode
65480 BrokerBootstrap
1212 Jps
50109 NameNode
1101 PaloFe
[root@palo252 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确实将进程重新启动起来了。

 

说明一下:

通过supervisorctl status查询出来的进程id其实不是fe,be,broker的进程id,而是启动他们的shell进程id,start_xxx.sh里面会启动真正的doris进程,所以才有了进程树之说,所以我们在配置的时候需要配置

stopasgroup=true ;是否停止子进程

killasgroup=true ;是否杀死子进程


这两个参数为true,否则通过supervisorctl控制doris的后台进程是无效的,这个是通过supervisor做doris守护进程的关键。

 

使用supervisor配置palo守护进程的完毕,使用supervisor后,确实能够提高应用的健壮性!

Palo通过supervisor进行进程管理

标签:安装   博客   trap   列表   自动重启进程   htm   broker   work   nod   

原文地址:https://www.cnblogs.com/lenmom/p/9973401.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!