了解最新公司动态及行业资讯
在运行和维护Linux服务过程中服务器运维,如果后台任务失败,服务器宕机后无法自动重启或者进程被人为错误杀死怎么办?利用,&,nohup?这些方法不够可靠和灵活..
对于运维人员来说,服务的连续性和可靠性永远是第一位的,那么有没有办法实时监控后台程序或者关键服务的运行状态,让它们在后台稳定运行呢?今天小编就给大家分享一套由——开发的强大的流程管理程序。
是一个客户端/服务器系统,它允许用户监视和控制类 UNIX 操作系统上的大量进程。通过这样,我们不仅可以实时监控进程的运行状态,批量重启进程,还可以轻松实现程序挂起或服务机宕机时进程自动恢复的功能,不再需要编写一个shell脚本来控制它。
安装配置
1、在linux中的安装比较简单:
➜ ~ easy_install supervisor
安装完成后,会生成三个执行程序:、、f,分别是守护服务、客户端和生成初始配置文件的程序。
初始化配置文件:
➜ ~ echo_supervisord_conf > /etc/supervisor/supervisord.conf
修改配置文件。这里只需要进行两次修改。可以使用其他默认配置。最终结果如下:
首先取消注释监听端口,其次修改管理进程配置文件的目录。当我们要使用管理进程时,只需要在对应目录/etc//添加一个.conf文件即可
启动:这里-c指定我们启动的配置文件
➜ ~ supervisord -c /etc/supervisord/supervisor.conf
查看当前托管的进程
➜ ~ supervisorctl status
此时,由于我们还没有在/etc//下配置任何.conf文件,所以这里什么都没有显示。
2、下面启动托管服务(这里以redis和一个简单的后台ping任务为例)
1)➜ ~ vi /etc/supervisord/redis.conf
相关配置和注释如下图所示,其中启动了一个名为test-redis-6379的redis服务
每次修改.conf文件,都需要执行以下命令来添加或修改服务:
➜ ~ supervisorctl reread #读取托管服务配置文件➜ ~ supervisorctl add test-redis-6379 #添加test-redis-6379服务 ➜ ~ supervisorctl status test-redis-6379 #查看服务状态 2)➜ ~ vi /etc/supervisord/ping.conf
查看所有托管服务状态:
3、测试服务异常kill是否可以自动重启,保证持续提供服务的能力。在这里,我手动杀死了所有服务。我们可以看到服务快速拉起来,实现了自动重启:
4、测试服务器是否因异常宕机而重启,是否可以自动启动服务和脚本。有一个先决条件配置需要设置为启动时自动启动服务器运维,这样托管服务才能启动。
➜ ~ echo "/usr/bin/supervisord -c /etc/supervisord/supervisor.conf" >> /etc/rc.local
可以看到,服务器启动后,可以调出自启动、托管的自定义服务和脚本。对于运维人员来说,它确实是一个管理特殊服务和脚本的工具。其他配置和魔法用途可以自行研究。