首页 > 其他分享 >doris配置自动拉起服务-supervisor

doris配置自动拉起服务-supervisor

时间:2024-06-07 18:12:55浏览次数:16  
标签:supervisor supervisord start sh 自动 true doris

服务自动拉起

本文档主要介绍如何配置 Doris 集群的自动拉起,保证生产环境中出现特殊情况导致服务宕机后未及时拉起服务从而影响到业务的正常运行。

Doris 集群必须完全搭建完成后再配置 FE 和 BE 的自动拉起服务。

Supervisor 配置 Doris 服务

Supervisor 具体使用以及参数解析可以参考这里

Supervisor 配置自动拉起可以使用 yum 命令直接安装,也可以通过 pip 手工安装,pip 手工安装流程比较复杂,只展示 yum 方式部署,手工部署请参考这里进行安装部署。

配置步骤

  1. yum 安装 supervisor

    yum install epel-release
    yum install -y supervisor
    
     
  2. 启动服务并查看状态

    systemctl enable supervisord # 开机自启动
    systemctl start supervisord # 启动 supervisord 服务
    systemctl status supervisord # 查看 supervisord 服务状态
    ps -ef|grep supervisord # 查看是否存在 supervisord 进程
    
     
  3. 配置 BE 进程管理

    修改 start_be.sh 脚本,去掉最后的 & 符号
    
    vim /path/doris/be/bin/start_be.sh
    将 nohup $LIMIT ${DORIS_HOME}/lib/palo_be "$@" >> $LOG_DIR/be.out 2>&1 </dev/null &
    修改为 nohup $LIMIT ${DORIS_HOME}/lib/palo_be "$@" >> $LOG_DIR/be.out 2>&1 </dev/null
    
      配置著配置文件supervisor.conf
    # 1、编辑
    vim /etc/supervisor/supervisor.conf
    在[supervisord]下
    minfds=65535
    
    
    # 2、将jdk环境变量写进be.conf的配置文件中
    分别在 fe.conf 和 be.conf 中添加 JAVA_HOME 变量配置
    echo "JAVA_HOME=your_java_home" >> /home/doris/be/conf/be.conf
     
     
     
    注意上面两个步骤很重要、不然会报:
    Exited too quickly(process log may have details)
     

    创建 BE 的 supervisor 进程管理配置文件

    vim /etc/supervisord.d/doris-be.ini
    
    [program:doris_be]      
    process_name=%(program_name)s      
    directory=/path/doris/be/be
    command=sh /path/doris/be/bin/start_be.sh
    autostart=true
    autorestart=true
    user=root
    numprocs=1
    startretries=3
    stopasgroup=true
    killasgroup=true
    startsecs=5
    #redirect_stderr = true
    #stdout_logfile_maxbytes = 20MB
    #stdout_logfile_backups = 10
    #stdout_logfile=/var/log/supervisor-palo_be.log
    
     
  4. 配置 FE 进程管理

    修改 start_fe.sh 脚本,去掉最后的 & 符号
    
    vim /path/doris/fe/bin/start_fe.sh 
    将 nohup $LIMIT $JAVA $final_java_opt org.apache.doris.PaloFe ${HELPER} "$@" >> $LOG_DIR/fe.out 2>&1 </dev/null &
    修改为 nohup $LIMIT $JAVA $final_java_opt org.apache.doris.PaloFe ${HELPER} "$@" >> $LOG_DIR/fe.out 2>&1 </dev/null
    
     

    创建 FE 的 supervisor 进程管理配置文件

    vim /etc/supervisord.d/doris-fe.ini
    
    [program:PaloFe]
    environment = JAVA_HOME="/path/jdk8"
    process_name=PaloFe
    directory=/path/doris/fe
    command=sh /path/doris/fe/bin/start_fe.sh
    autostart=true
    autorestart=true
    user=root
    numprocs=1
    startretries=3
    stopasgroup=true
    killasgroup=true
    startsecs=10
    #redirect_stderr=true
    #stdout_logfile_maxbytes=20MB
    #stdout_logfile_backups=10
    #stdout_logfile=/var/log/supervisor-PaloFe.log
    
     
  5. 配置 Broker 进程管理

    修改 start_broker.sh 脚本,去掉最后的 & 符号
    
    vim /path/apache_hdfs_broker/bin/start_broker.sh
    将 nohup $LIMIT $JAVA $JAVA_OPTS org.apache.doris.broker.hdfs.BrokerBootstrap "$@" >> $BROKER_LOG_DIR/apache_hdfs_broker.out 2>&1 </dev/null &
    修改为 nohup $LIMIT $JAVA $JAVA_OPTS org.apache.doris.broker.hdfs.BrokerBootstrap "$@" >> $BROKER_LOG_DIR/apache_hdfs_broker.out 2>&1 </dev/null
    
     

    创建 Broker 的 supervisor 进程管理配置文件

    vim /etc/supervisord.d/doris-broker.ini
    
    [program:BrokerBootstrap]
    environment = JAVA_HOME="/usr/local/java"
    process_name=%(program_name)s
    directory=/path/apache_hdfs_broker
    command=sh /path/apache_hdfs_broker/bin/start_broker.sh
    autostart=true
    autorestart=true
    user=root
    numprocs=1
    startretries=3
    stopasgroup=true
    killasgroup=true
    startsecs=5
    #redirect_stderr=true
    #stdout_logfile_maxbytes=20MB
    #stdout_logfile_backups=10
    #stdout_logfile=/var/log/supervisor-BrokerBootstrap.log
    
     
  6. 首先确定 Doris 服务是停止状态,然后使用 supervisor 将 Doris 自动拉起,然后确定进程是否正常启动

    supervisorctl reload # 重新加载 Supervisor 中的所有配置文件
    supervisorctl status # 查看 supervisor 状态,验证 Doris 服务进程是否正常启动
    
    其他命令 : 
    supervisorctl start all # supervisorctl start 可以开启进程
    supervisorctl stop doris-be # 通过 supervisorctl stop,停止进程
    
     
警告

注意事项:

  • 如果使用 yum 安装的 supervisor 启动报错 : pkg_resources.DistributionNotFound: The 'supervisor==3.4.0' distribution was not found

    这个是 python 版本不兼容问题,通过 yum 命令直接安装的 supervisor 只支持 python2 版本,所以需要将 /usr/bin/supervisord 和 /usr/bin/supervisorctl 中文件内容开头 #!/usr/bin/python 改为 #!/usr/bin/python2,前提是要装 python2 版本
    
     
  • 如果配置了 supervisor 对 Doris 进程进行自动拉起,此时如果 Doris 出现非正常因素导致 BE 节点宕机,那么此时本来应该输出到 be.out 中的错误堆栈信息会被 supervisor 拦截,需要在 supervisor 的 log 中查找来进一步分析。

标签:supervisor,supervisord,start,sh,自动,true,doris
From: https://www.cnblogs.com/littlecc/p/18237679

相关文章

  • python自动化脚本:12306-火车票购票
    1.导包:importtimefromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.common.keysimportKeysfromselenium.webdriver.support.uiimportWebDriverWait2.选择浏览器驱动:这里选择的是Chromedriver=webdriver.Chrom......
  • 自动化搭建专属 AI 绘图服务
    通义万相AIGC技术已经比较成熟,结合阿里云的计算和存储产品可以方便的搭建自己专属的 AI 绘图服务。例如《创意加速器:AI 绘画创作》这个解决方案,利用阿里自研的通义万相AIGC技术在 Web 服务中实现先进的图像生成。AI 绘画服务搭建步骤从架构图中可以看到,要想搭建这样一套......
  • java mqtt自动重连注意点
    1、在使用Java的 org.eclipse.paho.client.mqttv3 MQTT客户端库时,options.setAutomaticReconnect(false) 的设置是用来指定在连接丢失后,客户端是否应该自动尝试重新连接。将其设置为 false 意味着如果连接丢失,客户端不会自动尝试重新连接。然而,即使设置了自动重连为 fa......
  • ubuntu 22.04每日自动备份数据库
    自动备份数据库我们将设置一个每天凌晨2:00执行备份的Cron任务。首先确保您已经安装了MySQL服务:sudoaptupdatesudoaptinstallmysql-server创建备份目录:sudomkdir/opt/mysql_backupssudochownmysql:mysql/opt/mysql_backups这里我们创建了一个/op......
  • 每日销售报告自动化_在特定时间(每日 10:00 下午)发送邮件
    从主数据表中提取数据后,我需要在每天下午10:00按特定格式发送每日销售报告。使用示例数据测试google表链接。https://docs.google.com/spreadsheets/d/1nOpdDY6A_-Pz8Zj8lutpli1RDDv1V8Cc4dTgi-DEpks/edit#gid=0在上述工作表中,工作表一"......
  • 自动化:用selenium发一篇博文
    Python的安装与环境搭建网址:https://www.python.org/选择“Downloads”下载最新的3.12版本的python,选择一个路径安装(我选择安装在D盘根目录下,新建了一个“python”文件夹),同时记得选择‘AddPython3.12toPATH”。可以通过打开cmd输入python检查,如果返回了python的版本信息,则......
  • Python自动化发送邮件如何实现?怎么配置?
    Python自动化发送邮件需要注意什么?邮件群发的技巧?无论是个人使用还是企业需求,电子邮件的发送都是必不可少的。而Python作为一门功能强大的编程语言,可以通过自动化脚本实现批量发送邮件,从而提高工作效率。AokSend将详细介绍如何使用Python自动化发送邮件。Python自动化发送邮......
  • LangChain实战技巧之五:让模型“自动生成”Prompt(提示词)的两种方式
    预备知识with_structured_outputbind_tools对这两种方式不了解的朋友,可以翻阅我的这篇文章找到用法哈LangChain实战技巧之三:关于Tool的一点拓展实现方法方法一步骤一#首先,新建一个提示词抽取器prompt_extractor=ChatPromptTemplate.from_template(template="""......
  • Spring的自动装配
    在SpringBoot中,自动装配(Auto-Configuration)是一个强大且简化配置的功能,它可以自动配置Spring应用程序所需的各种组件和服务。自动装配通过使用Spring的@Autowired注解结合SpringBoot的自动配置机制来实现。这使得开发者可以快速上手并专注于业务逻辑,而不需要手动配置大量的Sp......
  • 《手把手教你》系列练习篇之12-python+ selenium自动化测试(详细教程)
    1.简介前面文章我们了解了如何获取元素的text属性值,和判断元素是否显示在页面(is_displayed()方法),本文我们来学习下,判断一个控件是否被选中状态、获取页面元素的大小、组合键-全选文字、组合键-退格键删除文本和鼠标右键等练习的内容。2.验证控件是否被选中还是以百度......