将linxc-keepalived的active(runing)->active(exited)、docker的active(runing)->active(exited)

初始状态
--------此处以linxc-keepalived举例,“vim /lib/systemd/system/linxc-keepalived.service”打开对应配置文件(大多数服务对应的配置文件参数都是此处),“service linxc-keepalived status”查看状态

初始配置文件:在这里插入图片描述
初始服务状态:在这里插入图片描述

参数与状态理解
--------1.要想复现exited状态首先应该明白各个配置参数的含义: ExecStart:启动当前服务的命令、ExecStartPre:启动当前服务之前执行的命令、ExecStartPost:启动当前服务之后执行的命令、ExecReload:重启当前服务时执行的命令、ExecStop:停止当前服务时执行的命令、ExecStopPost:停止当其服务之后执行的命令、RestartSec:自动重启当前服务间隔的秒数、RemainAfterExit=yes systemd将该服务保持为活动状态、Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog、no、TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数、Environment:指定环境变量
--------2.active(runing、exited、waiting、dead)几种状态的实际意义:active(running) ##正有一个或多个程序正在系统中执行, vsftpd就是这种模式、atcive(exited) ##仅执行一次就正常结束的服务, 目前并沒有任何程序在系統中执行、atcive(waiting)##正在执行当中,不过还在等待其他的事件才能继续处理、atcive(dead)##程序退出;在操作系统中,有某些服务只需要初始化一下就可以了,不需要在服务器中启动一个守护进程。这种服务初始化完成后就直接推出,其服务的状态就是active(exited)
--------3.Type的属性:simple :(默认值)systemd认为该服务将立即启动。服务进程不会 fork 。如果该服务要启动其他服务,不要使用此类型启动,除非该服务是socket 激活型、forking :systemd认为当该服务进程fork,且父进程退出后服务启动成功。对于常规的守护进程(daemon),除非你确定此启动方式无法满足需求,使用此类型启动即可。使用此启动类型应同时指定PIDFile=,以便 systemd 能够跟踪服务的主进程、oneshot :这一选项适用于只执行一项任务、随后立即退出的服务。可能需要同时设置 RemainAfterExit=yes 使得 systemd 在服务进程退出之后仍然认为服务处于激活状态、notify :与Type=simple相同,但约定服务会在就绪后向 systemd 发送一个信号。这一通知的实现由libsystemd-daemon.so提供、dbus :若以此方式启动,当指定的BusName出现在DBus系统总线上时,systemd认为服务就绪、idle :systemd会等待所有任务处理完成后,才开始执行idle类型的单元。其他行为与Type=simple类似

解决方法
--------在配置文件“vim /lib/systemd/system/docker.service ”中修改“Type=simple”使其以默认的普通方式启动再加上“RemainAfterExit=yes”systemd将该服务保持为活动状态,“Restart=no”使其结束后不必重启,再设置“ExecStartPost=/bin/kill -HUP $MAINPID”服务启动过后执行这条命令,使其可以启动过后就将这个服务kill掉,保存退出再使用“systemctl daemon-reload”重新加载配置文件,“systemctl restart 对应服务名字”就可以实现active(runing)->active(exited);但是实际active(runing)->active(exited)问题也不止一种,后期需要多种验证方式合并进行[端口占用kill掉(待定)]

总结
--------通过对参数以及状态的理解可以推出:要想得到active(runing)->active(exited)的转变,只需要某些服务启动一下就可以了,然后马上将其kill掉,但是如果直接kill掉的话就是active(dead),所以要使用到配置参数中的RemainAfterExit=yes—systemd将该服务保持为活动状态,加上过后就会实现active(runing)->active(exited)的转变
--------所以配置参数修改过后保存退出“systemctl daemon-reload”重新加载配置参数,“service linxc-keepalived restart”重启服务,再使用“service linxc-keepalived status”查看对应服务状态

修改后的配置文件:在这里插入图片描述
修改后的服务状态:在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CentOS 7 是一种基于 Linux 操作系统的开源操作系统,它广泛应用于各种服务器场景。而 Docker 是一种基于容器技术的虚拟化工具,能够实现快速、方便的应用部署。而 Docker Compose 则是 Docker 的一个工具,能够利用 YAML 文件描述多个 Docker 容器的构成和运行方式,以方便开发和管理。 Keepalived 则是一个开源的高可用性管理软件,它能够在多个服务器之间平衡负载,并确保某些关键服务的可用性。在更高级的使用情况下,Keepalived 能够通过发送状态和切换脚本来管理 IP 地址等资源,以确保服务的高可用性。 使用 CentOS 7/Docker/Compose/Keepalived 的组合能够实现高效、高可用的服务部署和管理。其中,Docker 为应用部署提供了快速、灵活的方式,Compose 则为容器之间的协调和管理提供简单而有力的工具,而 Keepalived 则为集群和负载均衡提供了完善的解决方案。 具体来说,在使用这种组合时,我们首先需要搭建 CentOS 7 系统,并安装 Docker 和 Compose。然后,我们可以使用 Compose 编写一个 YAML 文件来描述需要运行的 Docker 容器,并通过 Docker Compose 工具来创建这些容器。此时,我们会得到一组运行在不同端口上的容器,每个容器都包含某个服务的运行环境和代码。 接下来,我们可以使用 Keepalived 来管理这些容器Keepalived 的负载均衡能力能够确保在多个 Docker 容器之间平衡负载。同时,Keepalived 的高可用性管理能力也能确保某些关键服务的可用性,如 IP 地址的管理和切换等。 因此,通过使用 CentOS 7/Docker/Compose/Keepalived 的组合,我们可以实现一个高效、高可用的分布式服务架构。这种架构能够快速、灵活地部署并管理多个服务,从而提高系统的可扩展性和可靠性,并为后续的服务拓展提供良好的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值