浙江电网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微服务的健康状态和实例数,
健康状态如下图:
实例数:
3.2 实例负载
可以通过监控对微服务实例的负载状态进行判断,如负载过高可酌情增加资源
3.3 日志分析
二、 运维规范
- 环境维护人员
测试环境维护人员:
生产环境维护人员: - 补丁管理规范
1.1 补丁要求
1.提供的补丁必要是class,不能提供jar包,项目组需要制定要求
2.补丁需要提供补丁说明,其中包含-补丁提供人员,联系方式,解决问题,验证人员,且补丁集团要验证通过。
1.2 补丁管理
补丁分为生产环境补丁和测试环境补丁:
测试环境补丁,由各业务领域补丁管理人进行管理,技术组负责将补丁更新到测试环境。
测试环境补丁验证通过后,各业务领域将需要上生产的补丁通过邮件发给补丁部署员和技术总监。测试环境补丁转化为生产环境补丁。
生产环境补丁,由补丁部署员收集整理,对补丁进行统一编号,并记录到补丁清单中。
补丁清单,包括序号、领域、补丁名称(名称中含解决问题)、更新日期、验证人、备注。
1.3 补丁应用
测试环境补丁维护人员:
生产环境补丁维护人员:
补丁接收/部署时间:由项目组规定补丁接收截止时间,超过这个时间的补丁当天不在接收,转天部署
补丁提供后必须先在测试环境进行部署,并验证通过后方可部署到生产环境。生产环境部署后也需要验证。
- 环境操作规范
3.1 数据库运维规范 - 参数调整
- 脚本执行
3.2 微服务操作规范 - 应用属性调整
POD的最大,最小内存需一致,最大最小cpu也要保持一致,JVM参数稍小于pod内存,健康检查等 - 应用实例调整
- 资源池调整
3.3 堡垒机使用规范 - 堡垒机使用应申请
- 堡垒机中开启的浏览器页面使用后应关闭
- 堡垒机使用后应及时退出
三、 系统异常运维方案
1.1 业务异常
现象:业务操作报错正在处理下游单据
解决方案:运维人员登录开发者中心—进入错误处理中心—点击重试
1.2 环境迁移 生产环境数据库备份恢复到测试环境
生产环境代码恢复到测试环境
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
state 为up代表状态正常,如果出现不是up状态可以重启calico
kubectl get pod -n kube-system | grep calico
重启该pod
kubectl delete pod -n kube-system calico-kube-controllers-5fbc74b6bd-bhnkv
- 系统性能异常处理(先处理异常后分析原因)
2.1 mark
2.2 评估分析(判断如何扩容)
根据系统的实际情况观察,选择扩容方式是增加pod的配置还是增加实例个数
3.3 执行扩容(先减后加)
观察系统实际运行状况,将业务负载较低的微服务资源适当缩减,将微服务负载较高的资源释放增加,保证系统稳定运行
3.4 执行扩容
根据判断评估的扩容方式,执行扩容操作
3.5 限流
2.6 观察系统运行情况