精华内容
下载资源
问答
  • windows服务管理代码,可以启动暂停停止服务.zip
  • 暂停服务代码 暂停服务代码 暂停服务代码 暂停服务代码 暂停服务代码
  • k8s停止服务_Kubernetes 优雅停止Pod

    千次阅读 2020-11-22 18:12:30
    博客地址:i4t.com首先我们先简单的分析一下"优雅的停止Pod"优雅停止(Graceful shutdown)这个说法来自于操作系统,比如我们windows关机系统首先会退出软件然后一步步到达关机,而相对的就是硬终止(Hard shutdown),...

    博客地址:i4t.com


    首先我们先简单的分析一下"优雅的停止Pod"

    优雅停止(Graceful shutdown)这个说法来自于操作系统,比如我们windows关机系统首先会退出软件然后一步步到达关机,而相对的就是硬终止(Hard shutdown),简单的理解就是直接拔电源

    到了微服务中,网关会把流量分配给每个Pod节点上,比如我们上线更新Pod的时候

    • 如果我们直接将Pod杀死,那这部分流量就无法得到正确处理,会影响部分用户,通常来说网关或者注册中心会将我们的服务保持一个心跳,过了心跳超时之后会自动摘除我们的服务,但是有一个问题就是超时时间可能是30秒也可能是60秒,虽然不会影响我们的系统,但是会产生用户轻微抖动。
    • 如果我们在停止前执行一条命令,通知网关或者注册中心这台主机进行下线,那么注册中心就会标记这台主机已经下线,不进行流量转发,用户就不会有任何影响,这就是优雅停止,将滚动更新影响最小化

    Pod Hook

    Pod Hook是由kubelet发起的,当容器中的进程启动前或者容器中的进程终止之前运行,这是包含在容器的生命周期之中。我们可以同时为Pod中的所有容器都配置hook

    在k8s中,理想的状态是pod优雅释放,并产生新的Pod。但是并不是每一个Pod都会这么顺利

    • Pod卡死,处理不了优雅退出的命令或者操作
    • 优雅退出的逻辑有BUG,陷入死循环
    • 代码问题,导致执行的命令没有效果

    对于以上问题,k8s的Pod终止流程中还有一个"最多可以容忍的时间",即grace period (在pod的.spec.terminationGracePeriodSeconds字段定义),这个值默认是30秒,当我们执行kubectl delete的时候也可以通过--grace-period参数显示指定一个优雅退出时间来覆盖Pod中的配置,如果我们配置的grace period超过时间之后,k8s就只能选择强制kill Pod


    Kubernetes为我们提供了两种钩子函数:

    • PostStart :这个钩子在容器创建后立即执行。但是,并不能保证钩子将在容器ENTRYPOINT之前运行,因为没有参数传递给处理程序。 主要用于资源部署、环境准备等。不过需要注意的是如果钩子花费时间过长以及于不能运行或者挂起,容器将不能达到Running状态。
    • PreStop :钩子在容器终止前立即被调用。它是阻塞的,意味着它是同步的,所以它必须在删除容器的调用出发之前完成。主要用于优雅关闭应用程序、通知其他系统等。如果钩子在执行期间挂起,Pod阶段将停留在Running状态并且不会达到failed状态

    如果PostStart或者PreStop钩子失败,它会杀死容器。所以我们应该让钩子函数尽可能的轻量。当然有些情况下,长时间运行命令是合理的,比如在停止容器之前预先保留状态。

    这里稍微简单说一下Pod终止的过程

    • 用户发送命令删除Pod,Pod进入Terminating状态
    • service摘除Pod节点
    • 当kubelet看到Pod已被标记终止,开始执行preStop钩子,假如preStop hook的运行时间超过了grace period,kubelet会发送SIGTERM并等2秒
      官方文档介绍

    在Pod Hook钩子函数中有Exec和HTTP两种方式

    • Exec - 用于执行一段特定的命令,不过要注意的是该命令小号的资源会被计入容器
    • HTTP - 对容器上的特定端点执行HTTP请求

    基于PostStart命令演示

    首先我们先进行演示PostStart的两种方式

    第一种Exec
    我们echo一段话追加到 /tmp/message,在Pod启动前进行操作

    cat >>exec_test.yaml< /tmp/message'EOF

    使用kubectl apply -f exec_test.yaml进行创建

    可以通过下面查看结果,pod的目录已经有我们在yaml文件写的测试文件

    [root@abcdocker yaml]# kubectl get podNAME READY STATUS RESTARTS AGEabcdocker 1/1 Running 0 37s[root@abcdocker yaml]# kubectl exec -it -n default abcdocker /bin/bashroot@abcdocker:/# cat /tmp/messagehttps://i4t.comroot@abcdocker:/#root@abcdocker:/# exit

    创建容器后,Kubernetes立即发送postStart事件。但是,不能保证在调用Container的入口点之前先调用postStart处理程序。postStart处理程序相对于Container的代码异步运行,但是Kubernetes对容器的管理会阻塞,直到postStart处理程序完成。在postStart处理程序完成之前,容器的状态不会设置为RUNNING。

    第二种HTTP方式
    使用HttpGet配置Host、Path、Port

    apiVersion: v1kind: Podmetadata: name: abcdocker labels: name: abcdockerspec: containers: - name: abcdocker image: nginx ports: - containerPort: 80 lifecycle: postStart: httpGet: host: i4t.com path: index.html port: 80

    这里就不进行演示了,因为日志会看不到这个请求


    基于PreStop环境演示

    起因:
    在生产环境中使用spring框架,由于服务更新过程中,服务容器被直接充值,部分请求仍被分发到终止的容器(没有配置钩子,熟悉默认环境),导致服务出现500错误,这部分错误请求数据占用比较少,因为Pod滚动更新都是一对一。因为部分用户会产生服务器错误的情况,考虑使用优雅的终止方式,将错误请求降到最低,直至滚动更新不影响用户

    Eureka是一个基于REST的服务,作为Spring Cloud服务注册中心,用于定位服务来进行中间层服务器的负载均衡和故障转移。各服务启动时,会向Eureka Server注册自己的信息(IP、端口、服务信息等),Eureka Server会存储这些信息,微服务启动后,会周期性(默认30秒)的向Eureka Server发送心跳以续约自己的租期,并且可以从eureka中获取其他微服务的地址信息,执行相关逻辑

    67bfcfcae1ef22b42cd3549785b8dca1.png

    image_1dpi0idnqk981okaacv16l4172p9.png-61kB

    由于Eureka默认的心跳检测为30秒,当K8S下线Pod时Eureka会有30秒的异常问题,所以我们需要在Pod 停止前发送一条请求,通知Eureka进行下线操作,这样进行优雅的停止对用户的影响做到最小

    具体yaml如下

    apiVersion: v1kind: Podmetadata: name: abcdocker labels: name: abcdockerspec: containers: - name: abcdocker image: nginx ports: - containerPort: 80 lifecycle: preStop: exec: command: - bash - -c - 'curl -X POST --data DOWN http://127.0.0.1:8080/service-registry/instance-status -H "Content-Type: application/vnd.spring-boot.actuator.v2+json;charset=UTF-8";sleep 30'####### 参数解释127.0.0.1:8080 #代表eureka地址service-registry #代表注册中心DOWN #执行down请求sleep #等待30秒

    当我们删除Pod的时候就会执行上面的命令操作,并且等待30秒

    [root@yzsjhl82-135 yaml]# kubectl get podNAME READY STATUS RESTARTS AGEabcdocker 1/1 Running 0 2m16s[root@yzsjhl82-135 yaml]# kubectl delete pod abcdockerpod "abcdocker" deleted#此刻Pod不会马上删除,而是执行Exec中的命令,并等待30秒

    配置中添加了一个sleep时间,主要是作为服务停止的缓冲时间

    总结: Hook调用的日志没有暴露给Pod的Event,所以只能到通过describe命令来获取,如果是正常的操作是不会有event,如果有错误可以看到FailedPostStartHook和FailedPreStopHook这种event。并且如果Hook调用出现错误,则Pod状态不会是Running

    展开全文
  • 手动启动VM服务停止服务。方便易用。安全。可以随意结束进程
  • linux停止服务命令

    千次阅读 2021-02-20 14:57:17
    2.停止所有服务并且在下次系统启动时不再启动,如下所示: . 代码如下: chkconfig --levels 12345 NetworkManager off 如果想查看当前处于运行状态的服务,用如下语句过滤即可 . 代码如下: chkconfig --list |grep ...

    \1. 查看Linux启动的服务

    . 代码如下:

    chkconfig --list 查询出所有当前运行的服务 chkconfig --list atd 查询atd服务的当前状态

    2.停止所有服务并且在下次系统启动时不再启动,如下所示:

    . 代码如下:

    chkconfig --levels 12345 NetworkManager off

    如果想查看当前处于运行状态的服务,用如下语句过滤即可

    . 代码如下:

    chkconfig --list |grep on

    3.如果只是想当前的设置状态有效,在系统重启动后即不生效的话,可以用如下命令停止服务

    . 代码如下:

    service sshd stop

    以上就是良许教程网为各位朋友分享的Linux相关知识。

    展开全文
  • 开启:net start mongodb 停止:net stop mongodb

    开启:net start mongodb

    停止:net stop mongodb

    展开全文
  • linux 启动服务停止服务

    千次阅读 2019-06-04 14:48:00
    service nginx start 和 /etc/init.d/nginx start 这两种方式都可以启动nginx服务,/etc/init.d/ 目录下存放着系统中各种服务的start/stop脚本, 我们可以通过etc/initi.d/commandOPTION 命令来调用这些脚本, 每个服务...

    列子:

    service nginx start  和 /etc/init.d/nginx start 这两种方式都可以启动nginx服务, /etc/init.d/ 目录下存放着系统中各种服务的start/stop脚本, 我们可以通过etc/initi.d/command OPTION 命令来调用这些脚本, 每个服务基本有如下指令:stop,start,reload,restart,force-reload。

    service nginx start 的方式应该也是调用了etc/initi.d/ 目录下相应的的脚本

    展开全文
  • 批处理启动和停止服务

    千次阅读 2019-01-04 09:47:57
    使用批处理设置、启动和停止服务  当电脑安装了数据库服务(如,Oracle、SQLServer)或一些web服务(如IIS,tomcat)时,系统会添加很多服务(services)项。而这些服务往往是占用很大的系统资源的。如果在平时不用...
  • Springboot 优雅停止服务的几种方法

    千次阅读 2020-01-18 12:00:00
    来源:cnblogs.com/huangqingshi/p/11370291.html在使用Springboot的时候,都要涉及到服务停止和启动,当我们停止服务的时候,很多时候大家都是...
  • java中如何优雅的停止服务

    千次阅读 2021-02-27 10:56:40
    强制进程退出的副作用... 注:若需要平滑停止服务,我们一般可以通过ShutdownHook和Signal来实现。ShutdownHook一般比较难保证关闭任务的执行顺序,这个时候可以考虑使用Signal机制来完全托管我们关闭服务的执行顺序。
  • (2)服务和应用程序 –> 服务 –> Mysql (3)设置启动类型 设置手动 方式二 通过命令行方式 (1)window + R (2)启动 net start mysql (3)关闭 net stop mysql 方式三 运行窗口 ...
  • Tomcat 怎么停止服务的?

    千次阅读 2017-09-07 10:54:58
    这里有个疑问,既然都是通过调用 MAINCLASS 类进行操作的,那就是启动tomcat服务是一个进程、关闭tomcat服务应该是另一个进程。那么如果是多个进程,是怎么互相操作的呢?带着疑问我们分析下tomcat的源码。客户端...
  • 主要介绍了Android Service服务不被停止详解及实现的相关资料,有很多应用在设置运行中会被直接停止掉,这里就提供一个方法一直运行,需要的朋友可以参考下
  • QQ扩列怎么暂停服务了呢?下面小编就为大家带来QQ扩列功能的具体介绍,感兴趣的用户朋友们快来一起看看吧!此外欢迎大家来最火软件站下载QQ安卓版!QQ扩列怎么没了有不少用户朋友们找不到QQ扩列的入口了,大家打开QQ...
  • 一、为什么要启动SQL Server服务?1、如果你不开启服务,去连接数据会出现报错信息2、因为不连接到服务器,就对数据库操作不了二、启动SQL Server的三种方法第一种:后台启动服务*具体操作:点击计算机---->右键-...
  • 关于这几种文件和命令对mysql服务的启动和停止的使用,本文会分别进行介绍,还有一些关键的事项,比如生产环境对于MySQL服务的启动和停止是非常谨慎的一件事,不是每一种方式都适合生产使用的,需要搞清楚再使用,...
  • 我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL。遇到一点问题,下面通过本文给大家分享Windows下MySQL服务无法停止和删除的解决办法,需要的朋友可以参考下
  • 备注 需要先正确安装相关的zookeeper 安装地址详细见: ... 1.Zookeeper服务相关命令 在准备好相应的配置之后,可以直接通过zkServer.sh 这个脚本进行服务的相关操作 1. 启动ZK服务: sh bin/zkServer.sh start...
  • ElasticSearch停止服务方式

    千次阅读 2019-08-08 09:57:33
    1.前台运行,ctrl+c停止; 2.后台运行,jps查看端口 kill -9 端口 停止服务
  • 添加服务 添加服务的步骤为: (1) 将该服务的脚本文件拷入/etc/rc.d/init.d 文件夹下,例如: service camsd stop 停止 camsd 服务 service oracled start 启动 oracled 服务 service tomcat4 start 启动 tomcat4 ...
  • 相关历史文章(阅读本文之前,您可能需要先看下之前的系列????) 国内最全的SpringBoot系列之三 ...师傅:对于java的shutdown hook有所了解之后,我们还是重点来看看Spring Boot如何优化停止...
  • 1,使用root用户 2,查看linux系统下所有的服务,使用命令...4,停止一个服务,(系统重启后,该配置不生效)如停止ntpd服务,使用命令:service ntpd stop 5,启动一个服务,(系统重启后,该配置不生效)
  • 第3章 SQL Server 2005服务器管理对SQL Server 2005数据库服务器的...本章将主要介绍如何利用这些工具来完成对SQL Server 2005服务器的配置与管理,主要包括以下知识点:使用配置管理器配置SQL Server服务;使用外围...
  • 遇到一点问题,下面通过本文给大家分享Windows下MySQL服务无法停止和删除的解决办法,需要的朋友可以参考下我在 Windows 操作系统上,使用解压压缩包的方式安装 MySQL。这是安装的具体方法:点击这里。在执行如下命令...
  • linux下Weblogic后台启动和停止服务

    千次阅读 2019-09-30 14:18:00
    关于Weblogic后台启动和停止的相关教程Weblogic正常启动Weblogic停止服务 Weblogic正常启动 Weblogic 安装完成后,首先进入bin目录 目录地址 : /home/weblogic/Oracle/Middleware/user_projects/domains/base_domain/...
  • qq是大家常用的社交软件,里面的功能非常强大,比如扩列功能可以结交志同道合的朋友,最近小伙伴表示找不到扩列功能了,那么QQ扩列怎么暂停服务了?2021qq扩列维护到什么时候结束?下面小编为大家带来QQ扩列暂停服务...
  • SpringBoot停止服务的几种优雅姿态

    千次阅读 多人点赞 2020-05-14 14:15:07
    在使用Spring Boot的时候,都要涉及到服务停止和启动,当我们停止服务的时候,很多时候大家都是kill -9 直接把程序进程杀掉,这样程序不会执行优雅的关闭。而且一些没有执行完的程序就会直接退出。 我们很多时候...
  • 停止及启动k8s服务

    千次阅读 2021-09-10 18:00:10
    停止:kubectl drain 10.136.2.73 启动:kubectl undrain 10.136.2.73
  • 重启服务器后,发现数据...可以看到该命令是用于初始化、启动、停止或控制Kingbase服务器的工具,例如启动金仓数据库服务: sys_ctl start _D /opt/Kingbase/ES/V8/data(自己的数据库路径) 再查看进程就可以看到服务
  • Nginx停止服务和各种命令

    万次阅读 多人点赞 2018-10-31 19:20:42
    1.停止Nginx服务的四种方法 从容停止服务 这种方法较stop相比就比较温和一些了,需要进程完成当前工作后再停止。 nginx -s quit 立即停止服务 这种方法比较强硬,无论进程是否在工作,都直接停止进程。 nginx -s...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,023,032
精华内容 409,212
关键字:

停止服务