浙江电网ERP系统运维手册

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: `浙江电网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 观察系统运行情况

相关实践学习
容器服务Serverless版ACK Serverless 快速入门:在线魔方应用部署和监控
通过本实验,您将了解到容器服务Serverless版ACK Serverless 的基本产品能力,即可以实现快速部署一个在线魔方应用,并借助阿里云容器服务成熟的产品生态,实现在线应用的企业级监控,提升应用稳定性。
云原生实践公开课
课程大纲 开篇:如何学习并实践云原生技术 基础篇: 5 步上手 Kubernetes 进阶篇:生产环境下的 K8s 实践 相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
运维 监控 Oracle
XX电网运维业务系统用户体验分析平台案例|华汇数据
能够从最终用户角度来评价业务系统运行质量和用户体验状况,促进IT运维质量不断提高。 通过对用户行为和体验障碍的监控,确保在用户报告之前知晓问题,并帮助运维人员快速确认、诊断和定位问题,加快问题解决速度,提升用户满意度。
397 0
XX电网运维业务系统用户体验分析平台案例|华汇数据
|
监控 关系型数据库 数据库
DBA_实践指南系列5_Oracle Erp R12日常运维和管理(案例)
2013-12-05 Created By BaoXinjian 一、摘要 Oracle Erp系统的运行管理和维护工作是保证Erp系统持续稳定满足公司雨雾发张的重要工作 1. ERP系统管理职责 2.
1013 0
|
8月前
|
缓存 运维 Linux
Linux(CentOS)运维脚本工具集合
Linux(CentOS)运维脚本工具集合
150 2
|
28天前
|
运维 Linux Shell
linux运维常用命令
linux运维常用命令
|
2月前
|
监控 网络协议 Linux
Linux 命令大全 & CentOS常用运维命令
Linux 命令大全 & CentOS常用运维命令
163 0
|
3月前
|
运维 Linux 数据安全/隐私保护
【Linux专题_01】宝塔面板安装及运维
【Linux专题_01】宝塔面板安装及运维
|
8月前
|
运维 关系型数据库 MySQL
Linux实用运维脚本分享
Linux实用运维脚本分享
|
3月前
|
Kubernetes Linux 开发工具
容器开发运维人员的 Linux 操作机配置优化建议
容器开发运维人员的 Linux 操作机配置优化建议
|
9月前
|
运维 负载均衡 关系型数据库
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
【运维知识进阶篇】用Ansible Roles重构LNMP架构(Linux+Nginx+Mariadb+PHP),实现4个项目一键部署
113 0
|
9月前
|
运维 关系型数据库 MySQL
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
【运维知识进阶篇】集群架构-Nginx实现基础web架构(Linux+Nginx+PHP+Mysql)(二)
203 0