一、某上云项目用网关来代理数据库的背景
财务的服务在k8s集群外部,想连接数据库,就只能通过直连数据库的主机ip+prot的形式才能建立连接,但是却达不到高可用的目的,然后通过网关代理数据库的方式以达到高可用的目的。
二、某上云项目网关代理数据库出现的问题
财务的数据库改为网关代理的方式和外部服务建立连接以来,出现断断续续的服务连接中断,然后外部服务无法再次进行和网关的连接,只有重启外部服务,才能再次的建立连接的情况
三、某上云项目网关代理数据库出现问题排查过程
先是对数据库和网关的服务运行状态进行了查看,这个是没有问题的,接着查看网关的controller日志,发现网关的endpoint一直在切换,如图:
根据日志提供的信息查看对应的网关endpoint,看看是否发生切换,如图:
图中圈出部分可以看出kube-controller-manager监视着endpoint的变化,图中的时间已经是不断变化的,正常情况下应该不会变化;此处网关是用非主机模式部署的,后面查看了下主机模式部署服务的endpoint,发现是正常的如下:
接着查看k8s的管理组件kube-controller-manager的日志,发现kube-controller-manager一直不断发生着重启,如图:
从上可以看出kube-controller-manager的leader一直不断切换,而kube-controller-manager的选举机制就是从etcd里去拿lease,谁先抢到谁就定义自己是leader,由于etcd反应慢,就可能出现leader更替,controller-manager会定期更新各种资源的状态,ep是其中一种,换个leader,又会全部更新一遍;本身我们维护的这个项目etcd的磁盘iops就是200左右,这个明显太差了,只能更换性能好的存储才能解决此问题。