kong搭建

安装单机kong

su - postgres

psql

CREATE USER kong; CREATE DATABASE kong OWNER kong;

alter user kong with encrypted password '123456';

grant all privileges on database kong to kong;

\q

 

安装kong

yum安装:

sudo yum install epel-release 

sudo yum install kong-1.0.3.*.noarch.rpm --nogpgcheck

rpm离线安装:

rpm包下载地址: https://kong.bintray.com/kong-rpm/centos/7/

rpm -ivh kong.****.rpm

安装完成后修改配置文件:

配置文件在 /etc/kong/kong.default.conf 

cp kong.default.conf kong.conf

配置完成后初始化kong的数据库:

kong migrations up

kong start 启动

kong stop  

 

 

kong-dashboard3.6 只能支持到kong 的1.0.3

如果登录kong-dashboard页面后不能操作,左侧的导航栏也少,说明,kong-dashboard不支持你安装kong的版本。

1、git启用kong-dashboard

kong-dashboard start --kong-url http://192.168.8.60:8001 --basic-auth admin=admin

2、docker启动:

docker pull pgbi/kong-dashboard 

docker run –rm -p 8080:8080 pgbi/kong-dashboard start –kong-url http://192.168.10.150:8001 –basic-auth admin=admin

 

推荐使用konga  因为konga可以查看target的健康状态,kong-dashboard不行。

安装konga:

转自:https://blog.csdn.net/a12345678n/article/details/88188753

前提需要安装nodejs、npm、git

git clone https://github.com/pantsel/konga.git

npm install konga

将 config下的local_example.js改名为local.js

修改local.js中数据库连接方式:postgres

 

 

修改config下的connection.js文件中的数据库连接信息

 

此时需要在postgres中创建konga数据库。将ssl禁用。

 

npm start 启动konga

如果出现空白页:停止konga,运行  npm run bower-deps

 

 

kong自身的负载均衡:

没有主从,设置多个node节点,链接一个数据库,外部使用Nginx做kong 的负载均衡

 

所有的配置信息都在数据库中,当运行中时读取的所有配置信息都在缓存中,需要配置一个db_update_frequency时间(多少秒后,拉取数据库配置信息到缓存中,单位s),如果链接的数据库是集群,数据库集群间数据同步需要时间,未确保kong节点每次在数据库拉取数据时的数据都是最新的,需要配置一个拉取等待时间db_update_propagation,每次拉取数据库数据时都等待db_update_propagation秒,之后在拉取。所以kong集群node的实际缓存数据更新时间间隔为(db_update_frequency+db_update_propagation)

 

kong各个组件的关系:

Route:路由配置,用于匹配路由,分发请求到Service,每个Route指定到一个Service,每个Service可以有多个Route

Service:上游服务,可以时一个具体的API(指向ip),也可以时API的负载均衡(指向upstream)

Upstream:专门用来做负载均衡,Upstream的name 可以代替Service中的Host,Upstream是多个Target的集合

Target:单个API,负载均衡的最小单位

Consumer:可以代表一个服务,可以代表一个用户,可以代表一个消费者

Plugin:插件,可以和Service绑定,可以和Route绑定,可以和Consumer绑定,也可以绑定全局

 

Route >> Service >> Upstream >> Target

插件使用详解https://blog.csdn.net/mx472756841/article/details/80527462

 

使用kong做负载均衡:

1、

配置一个Upstream:

默认被动安全检查和主动安全检查都是关闭的

需要设置 healthchecks.passive.*设置被动安全检查

需要设置 healthchecks.active.*设置主动安全检查

healthchecks.active.healthy.interval = 0(健康节点安全检查间隔时间)   、healthchecks.active.unhealthy.interval = 0(不健康节点安全检查间隔时间)代表关闭主动安全检查

 

 

2、

为Upstream配置多个Target

curl -i -X POST \

    --url http://localhost:8001/upstreams/9ee28b3d-4c83-4046-953c-ac571f1b2acf/targets \

    --data 'target=147.94.209.20:7110'

 

curl -i -X POST \

    --url http://localhost:8001/upstreams/9ee28b3d-4c83-4046-953c-ac571f1b2acf/targets \

    --data 'target=147.94.209.20:7111'

 

3、

添加Service

注意 connect_timeout、 write_timeout、 read_timeout一定不能设置为0否则请求到不了upstream

curl -i -X POST \

    --url http://localhost:8001/services/ \

    --data 'name= user-service' \

    --data 'protocol=http' \

    --data 'host= wechat.user.service'

4、

为Service添加Route

strip_path参数默认时true--省略匹配到的path路径(true:route的path:/hello  ,请求时:ip:80/hello/hello1   到达upstream时就变成了 ip:80/hello1)

curl -i -X POST \

    --url http://localhost:8001/routes/ \

    --data 'protocols[]=http' \

    --data 'protocols[]=https' \

    --data 'methods[]=GET' \

    --data 'methods[]=POST' \

    --data 'hosts[]=api.example.com' \

    --data 'paths[]=/foo' \

    --data 'service.id=78adee90-dc14-418d-940c-590bc385212e'

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值