浙江电网ERP系统运维手册

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
日志服务 SLS,月写入数据量 50GB 1个月
简介: `浙江电网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 观察系统运行情况

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5月前
|
运维 知识图谱 Python
专为运维工程师设计!阿里藏经阁出品的Python实战手册被我搞来了
Python 可能是极少数既简单又强大的编程语言中的一种。更重要的是,用它来编程是非常快乐的事。 今天给小伙伴们分享的是阿里“藏经阁”出品的专门给运维工程师设计的Python实战手册
|
运维 监控 Oracle
XX电网运维业务系统用户体验分析平台案例|华汇数据
能够从最终用户角度来评价业务系统运行质量和用户体验状况,促进IT运维质量不断提高。 通过对用户行为和体验障碍的监控,确保在用户报告之前知晓问题,并帮助运维人员快速确认、诊断和定位问题,加快问题解决速度,提升用户满意度。
454 0
XX电网运维业务系统用户体验分析平台案例|华汇数据
|
域名解析 缓存 移动开发
【云运维】Linux速查备忘手册
一本实用的Linux命令指南,帮助运维人员日常翻看
225 0
|
运维 Cloud Native Linux
免费下载!运维工程师的Ansible速查手册
Ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。
免费下载!运维工程师的Ansible速查手册
|
运维
Ansible window自动化运维手册*
http://docs.ansible.com/ansible/latest/list_of_windows_modules.html
722 0
|
运维
H3C运维审计系统-堡垒机 安装手册(笔记)
1、物理安装,略过 2、PC与直连admin接口,浏览器登陆192.168.0.1,admin/admin 3、系统配置->网络配置:web访问配置 4、console口方式配置(SecureCRT):端口COMx 波特率115200 数据位8 奇偶校...
3414 0
|
运维 安全 Windows
H3C运维审计系统 故障处理手册(笔记)
1、证书错误,重新下载安装证书 2、Windows会话时间太短:设置windows 组策略,关闭rdp 会话断开提示,开始菜单执行gpedit.msc ->"本地计算机策略"->"计算机配置"->"管理模板"->"windows 组件"->"远程桌面服务"->"远程桌面会话主机"->"会话时间限制" 修改“设置已中断的会话时间限制” 为启用,限制为1 分钟。
1115 0
|
存储 运维 分布式计算
Hadoop2.x运维实战之入门手册v1.0
Hadoop2.x运维实战之入门手册V1.0 0.Hadoop2.x生态圈介绍1.常用组件介绍(体系结构+进程)   1.1HDFS   1.
1660 0