我有一个主服务和多个从服务。主服务使用Google PubSub的订阅者持续轮询主题。从服务是REST API。一旦主服务接收到消息,它就将消息委托给从服务。目前我在Kubernetes中使用ClusterIP服务。我的一些请求运行时间很长,一些请求运行时间很短。
我碰巧注意到,有时候如果有一个短时间运行的请求,而一个长时间运行的请求正在处理中,它必须等到长时间运行的请求完成,即使许多pod可用,没有服务任何流量。我认为这是由于循环负载平衡。我一直在努力寻找一个解决方案,并研究了一些方法,如设置外部HTTP负载平衡器与入口和内部HTTP负载平衡器。但是我真的很困惑这两种方法之间的区别,以及哪一种方法适用于我的用例。你能建议哪一种方法可以解决我的用例吗?
1条答案
按热度按时间t98cgbkg1#
TL; DR
假设您希望20%的流量流向
x
服务,其余80%流向y
服务。为2个目标中的每一个创建2个入口文件,具有相同的主机名,唯一的区别是其中一个将携带以下入口注解:文档为什么和如何
加权路由有点超出了
ClusterIP
。就像你自己说的,是时候让一个新玩家进入游戏了-一个ingress controller。这是
load balancer
的一个k8s抽象--一个强大的服务器,位于应用程序前面,路由ClusterIP
之间的流量。install ingress controller on gcp cluster
一旦你有它安装和运行,使用它的canary特征到执行一个加权路由.这是完成使用下面的注解:
here是完整的指南。
外部与内部负载平衡
(this是谷歌云文档中的相关定义,但其他云提供商的概念相似)
GCP的负载平衡器可以分为外部负载平衡器和内部负载平衡器。外部负载平衡器将来自Internet的流量分配到您的GCP网络。内部负载平衡器将流量分配到您的GCP网络。
https://cloud.google.com/load-balancing/docs/load-balancing-overview