Kong提供了两种负载均衡方案:
- 基于DNS的负载均衡
当使用基于DNS的负载均衡时,上游服务的注册是在Kong之外完成,而Kong只接收来自DNS服务器的负载均衡域名解析。使用包含主机名(而不是IP地址)URL定义的每个API将自动使用基于DNS的负载均衡。
- Ring-Balancer环形均衡器
使用环形均衡器时,上游服务的添加和删除将由Kong处理,不需要进行DNS域名解析(当然如果target配置为域名也需要解析域名,但不需要DNS实现负载均衡)。Kong将扮演服务注册中心的角色。使用upstream和target配置服务。
- 加权循环算法:默认情况下环形均衡器将使用加权循环的方案。
- 散列算法:以none、consumer、IP或者header为输入的散列算法。none就是加权循环算法。
负载均衡应用
- 蓝绿部署Blue-Green Deployments

可以通过通过定义蓝upstream和绿upstream。然后通过更新Kong Service,切换host对应的upstrean来达到蓝绿的快速切换。
- 金丝雀发布Canary Releases

直接使用环形均衡器,通过调整target的权重,允许一个平滑和可控的金丝雀环境。
下面验证一下Ring-Balancer环形均衡器。先创建两个echo服务,为了验证负载均衡,两个echo服务的名称定为echo-v1和echo-v2,其port分别为8080和8081。
vi echo-v1-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: echo-v1
name: echo-v1
spec:
ports:
- port: 8080
name: http
protocol: TCP
targetPort: 8080
selector:
app: echo-v1
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: echo-v1
name: echo-v1
spec:
replicas: 1
selector:
matchLabels:
app: echo-v1
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app: echo-v1
spec:
containers:
- image: e2eteam/echoserver:2.2
name: echo-v1
ports:
- containerPort: 8080
env:
- name: NODE_NAME
valueFrom:
fieldRef:
fieldPath: spec.nodeName
- name: POD_NAME
valueFrom:
fieldRef:
fieldPath: metadata.name
- name: POD_NAMESPACE
valueFrom:
fieldRef:
fieldPath: metadata.namespace
- name: POD_IP
valueFrom:
fieldRef:
fieldPath: status.podIP
resources: {}
vi echo-v2-service.yaml
apiVersion: v1
kind: Service
metadata:
labels:
app: echo-v2
name: echo-v2
spec:
ports:
- port: 8081
name: http
protocol: TCP
targetPort: 8080
selector:
app: echo-v2
---
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: echo-v2
name: echo-v2
spec:
re

最低0.47元/天 解锁文章
4507

被折叠的 条评论
为什么被折叠?



