• supervisor进程管理 ——k8s从入门到高并发系列教程(十一)


    现在我们容器内运行的进程有 php-fpm、nginx、php-fpm-exporter、nginx-prometheus-exporter,为了方便的管理和添加容器内的进程,我们使用supervisor进行进程管理。最后让supervisor在前台运行

    我们的phpfpm镜像是基于debian系统的,安装supervisor命令为

    apt install -y supervisor

    supervisor前台运行的命令为

    supervisord -n -c /etc/supervisor/supervisord.conf

    supervisor每个进程项目的配置文件debian系统下为 /etc/supervisor/conf.d

    nginx

    nginx supervisor进程管理配置文件 supervisor-nginx.conf

    1. [program:nginx]
    2. command=nginx
    3. autostart=true
    4. autorestart=true
    5. priority=991
    6. stdout_events_enabled=true
    7. stderr_events_enabled=true
    8. stdout_logfile=/dev/stdout
    9. stdout_logfile_maxbytes=0
    10. stderr_logfile=/dev/stdout
    11. stderr_logfile_maxbytes=0

    php-fpm

    phpfpm supervisor进程管理配置文件supervisor-phpfpm.conf

    1. [program:php-fpm]
    2. command = php-fpm
    3. autostart=true
    4. autorestart=true
    5. priority=990
    6. stdout_logfile=/dev/stdout
    7. stdout_logfile_maxbytes=0
    8. stderr_logfile=/dev/stdout
    9. stderr_logfile_maxbytes=0

    php-fpm-exporter

    phpfpm-exporter supervisor进程管理配置文件supervisor-phpfpm-exporter.conf

    1. [program:php-fpm-exporter]
    2. command = /usr/local/bin/php-fpm-exporter --addr="0.0.0.0:9190" --fastcgi="tcp://127.0.0.1:9000/php_status"
    3. autostart=false
    4. autorestart=false
    5. priority=992
    6. stdout_logfile=/dev/stdout
    7. stdout_logfile_maxbytes=0
    8. stderr_logfile=/dev/stdout
    9. stderr_logfile_maxbytes=0

    phpfpm exporter默认没有自动启动,只有在需要启动的时候,通过命令让他启动

    启动命令为

    supervisorctl start php-fpm-exporter

    nginx-exporter

    nginx-exporter supervisor进程管理配置文件supervisor-nginx-exporter.conf

    1. [program:nginx-exporter]
    2. command=/usr/local/bin/nginx-prometheus-exporter -nginx.scrape-uri=http://127.0.0.1/stub_status
    3. autostart=false
    4. autorestart=false
    5. priority=993
    6. stdout_events_enabled=true
    7. stderr_events_enabled=true
    8. stdout_logfile=/dev/stdout
    9. stdout_logfile_maxbytes=0
    10. stderr_logfile=/dev/stdout
    11. stderr_logfile_maxbytes=0

    nginx exporter默认没有自动启动,只有在需要启动的时候,通过命令让他启动

    启动命令为

    supervisorctl start nginx-exporter

    踩坑踩坑踩坑踩坑踩坑踩坑踩坑

    如果这样做,supervisor会报错 phpfpm 和 nginx 必须要设置成前台启动

    nginx命令为

    command=nginx -g 'daemon off;'

    phpfpm命令为 

    command = php-fpm -F

    dockerfile文件的修改

    基于以上内容,我们的dockerfile文件修改为

    1. # 安装supervisor
    2. RUN apt install -y supervisor
    3. ADD conf/supervisor-nginx.conf /etc/supervisor/conf.d/nginx.conf
    4. ADD conf/supervisor-phpfpm.conf /etc/supervisor/conf.d/phpfpm.conf
    5. ADD conf/supervisor-phpfpm-exporter.conf /etc/supervisor/conf.d/phpfpm-exporter.conf
    6. ADD conf/supervisor-nginx-exporter.conf /etc/supervisor/conf.d/nginx-exporter.conf
    7. # 执行容器启动后的命令
    8. CMD ["supervisord", "-n", "-c", "/etc/supervisor/supervisord.conf"]

  • 相关阅读:
    LibAlias
    登录页面怎么做渗透
    力扣370周赛 -- 第三题(树形DP)
    C++运算符重载(二)简单易懂的智能指针教程,指针类运算符重载。->运算符重载,*运算符重载,【】运算符重载。最后附带完整实现代码。
    漏洞修复-SSH版本信息可被获取漏洞
    【Linux】高频指令及简单的vim使用(0基础带你快速入门)
    【云原生 • Kubernetes】kubernetes 核心技术 - Pod
    [RL robotic 环境] - [Robosuite]
    简述SVM
    C++:AVL树
  • 原文地址:https://blog.csdn.net/fanghailiang2016/article/details/126863710