php实战kong做微服务架构七(集群)

序言

通过前文的讲解,相信大家对于kong的应用有了更多了解。本篇将进一步提高服务扩展,讲解kong集群部署。

kong集群

kong允许我们在多台计算机部署kong服务,以提高水平扩展。在整个过程中所有节点将共享数据库,但为了进一步提高性能,所有节点将在内存中存储配置信息,例如(服务、路由、插件等)。

看到这里大家有没有想到什么呢?

各个节点都保存了一份数据,如果A节点删除,那么其它节点同步问题怎么办?

节点同步

kong通过定时轮询节点查询数据库,同步更新数据。

同步机制-定时轮询

kong提供了db_update_frequency配置项让我们来配置节点之间同步时间,单位秒(系统默认5s)。

通过配置db_update_frequency,在到达指定时间后,kong的所有运行中节点都会主动轮询数据库是否更新,从而同步自己内存中的信息。

同步机制-过期时间

如果你觉得上面的时间太久,担心其它节点在旧数据更新慢,那么可以设置db_cache_ttl,单位秒。

db_cache_ttl它将给内存中的缓存信息设置生存时间,当这个时间到期,缓存内容将被清除,同时将会从数据库中重新获取。

集群部署

多节点kong部署

如何开启kong服务,在第一篇文章有写到,大家可参考:php实战kong做微服务架构一(kong简介与安装)

小伙伴们只需在你的不同主机上安装kong开启即可。

kong各节点连接数据库

例如我这里连接某台数据服务器,各节点共享相同数据。

vi  /etc/kong/kong.conf 修改以下内容
		pg_host = 23.102.211.112 #数据库主机地址
		pg_port = 5432 		#数据库端口
		pg_user = kong 		#数据库登录用户名
		pg_password = kong 	#数据库登录密码
		pg_database = kong 	#数据库名

对kong节点设置负载均衡

通过你的nginx去代理它们吧~可以设置最少连接优先。

upstream kong {
   least_conn;
   server 23.124.111.122:8000;
   server 123.14.161.172:8000;
}

运行效果

添加A节点
curl -i -X POST --url http://23.124.111.122:8001/apis/ --data 'name=api1' --data 'uris=/api2.html' --data 'upstream_url=http://cul.com'

B节点查询
curl http://123.14.161.172:8001/apis/
{
    "total": 1,
    "data": [{
        "created_at": 1623747576534,
        "strip_uri": true,
        "id": "kdi394855-odi3-9876-sk87-309sije765e4",
        "uris": ["\/api1.html"],
        "name": "api1",
        "http_if_terminated": false,
        "https_only": false,
        "retries": 5,
        "preserve_host": false,
        "upstream_connect_timeout": 60000,
        "upstream_read_timeout": 60000,
        "upstream_send_timeout": 60000,
        "upstream_url": "http:\/\/cul.com"
    }]
}


添加B节点
curl -i -X POST --url http://123.14.161.172:8001/apis/ --data 'name=api2'  --data 'uris=/api2.html' --data 'upstream_url=http://cul.com'

A节点查询
curl http://23.124.111.122:8001/apis/
{
    "total": 2,
    "data": [{
        "created_at": 1623747576534,
        "strip_uri": true,
        "id": "kdi394855-odi3-9876-sk87-309sije765e4",
        "uris": ["\/api1.html"],
        "name": "api1",
        "http_if_terminated": false,
        "https_only": false,
        "retries": 5,
        "preserve_host": false,
        "upstream_connect_timeout": 60000,
        "upstream_read_timeout": 60000,
        "upstream_send_timeout": 60000,
        "upstream_url": "http:\/\/cul.com"
    }, {
        "created_at": 1623747576656,
        "strip_uri": true,
        "id": "9384iu37-i873-938y-u873-odk92847g646",
        "uris": ["\/api1.html"],
        "name": "example-api2",
        "http_if_terminated": false,
        "https_only": false,
        "retries": 5,
        "preserve_host": false,
        "upstream_connect_timeout": 60000,
        "upstream_read_timeout": 60000,
        "upstream_send_timeout": 60000,
        "upstream_url": "http:\/\/cul.com"
    }]
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小猴子喝牛奶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值