浙江电网ERP系统运维手册

简介: `浙江电网ERP系统`的运维手册强调日常巡检以确保系统稳定。每天早上九点进行检查,包括技术中台(如kube-apiserver, kube-controller-manager, kube-scheduler服务状态),node节点(docker, kubelet, kube-proxy服务状态),节点状态(确认k8s节点Ready),Deployment状态(检查DESIRED/CURRENT/UP-TO-DATE/AVAILABLE一致性),Pod状态,Service服务状态,中间件(如Nginx, Redis, licenseServer状态),

浙江电网ERP系统运维手册

一、 系统日常巡检
为确保系统稳定运行,提升客户满意度,每日早上九点由对系统进行巡检。

1.技术中台运维
1.1 服务状态检查
1.1.1 master节点服务状态检查

kube-apiserver.service服务状态(确保进程处于active (running)状态,且没有error日志):

systemctl status kube-apiserver.service

root@dciuap03 ~]$ systemctl status kube-apiserver
● kube-apiserver.service - kube-apiserver
Loaded: loaded (/usr/lib/systemd/system/kube-apiserver.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-02-10 20:12:46 CST; 1 weeks 1 days ago
Main PID: 15988 (kube-apiserver)
Memory: 432.6M
CGroup: /system.slice/kube-apiserver.service
└─15988 /app/kubernetes/server/bin/kube-apiserver --etcd-servers=http: //4.190.124.1:2379,http://4.190.124.2:2379,http://4.190.124.3:2379 --service-cluster-ip-range=10.10.0.0/16 --insecure-bind-...

检查kube-controller-manager服务状态(确保进程处于active (running)状态且没有error日志):

systemctl status kube-controller-manager.service

root@dciuap03 ~]$ systemctl status kube-controller-manager.service
● kube-controller-manager.service - kube-controller-manager
Loaded: loaded (/usr/lib/systemd/system/kube-controller-manager.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-02-10 20:12:46 CST; 1 weeks 1 days ago
Main PID: 15987 (kube-controller)
Memory: 22.9M
CGroup: /system.slice/kube-controller-manager.service
└─15987 /app/kubernetes/server/bin/kube-controller-manager --master=http://127.0.0.1:8080 --service-account-private-key-file=/app/kubernetes/ssl/ca-key.pem --root-ca-file=/app/kubernetes/ssl/ca...
root@dciuap03 ~]$

检查kube-scheduler服务状态(确保进程处于active (running)状态且没有error日志):

systemctl status kube-scheduler.service

root@dciuap03 ~]$ systemctl status kube-scheduler.service
● kube-scheduler.service - kube-scheduler
Loaded: loaded (/usr/lib/systemd/system/kube-scheduler.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2020-02-10 20:13:15 CST; 1 weeks 1 days ago
Main PID: 16074 (kube-scheduler)
Memory: 51.2M
CGroup: /system.slice/kube-scheduler.service
└─16074 /app/kubernetes/server/bin/kube-scheduler --master=http://127.0.0.1:8080 --leader-elect=true

1.1.2 node节点服务状态检查
检查docker服务状态(确保进程处于active (running)状态且没有error日志):

systemctl status docker.service

[root@k8snode01 ~]# systemctl status docker.service
[betadmin@k8snode01 ~]$ systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-01-23 11:58:11 CST; 3 weeks 6 days ago
Docs: https://docs.docker.com
Main PID: 17520 (dockerd)
Memory: 169.2M
CGroup: /system.slice/docker.service
├─ 3921 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/708e62bf9a66a32bbb9603739eb0b216a9d6df9bd8e4df23e0400cd18aec3a1a -address ...
├─ 6218 containerd-shim -namespace moby -workdir /var/lib/docker/containerd/daemon/io.containerd.runtime.v1.linux/moby/e4ed9e3c7f7107a4f9ff38d42937e02c25f857d7c6035457a573afe744234e1a -address ...
‣ 17520 /usr/bin/dockerd --insecure-registry harbor.csljc.com --bip=19.0.96.1/24 --ip-masq=true --mtu=1450

检查kubelet服务状态(确保进程处于active (running)状态且没有error日志):

systemctl status kubelet.service

[betadmin@k8snode01 ~]$ systemctl status kubelet.service
● kubelet.service - kubelet
Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-01-23 11:58:11 CST; 3 weeks 6 days ago
Main PID: 17674 (kubelet)
Memory: 13.8M
CGroup: /system.slice/kubelet.service
‣ 17674 /app/kubernetes/server/bin/kubelet --kubeconfig=/app/kubernetes/etc/kubelet --address=0.0.0.0 --allow-privileged=false --pod-infra-container-image=harbor.csljc.com/google_containers/pau...
[betadmin@k8snode01 ~]$

检查kube-proxy服务状态(确保进程处于active (running)状态且没有error日志):

systemctl status kube-proxy.service

[betadmin@k8snode01 ~]$ systemctl status kube-proxy.service
● kube-proxy.service - kube-proxy
Loaded: loaded (/usr/lib/systemd/system/kube-proxy.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2020-01-23 11:58:11 CST; 3 weeks 6 days ago
Main PID: 17673 (kube-proxy)
Memory: 4.9M
CGroup: /system.slice/kube-proxy.service
‣ 17673 /app/kubernetes/server/bin/kube-proxy --master=http://4.190.163.1:8080

1.2 节点状态检查
检查k8s节点的运行情况(确保节点状态为Ready状态):

kubectl get nodes

root@dciuap03 ~]$ kubectl get node
NAME STATUS ROLES AGE VERSION
k8snode01 Ready 27d v1.9.3
k8snode02 Ready 27d v1.9.3
k8snode03 Ready 27d v1.9.3
k8snode04 Ready 27d v1.9.3
k8snode05 Ready 27d v1.9.3
k8snode06 Ready 27d v1.9.3
k8snode07 Ready 27d v1.9.3
k8snode08 Ready 27d v1.9.3
k8snode09 Ready 27d v1.9.3
k8snode10 Ready 27d v1.9.3
k8snode11 Ready 27d v1.9.3
k8snode12 Ready 27d v1.9.3
k8snode13 Ready 27d v1.9.3
k8snode14 Ready 27d v1.9.3

1.3 Deployment状态检查
检查Deployment服务DESIRED、CURRENT 、UP-TO-DATE 、AVAILABLE的值是否一致:

kubectl get deployment -n product

root@dciuap03 ~]$ kubectl get deployment -n product
NAME DESIRED CURRENT UP-TO-DATE AVAILABLE AGE
bis-calculatecontrol-1-3-0 2 2 2 2 5d
bis-elpticketdispatch-1-3-0 2 2 2 2 5d
bis-reconbusiness-1-3-0 2 2 2 2 5d
bis-reconcontrol-1-3-0 2 2 2 2 5d
bis-reconhandle-1-3-0 2 2 2 2 5d
bis-report-data-unit-1-3-0 4 4 4 4 5d
bis-reporthandle-1-3-0 4 4 4 4 5d
bis-reportmake-1-3-0 4 4 4 4 5d
bis-rtqgw-1-3-0 3 3 3 3 5d
bis-tickettodip-1-3-0 2 2 2 2 5d
bis-wcsreportmake-1-3-0 4 4 4 4 5d
bli-translate-1-3-0 2 2 2 2 5d
ihs-conclude-1-3-0 2 2 2 2 5d
ihs-subscribeinfo-1-3-0 2 2 2 2 5d
oltp-awardcontrol-1-3-0 2 2 2 2 4d
oltp-awardpublish-1-3-0 2 2 2 2 4d
oltp-awardwcslistener-1-3-0 2 2 2 2 4d
oltp-cbauthorityupdate-1-3-0 2 2 2 2 4d
oltp-ecgateway-1-3-0 3 3 3 3 4d
oltp-gateway-1-3-0 8 8 8 8 4d
oltp-matgateway-1-3-0 3 3 3 3 4d
oltp-querycollation-1-3-0 2 2 2 2 4d
oltp-reconbusiness-1-3-0 2 2 2 2 4d
oltp-wcsmsgack-1-3-0 2 2 2 2 4d
oltp-wcssubscriber-1-3-0 2 2 2 2 4d
wcs-baseinfo-unit-1-3-0 2 2 2 2 5d
wcs-basicinfocontrol-1-3-0 4 4 4 4 5d
wcs-betting-unit-1-3-0 2 2 2 2 5d
wcs-bettingobjectgw-1-3-0 2 2 2 2 5d
wcs-broadcastcontrol-1-3-0 2 2 2 2 5d
wcs-concludecontrol-1-3-0 4 4 4 4 5d
wcs-gamegw-1-3-0 2 2 2 2 5d
wcs-hermescontrol-1-3-0 2 2 2 2 5d
wcs-ocstool-1-3-0 2 2 2 2 5d
wcs-poolcontrol-1-3-0 4 4 4 4 5d
wcs-poolgw-1-3-0 2 2 2 2 5d
wcs-pools-unit-1-3-0 2 2 2 2 5d
wcs-poolstopsellcontrol-1-3-0 4 4 4 4 5d
wcs-receivecontrol-1-3-0 2 2 2 2 5d
wcs-reportgw-1-3-0 3 3 3 3 5d
wcs-webui-1-3-0 1 1 1 1 5d

1.4 Pod状态检查

kubectl get po –n product

root@dciuap03 ~]$ kubectl get po -n product
NAME READY STATUS RESTARTS AGE
bis-calculatecontrol-1-3-0-55c57bf564-ml7hw 1/1 Running 0 4d
bis-calculatecontrol-1-3-0-55c57bf564-n2fqt 1/1 Running 0 4d
bis-elpticketdispatch-1-3-0-694d454bb8-j44dq 1/1 Running 0 4d
bis-elpticketdispatch-1-3-0-694d454bb8-qz528 1/1 Running 0 4d
bis-report-data-unit-1-3-0-67cb76774c-6zkl2 3/3 Running 0 4d
bis-report-data-unit-1-3-0-67cb76774c-bzrc9 3/3 Running 0 4dbis-reconcontrol-1-3-0-77cff76475-ktl65 1/1 Running 0 4d

检查Reday列,确认”/”前后数字是否一致
检查STATUS列,确认状态是否为Running
检查RESTARTS列,确认计数是否增加

1.5 Service服务状态检查

kubectl get svc

root@dciuap03 ~]$ kubectl get svc -n product
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
bis-calculatecontrol-1-3-0 ClusterIP 10.10.40.144 30503/TCP,29503/TCP 5d
bis-reconbusiness-1-3-0 ClusterIP 10.10.9.61 30509/TCP,29509/TCP 5d
bis-reconcontrol-1-3-0 ClusterIP 10.10.9.241 30510/TCP,29510/TCP 5d
bis-reconhandle-1-3-0 ClusterIP 10.10.104.94 30511/TCP,29511/TCP 5d
bis-report-data-unit-1-3-0 ClusterIP 10.10.81.190 29513/TCP,30515/TCP,29515/TCP,30502/TCP,29502/TCP 5d
bis-reportmake-1-3-0 ClusterIP 10.10.82.216 30501/TCP,29501/TCP 5d
bis-rtqgw-1-3-0 ClusterIP 10.10.93.105 30514/TCP,29514/TCP 5d

1.6 中间件状态检查

1.6.1 Nginx状态检查
通过安装器进行状态检查
1.6.2 redis状态检查
通过安装器进行状态检查
1.6.3 licenseServer状态检查
通过安装器进行状态检查

1.7 系统日志检查
K8s,etcd,dns日志均存在于/var/log/messages,因此,需要检查/var/log/messages有无相关报错信息

tail –n 1000 /var/log/messages|more

[root@dciuap2 ~]# tail –n 1000 /var/log/messages|more

1.7 Nginx日志检查
登录nginx所在节点

tail –n 1000 /data/iuap/logs/ngiinx/developer-center_error.log |more

[root@dciuap2 ~]# tail –n 1000 /data/iuap/logs/ngiinx/developer-center_error.log |more

1.8 监控状态检查
通过查看技术中台监控仪表盘,来检查资源池状态,应用状态

1.8.1 查看资源池状态信息
“技术中台”>>>“容器服务”>>>“资源池”>>>“工具箱”>>>“查看监控”>>>“资源池监控”

1.8.2 查看应用状态信息
”>>>“容器服务”>>>“资源池”>>>“工具箱”>>>“查看监控”>>>“应用监控”

2.NCC中间件检查

2.1 MQ
通过安装器进行状态检查

2.1.1 MQ日志检查
登录MQ所在节点

tail -n 1000 /data/iuap/middleware/rabbitmq-30002/var/log/rabbitmq/rabbit1@mqnode1.log

[root@dciuap2 ~]# tail -n 1000 /data/iuap/middleware/rabbitmq-30002/var/log/rabbitmq/rabbit1@mqnode1.log |more

2.2 Redis
通过安装器进行状态检查

2.2.1 Redis日志检查
登录Redis所在节点

tail –n 1000 /data/iuap/middleware/redis-30001/log/redis.log

[root@dciuap2 ~]# tail -n 1000 /data/iuap/middleware/redis-30001/log/redis.log |more

2.3 Nginx
通过安装器进行状态检查

2.3.1 Nginx日志检查
登录nginx所在节点

tail –n 1000 /data/iuap/logs/nginx/developer-center_error.log |more

[root@dciuap2 ~]# tail –n 1000 /data/iuap/logs/nginx/tomcat_access.2020-12-16.log |more

2.3.2 磁盘空间检查
登录应用时部分终端出现白屏状态,无法进行登录,此刻应立即检查装有应用服务器的磁盘空间,路径:cd /data/iuap/logs/nginx 删除本天外的所有tomcat_access日志

说明:系统每天会自己创建一个tomcat_access.2021-04-27.log来记录nginx请求日志,需每天进行清理
3.NCC微服务检查

3.1 微服务实例数及实例状态
通过开发者中心可以查看NCC微服务的健康状态和实例数,
健康状态如下图:

image.png

实例数:
image.png

3.2 实例负载
image.png

可以通过监控对微服务实例的负载状态进行判断,如负载过高可酌情增加资源
3.3 日志分析
二、 运维规范

  1. 环境维护人员
    测试环境维护人员:
    生产环境维护人员:
  2. 补丁管理规范
    1.1 补丁要求
    1.提供的补丁必要是class,不能提供jar包,项目组需要制定要求
    2.补丁需要提供补丁说明,其中包含-补丁提供人员,联系方式,解决问题,验证人员,且补丁集团要验证通过。
    1.2 补丁管理
    补丁分为生产环境补丁和测试环境补丁:
    测试环境补丁,由各业务领域补丁管理人进行管理,技术组负责将补丁更新到测试环境。
    测试环境补丁验证通过后,各业务领域将需要上生产的补丁通过邮件发给补丁部署员和技术总监。测试环境补丁转化为生产环境补丁。
    生产环境补丁,由补丁部署员收集整理,对补丁进行统一编号,并记录到补丁清单中。

补丁清单,包括序号、领域、补丁名称(名称中含解决问题)、更新日期、验证人、备注。
1.3 补丁应用

测试环境补丁维护人员:
生产环境补丁维护人员:
补丁接收/部署时间:由项目组规定补丁接收截止时间,超过这个时间的补丁当天不在接收,转天部署
补丁提供后必须先在测试环境进行部署,并验证通过后方可部署到生产环境。生产环境部署后也需要验证。

  1. 环境操作规范
    3.1 数据库运维规范
  2. 参数调整
  3. 脚本执行
    3.2 微服务操作规范
  4. 应用属性调整
    POD的最大,最小内存需一致,最大最小cpu也要保持一致,JVM参数稍小于pod内存,健康检查等
  5. 应用实例调整
  6. 资源池调整
    3.3 堡垒机使用规范
  7. 堡垒机使用应申请
  8. 堡垒机中开启的浏览器页面使用后应关闭
  9. 堡垒机使用后应及时退出
    三、 系统异常运维方案
    1.1 业务异常
    现象:业务操作报错正在处理下游单据
    解决方案:运维人员登录开发者中心—进入错误处理中心—点击重试
    1.2 环境迁移
  10. 生产环境数据库备份恢复到测试环境

  11. 生产环境代码恢复到测试环境
    1.3 微服务实例异常预警
    微服务实例异常,完善nmc功能提供微服务异常预警

1.4 技术中台异常不能访问
问题排查方案:
(1)登录技术中台master节点查看node状态是否是ready
kubectl get node
(2)看pod的状态
kubectl get pod -A -o wide –(全部)
kubectl get pod -n kube-system (系统)
kuectl get namespace (查看命名空间)
(3)发现异常状态的pod将其删除
kubectl delete pod -n developer-center pod_name
(4)查看deployment
kubectl get deployment -n developer-center
(5)增加deployment(app-base)副本数
kubectl scale deployment app-base --replicas=2 -n developer-center
(6)查看pod的启动信息
kubectl describe pod -n developer-center app-base-669d6666
(7)通过安装器查看技术中台中间件
检查Nginx的转发规则
检查redis的健康状态
检查LicenseServer的健康状态
(8)查看技术中台mysql数据库的健康状态
通过安装器确定mysql的信息,检查健康状态
(9)查看calico状态

calicoctl node status
image.png

state 为up代表状态正常,如果出现不是up状态可以重启calico

kubectl get pod -n kube-system | grep calico
重启该pod
kubectl delete pod -n kube-system calico-kube-controllers-5fbc74b6bd-bhnkv

  1. 系统性能异常处理(先处理异常后分析原因)
    2.1 mark
    2.2 评估分析(判断如何扩容)
    根据系统的实际情况观察,选择扩容方式是增加pod的配置还是增加实例个数
    3.3 执行扩容(先减后加)
    观察系统实际运行状况,将业务负载较低的微服务资源适当缩减,将微服务负载较高的资源释放增加,保证系统稳定运行
    3.4 执行扩容
    根据判断评估的扩容方式,执行扩容操作

3.5 限流

2.6 观察系统运行情况

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
7月前
|
供应链 JavaScript 数据挖掘
一套SaaS ERP管理系统源码,生产管理系统源代码
小微企业SaaS ERP系统,基于SpringBoot+Vue+UniAPP开发,集成进销存、采购销售、MRP生产、财务、CRM、OA等全流程管理功能,支持自定义表单与工作流,助力企业数字化转型。
429 1
|
8月前
|
消息中间件 缓存 JavaScript
如何开发ERP(离散制造-MTO)系统中的生产管理板块(附架构图+流程图+代码参考)
本文详解离散制造MTO模式下的ERP生产管理模块,涵盖核心问题、系统架构、关键流程、开发技巧及数据库设计,助力企业打通计划与执行“最后一公里”,提升交付率、降低库存与浪费。
|
8月前
|
数据采集 运维 数据可视化
AR 运维系统与 MES、EMA、IoT 系统的融合架构与实践
AR运维系统融合IoT、EMA、MES数据,构建“感知-分析-决策-执行”闭环。通过AR终端实现设备数据可视化,实时呈现温度、工单等信息,提升运维效率与生产可靠性。(238字)
|
8月前
|
消息中间件 JavaScript 前端开发
如何开发ERP(离散制造-MTO)系统中的技术管理板块(附架构图+流程图+代码参考)
本文详解ERP(离散制造-MTO)系统中的技术管理板块,涵盖产品定义、BOM、工序、工艺文件及变更控制的结构化与系统化管理。内容包括技术管理的核心目标、总体架构、关键组件、业务流程、开发技巧与最佳实践,并提供完整的参考代码,助力企业将技术数据转化为可执行的生产指令,提升制造效率与质量。
|
8月前
|
消息中间件 JavaScript 关系型数据库
如何开发一套ERP(离散制造-MTO)系统(附架构图+流程图+代码参考)
本文介绍了面向离散制造-MTO(按订单生产)模式的ERP系统设计与实现方法。内容涵盖ERP系统定义、总体架构设计、主要功能模块解析、关键业务流程(订单到交付、BOM展开、MRP逻辑、排产等)、开发技巧(DDD、微服务、事件驱动)、参考代码示例、部署上线注意事项及实施效果评估。旨在帮助企业与开发团队构建高效、灵活、可扩展的ERP系统,提升订单交付能力与客户满意度。
|
8月前
|
传感器 人工智能 运维
AR智慧运维系统介绍
阿法龙XR云平台是一款面向工业领域的增强现实(AR)智能化平台,助力企业实现数字化转型。平台集成智能巡检工作流、远程协助、AI视频验收、人脸识别等功能模块,支持AR眼镜与移动终端,提供虚实融合的运维体验。具备高度定制化能力,适配多种工业场景,提升运维效率与智能化水平。
|
9月前
|
数据采集 运维 监控
运维靠经验拍脑袋?不如上车:构建“数据驱动”的智能决策系统
运维靠经验拍脑袋?不如上车:构建“数据驱动”的智能决策系统
267 0
|
10月前
|
JavaScript
数字化转型过程中,制造型企业如何选择适合的ERP系统?
ERP系统是制造业数字化转型的核心工具,但选型需谨慎。本文从实战出发,总结制造企业如何选择真正适用的ERP系统,避免常见陷阱,助力企业实现高效管理与持续发展。
|
10月前
|
人工智能 运维 监控
聚焦“AI+运维”深度融合,龙蜥系统运维联盟 MeetUp 圆满结束
现场 40 多位开发者进行了深入的技术交流,探索 AI 与运维深度融合的未来路径。
|
8月前
|
供应链 JavaScript BI
如何2小时搭建一套(离散制造-MTO)ERP系统?
针对离散制造MTO模式痛点,本文分享如何用零代码工具两小时内搭建极简ERP系统,实现订单、生产、物料与库存实时联动,提升交付准时率与管理透明度,降低出错与成本。

热门文章

最新文章