使用docker搭建kong集群

docker容器下搭建kong的集群很简单,官网介绍的也很简单,初学者也许往往不知道如何去处理,经过本人的呕心沥血的琢磨,终于搭建出来了。

主要思想:不同的kong连接同一个数据库(就这么一句话)

难点:如何在不同的主机上用kong连接同一数据库

要求:

1、两台主机 172.16.100.101 172.16.100.102

步骤:

1、在101上安装数据库(这里就用cassandra

docker run -d --name kong-database \
              -p 9042:9042 \
              cassandra:latest

2、迁移数据库(可以理解初始化数据库)

docker run  --rm \
    --link kong-database:kong-database \
    -e "KONG_DATABASE=cassandra" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    kong:latest kong migrations up

3、安装kong

docker run  -d  --name kong \
    --link kong-database:kong-database \
    -e "KONG_DATABASE=cassandra" \
    -e "KONG_PG_HOST=kong-database" \
    -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \
    -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
    -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
    -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
    -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
    -p 8000:8000 \
    -p 8443:8443 \
    -p 8001:8001 \
    -p 8444:8444 \
    kong:latest

注意:以上三部都是在101上完成的,且官网上都有https://getkong.org/install/docker/?_ga=2.68209937.1607475054.1519611673-2089953626.1519354770,接下来的第四步则是在另一主机102上完成,同一主机上可以用link,不同主机的容器关联就不能使用link了,如下配置即可

4、在102上安装另一个kong,实现多节点kong集群

docker run -d --name kong\
 -e "KONG_DATABASE=cassandra" \
 -e "KONG_PG_HOST=kong-database" \
 -e "KONG_CASSANDRA_CONTACT_POINTS=172.16.100.101" \
 -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \
 -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \
 -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \
 -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \
 -p 8000:8000 \
 -p 8443:8443 \
 -p 8001:8001 \
 -p 8444:8444 \
 kong:latest

5、这里使用的是cassandra数据库,所以需要修改一个配置 db_update_propagation 这个参数,默认是0,可以改成 5,进入容器

docker exec -it kong bash   //进入kong容器
cd etc/kong                 //进入该目录下
cp kong.conf.default kong.conf   //复制kong.conf.default文件为kong.conf文件
vi kong.conf                     //修改db_update_propagation这个配置项

exit //退出空容器
docker restart kong //重新启动kong
注:101和102上的kong都需要修改这个配置项,关于db_update_propagation配置项的介绍可以去官网看下


6、验证kong集群

可以在101上注册一个api如下

curl -i -X POST \
  --url http://172.16.100.101:8001/apis/ \
  --data 'name=example-api' \
  --data 'hosts=example.com' \
  --data 'upstream_url=http://mockbin.org'

然后查询这个api是否注册成功:

curl -i http://172.16.100.101:8001/apis/example-api

返回如下:


你也可以通过102机器主机进行查询:
curl -i http://172.16.100.102:8001/apis/example-api
如果也返回和上面一样的结果说明可以访问同一个api了,api信息是保存在数据库中的,也是就说可以访问同一个数据库了,这样你的kong集群也就搭建成功了,希望对你有所帮助

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值