一般可以通过haproxy的功能特性来保证:
基于软件(HAproxy)负载均衡服务,容器服务弹性伸缩时无需人工对负载均衡设备进行配置干预,即可保证容器化应用的持续、正常访问;可通过图形界面自定义负载均衡会话保持策略。
由于平台内部通过软件定义网络为每个应用容器分配了IP地址,而此地址是内网地址,因此外部客户无法直接访问到该地址,所以平台使用路由器转发外部的流量到集群内部具体的应用容器上,如果应用有多个容器实例,路由器也可实现负载均衡的功能。路由器会动态的检测平台的元数据仓库,当有新的应用部署或者应用实例发生变化时,路由器会自动根据变化更新路由信息,从而实现动态负载均衡的能力。
一个容器云平台经常有数十台甚至上百台的主机作为集群的计算资源,承担容器计算的负载。因为各种规范和约束,一个企业中往往存在不止一套的容器云集群实例,为防止单点失效,一方面需要考虑管理平台的高可用,一方面要考虑容器平台自身的高可用
1.主控节点的高可用:集群中一般分为master节点和node节点,master节点主要承担运行管理功能,此时如果节点出现单节点故障,不会影响正常容器运行,但是当运行容器出现问题时就会影响容器的正常调度,因此主节点在产品中一般采用多个节点的形式,通常是通过HAProxy作为负载,将多个主节点配置成集群,访问单点失效
2.计算节点的高可用:node节点主要用于容器运算,当一个节点因为各种原因出现故障时,需要管理节点发挥监控功能,将其容器迁移到其他节点从而保证整个应用的整体处理能力
3.组件高可用:在云平台中需要依赖docker registry,一般docker registry作为镜像集中存放地点也需要进行高可用,从而保证容器启动等过程与registry的通信和和同步;为了外部访问应用的方便,一般云平台采用域名访问访问,并且会有多个router固定运行在一些node节点上,这个router也需要有多个来保持高可用
4.应用服务高可用:在保证平台运行机制高可用的同时,应用自身也需要保持高可用,一般是通过多个容器,通过保持容器运行的最小个数大于1来实现业务的高可用,当发生故障时由K8S进行故障调度
总之,一个容器云平要实现企业级的高可用,在各个层面的设计和实现中需要实现没有单点的设计,从而避免由于单点失效而带来应用系统或者管理功能的功能不正常。