CentOS安装supervisor管理rocketmq进程

news2024/9/22 3:59:51

一、supervisor 介绍
Supervisor 翻译过来是监管人,在 Linux 中 Supervisor 是一个进程管理工具,当进程中断的时候 Supervisor 能自动重新启动它。可以运行在各种类 Linux/unix 的机器上,supervisor 就是用 Python 开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台 daemon,并监控进程状态,异常退出时能自动重启。
二、安装 supervisor
1.检查仓库是否有 supervisor 的包,没有则更新 epel 源

yum list | grep supervisor
yum install -y epel-release

在这里插入图片描述
2.安装 supervisor

yum install  -y supervisor

安装完之后的 supervisor 默认配置文件:/etc/supervisord.conf

supervisor 安装完之后会生成两个执行程序(supervisord、supervisorctl)和一个配置文件(echo_supervisord_conf),分别是 supervisor 的守护进程服务(用于接收进程管理命令)、客户端(用于守护进程通信,发送管理进程的指令)、生成初始配置文件程序。

以下是 supervisord.conf 文件的配置:

; Sample supervisor config file.

[unix_http_server]
file=/var/run/supervisor/supervisor.sock   ; (the path to the socket file)
;chmod=0700                 ; socket文件的mode,默认是0700,如果是非root用户使用supervisorctl,则设置成高权限,如0777
;chown=nobody:nogroup       ; socket文件的owner,格式:uid:gid
;username=user              ; (default is no username (open server))
;password=123               ; (default is no password (open server))

;[inet_http_server]         ; HTTP服务器,提供web管理界面
;port=127.0.0.1:9001        ; Web管理后台运行的IP和端口,如果开放到公网,需要注意安全性
;username=user              ; 登录管理后台的用户名
;password=123               ; 登录管理后台的密码

[supervisord]
logfile=/var/log/supervisor/supervisord.log  ; (main log file;default $CWD/supervisord.log)
logfile_maxbytes=50MB       ; (max main logfile bytes b4 rotation;default 50MB)
logfile_backups=10          ; (num of main logfile rotation backups;default 10)
loglevel=info               ; (log level;default info; others: debug,warn,trace)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
nodaemon=false              ; (start in foreground if true;default false)
minfds=1024                 ; (min. avail startup file descriptors;default 1024)
minprocs=200                ; (min. avail process descriptors;default 200)
;umask=022                  ; (process file creation umask;default 022)
;user=chrism                 ; (default is current user, required if root)
;identifier=supervisor       ; (supervisord identifier, default is 'supervisor')
;directory=/tmp              ; (default is not to cd during start)
;nocleanup=true              ; (don't clean up tempfiles at start;default false)
;childlogdir=/tmp            ; ('AUTO' child log dir, default $TEMP)
;environment=KEY=value       ; (key value pairs to add to environment)
;strip_ansi=false            ; (strip ansi escape codes in logs; def. false)

; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

[supervisorctl]
serverurl=unix:///var/run/supervisor/supervisor.sock ; use a unix:// URL  for a unix socket
;serverurl=http://127.0.0.1:9001 ; use an http:// url to specify an inet socket
;username=chris              ; should be same as http_username if set
;password=123                ; should be same as http_password if set
;prompt=mysupervisor         ; cmd line prompt (default "supervisor")
;history_file=~/.sc_history  ; use readline history if available

; The below sample program section shows all possible program subsection values,
; create one or more 'real' program: sections to be able to control them under
; supervisor.

;[program:theprogramname]
;command=/bin/cat              ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=999                  ; the relative start priority (default 999)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=true              ; retstart at unexpected quit (default: true)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups=10     ; # of stderr logfile backups (default 10)
;stderr_capture_maxbytes=1MB   ; number of bytes in 'capturemode' (default 0)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions (def no adds)
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample eventlistener section shows all possible
; eventlistener subsection values, create one or more 'real'
; eventlistener: sections to be able to handle event notifications
; sent by supervisor.

;[eventlistener:theeventlistenername]
;command=/bin/eventlistener    ; the program (relative uses PATH, can take args)
;process_name=%(program_name)s ; process_name expr (default %(program_name)s)
;numprocs=1                    ; number of processes copies to start (def 1)
;events=EVENT                  ; event notif. types to subscribe to (req'd)
;buffer_size=10                ; event buffer queue size (default 10)
;directory=/tmp                ; directory to cwd to before exec (def no cwd)
;umask=022                     ; umask for process (default None)
;priority=-1                   ; the relative start priority (default -1)
;autostart=true                ; start at supervisord start (default: true)
;autorestart=unexpected        ; restart at unexpected quit (default: unexpected)
;startsecs=10                  ; number of secs prog must stay running (def. 1)
;startretries=3                ; max # of serial start failures (default 3)
;exitcodes=0,2                 ; 'expected' exit codes for process (default 0,2)
;stopsignal=QUIT               ; signal used to kill process (default TERM)
;stopwaitsecs=10               ; max num secs to wait b4 SIGKILL (default 10)
;user=chrism                   ; setuid to this UNIX account to run the program
;redirect_stderr=true          ; redirect proc stderr to stdout (default false)
;stdout_logfile=/a/path        ; stdout log path, NONE for none; default AUTO
;stdout_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stdout_logfile_backups=10     ; # of stdout logfile backups (default 10)
;stdout_events_enabled=false   ; emit events on stdout writes (default false)
;stderr_logfile=/a/path        ; stderr log path, NONE for none; default AUTO
;stderr_logfile_maxbytes=1MB   ; max # logfile bytes b4 rotation (default 50MB)
;stderr_logfile_backups        ; # of stderr logfile backups (default 10)
;stderr_events_enabled=false   ; emit events on stderr writes (default false)
;environment=A=1,B=2           ; process environment additions
;serverurl=AUTO                ; override serverurl computation (childutils)

; The below sample group section shows all possible group values,
; create one or more 'real' group: sections to create "heterogeneous"
; process groups.

;[group:thegroupname]
;programs=progname1,progname2  ; each refers to 'x' in [program:x] definitions
;priority=999                  ; the relative start priority (default 999)

; The [include] section can just contain the "files" setting.  This
; setting can list multiple files (separated by whitespace or
; newlines).  It can also contain wildcards.  The filenames are
; interpreted as relative to this file.  Included files *cannot*
; include files themselves.

[include]
files = /etc/supervisord.d/*.conf    ;可以指定一个或多个以.ini或.conf结束的配置文件,以空格分隔各个配置条目

注:[include]
files = /etc/supervisord.d/*.conf 这行代表 supervisor 会从配置文件的同级目录supervisord.d(默认为/etc/ supervisord.d/)下读取所有的.ini或.conf文件作为被管理的应用的配置。

3.启动 supervisor 并配置成开机自启

systemctl start supervisord
systemctl enable supervisord

三、安装 rocketmq
1.安装包下载地址

https://rocketmq.apache.org/download/

2.下载所需版本上传解压

unzip rocketmq-all-5.1.1-bin-release.zip
mv rocketmq-all-5.1.1-bin-release /usr/local/rocketmq

vim /etc/profile  #将以下配置添加到 profile
export PATH=$PATH:/usr/local/rocketmq/bin
export NAMESRV_ADDR=localhost:9876

source /etc/profile

3.修改 server、broke 启动内存

cd /usr/local/rocketmq/
vim bin/runserver.sh
vim bin/runbroker.sh

在这里插入图片描述
在这里插入图片描述
4.rocketmq 启停命令

cd /usr/local/rocketmq/
nohup sh bin/mqnamesrv>/usr/local/rocketmq/log/namesrv.log 2>&1 &      # 启动 namesrv
nohup sh bin/mqbroker -n localhost:9876 -c conf/broker.conf >/usr/local/rocketmq/log/broker.log 2>&1 &    # 启动 broker
sh bin/mqshutdown broker    # 停止 broke
sh bin/mqshutdown namesrv   # 停止 namesrv

四、配置 supervisor 管理 rocketmq 进程文件

1.启动 namesrv 配置

vim /etc/supervisord.d/mqnamesrv.conf

[program:mqnamesrv]
command=/usr/local/rocketmq/bin/mqnamesrv
directory=/usr/local/rocketmq
autostart=true
priority=1
autorestart=true
startretries=5
stopsignal=QUIT
user=root
stdout_logfile=/usr/local/rocketmq/log/namesrv.log
environment=JAVA_HOME=/opt/jdk1.8.0_291,JAVA_BIN=/opt/jdk1.8.0_291/bin

2.启动 broke 配置

vim /etc/supervisord.d/mqbroker.conf

[program:mqbroker]
command=/usr/local/rocketmq/bin/mqbroker -n localhost:9876 -c /usr/local/rocketmq/conf/broker.conf
directory=/usr/local/rocketmq
autostart=true
autorestart=true
startretries=5
stopsignal=QUIT
user=root
stdout_logfile=/usr/local/rocketmq/log/broker.log
environment=JAVA_HOME="/opt/jdk1.8.0_291",JAVA_BIN="/opt/jdk1.8.0_291/bin"
  1. supervisor 常用命令
supervisorctl status  # 查看当前运行的进程列表
supervisorctl reload  # 载入所有配置文件,并按新的配置启动、管理所有进程(会重启原来已运行的程序)
supervisorctl update  # 更新新的配置到supervisord(不会重启原来已运行的程序)
supervisorctl reread  # 当一个服务由自动启动修改为手动启动时执行一下就ok
supervisorctl start xxx  # 启动某个进程
supervisorctl stop  xxx # 停止某一个进程(xxx),xxx为[program:theprogramname]里配置的值
supervisorctl restart xxx  # 重启某个进程
supervisorctl stop all  # 停止全部进程
supervisorctl stop all  #启动全部进程

报错:ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! !!
这里用 supervisor 启动 rocketmq 会找不到 jdk 路径,然后做了以下修改

cd /usr/local/rocketmq/
vim bin/runserver.sh
vim bin/runbroker.sh

在这里插入图片描述
4.启动 namesrv、broker

supervisorctl start all

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/690558.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Qt】随记2:CV_Assert的用法

欢迎阅读本博文,本文主要记录Qt学习、工作中的一些注意点及相关笔记📃 希望记录的内容有帮助到你,也欢迎把你知道的分享给大家,一起进步!🎉 喜欢的话,请帮忙点赞👍、评论&#x1f4…

STM32开发指南:逐步揭开嵌入式世界的奥秘

想要深入嵌入式开发领域?掌握STM32这本"天书"?也许你觉得它难以捉摸,但是别担心!我们为你准备了一份简洁明了的指南,将带你逐步解读STM32的奥秘。 首先,我们将介绍STM32的基础知识。从了解STM32…

自学黑客(网络安全),一般人我劝你还是算了吧(自学网络安全学习路线--第六章 身份认证与访问控制)【建议收藏】

文章目录 一、自学网络安全学习的误区和陷阱二、学习网络安全的一些前期准备三、自学网络安全学习路线一、身份认证1、身份认证概述2、身份认证常用技术3、常用身份认证机制 二、访问控制1、访问控制概述2、访问控制基本要素 三、访问控制类型四、访问控制机制 一、自学网络安全…

git 常见错误解决

一、git命令运行时出现以下错误提示: git add -A fatal: detected dubious ownership in repository at D:/****/WWW/www.***.cc D:/**/WWW/www.**.cc is owned by:S-1-5-32-544 but the current user is:S-1-5-21-4097290046-3821524887-*****-1001 To add an exce…

B站 Java相关学习资源汇总

一、计算机网络 计算机网络微课堂 https://www.bilibili.com/video/BV1c4411d7jb?p1 讲师:湖科大教书匠 评价:通俗易懂,重点知识十分细致,配合实验,而且有考研408 的难题的讲解,也是非常适合考研党&#…

QT树的实现

理论 在Model/View结构中,数据模型为视图组件和代理组件提供存取数据的标准接口。在QT中,所有的数据模型类都从QAbstactItemModel继承而来,不管底层的数据结构是如何组织数据的,QAbstractItemModel的子类都以表格的层次结构表示数…

Qt中多线程的使用

前言 在进行桌面应用程序开发的时候, 假设应用程序在某些情况下需要处理比较复杂的逻辑, 如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事件&a…

快速幂的理解、leetcode剑指 Offer 16. 数值的整数次方解析

0、引言 算法小计:本文阐述以下自己对于快速幂的理解,之前想了很久没想通。 对于求一个数字a的n次方问题:,如果直接写循环,从1开始每次乘以a,求n次即可做出答案,但时间复杂度是O(n)&#xff0c…

陌陌聊天数据分析 (二)

陌陌聊天数据分析 (二) 🏆FineBI构建连接 陌陌聊天数据分析 (一) 新建连接 配置连接 测试连接并保存 🏅数据准备 新建分组 添加业务包 添加表 🥈构建可视化报表 🏈添加…

国内好用的五款低代码平台,你用的哪一款?

随着信息化技术的发展,软件开发领域也在不断更新迭代,在企业数字化升级的浪潮中,低代码平台的应用也越来越广泛。从业务系统到办公软件,从 BI分析到移动开发,越来越多的企业和IT团队开始使用低代码平台来构建数字化应用…

【Nginx】第六章 Nginx配置实例-动静分离

Nginx 动静分离简单来说就是把动态跟静态请求分开,不能理解成只是单纯的把动态页面和静态页面物理分离。严格意义上说应该是动态请求跟静态请求分开,可以理解成使用Nginx 处理静态页面,Tomcat处理动态页面。动静分离从目前实现角度来讲大致分…

超分布检测中的平衡能量正则化损失

文章目录 Balanced Energy Regularization Loss for Out-of-distribution Detection摘要本文方法Balanced Energy regularization loss 实验结果 Balanced Energy Regularization Loss for Out-of-distribution Detection 摘要 在超分布(out of distribution, OOD)检测领域&a…

express 获取阿里云 oss 文件对象列表

使用 ali-oss 包 pnpm add ali-oss -S 创建 oss 实例,并拉取数据 阿里云 oss 返回示例:

一种接口依赖关系分层方案 | 京东云技术团队

1、背景 到店商详迭代过程中,需要提供的对外能力越来越多,如预约日历、附近门店、为你推荐等。这其中不可避免会出现多个上层能力依赖同一个底层接口的场景。最初采用的方案是对外API入口进来后获取对应的能力,并发调用多项能力,…

【Vue】组件高级

文章目录 组件高级一、watch 监听器二、组件的生命周期2.1 组件运行的过程2.2 监听组件的不同时刻2.3 监听组件的更新2.4 主要生命周期函数 三、组件之间的数据共享3.1 组件关系及数据共享3.2 父子组件数据共享3.3 兄弟组件数据共享3.4 后代组件数据共享3.5 vuex 四、全局配置 …

基于Thinkphp6框架全新UI的AI网址导航系统源码

✨ 源码介绍 2023全新UI的AI网址导航系统源码,基于thinkphp6框架开发的 AI 网址导航是一个非常实用的工具,它能够帮助用户方便地浏览和管理自己喜欢的网站。 相比于其他的 AI 网址导航,这个项目使用了更加友好和易用的 ThinkPHP 框架进行搭建…

基于3×3耦合器的干涉型光纤传感器信号解调技术研究-Matlab代码

一、引言 光纤耦合器是一种使光信号在特殊结构的耦合区内发生耦合,将功率再分配的无源器件。它在光纤传感和光通信等领域有着广泛的应用,在耦合过程中,光信号的频谱成分不变,只是信号的光功率发生变化。1980年,K&…

2023双态IT北京用户大会回顾(二) | 云内外一体化智能监控构建之路

文末附有本场专题演讲视频 2023第五届双态IT北京用户大会擎创科技专场演讲回顾(二):《云内外一体化智能监控构建之路》演讲嘉宾:擎创科技产品线总监 殷传旺 一、前言:企业运维自然推进or独立发展? 我们从…

WebAssembly能否取代Docker?

“如果WebAssembly(Wasm)在几年前出现,Docker可能就不会出现了。因为它是一项非常强大的跨平台技术,可以让我们使用不同的编程语言来编写跨平台应用程序。Docker的原始动力之一就是提供一个跨平台部署和应用的方法。” -- Solomon…

lesson6 ZIgbee网络特性抓包分析

目录 ZIgbee网络特性抓包分析 理论部分: 实验部分: 入网前相关数据帧(仅单个设备供电): 首先以路由器和协调器为例:(帧的类别从头部的Type可以看到,在四大帧类别中根据不同作用也…