在1.x版本中,kong的集群其实是通过运行多个实例,访问同一个数据库来实现的。具体表现为
- 定时轮询数据库,获取最新的 Services,Routes,Consumers,Plugins等信息,并缓存它们,直到下一次请求数据库时再更新数据
- 如果某个节点通过admin api对数据库中保存的代理配置进行更改,这个节点本身会立即生效,但其他节点需要等到下一次轮询时才会获取最新的数据
到了2.0版本,kong提供了 混合模式 来部署kong集群
在这种模式下,kong的节点被分为两种角色,分别是控制节点CP
和数据节点DP
控制节点 CP
用于提供admin api,负责直接连接数据库并管理各种代理配置。它监听两个端口
- admin_listen (默认8001): 原来的admin api
- cluster_listen (默认8005): 用于与数据节点DP连接,提供最新的配置
数据节点 DP
提供代理的服务,但是代理配置不再从数据库直接获取,而是通过连接 CP 进行获取
监听端口
- proxy_listen (默认8000) :提供代理服务
混合模式的优点
相较于1.x版本的集群,现在的混合模式有以下优点
- 减少数据库访问量:现在只有CP节点直接连接数据库
- 提