• 整理的文档比较早,kong版本可能是0.10.3版本。详情请看官网最新文档

准备

使用kong代理后端请求

1.开放几个接口如下:

本地请求1:http://aaa.wyc.com:8888/aaa

返回:server_name:aaa.wyc.com,port:8888

本地请求2:http://aaa.wyc.com:8889/aaa

返回:server_name:aaa.wyc.com,port:8889

。。。

向kong注册后端请求

1.向kong里添加一条转发,将uri为/test的请求转发到本地请求request1

规则如下:

curl -i -X POST \
--url http://127.0.0.1:8001/apis/ \
--data 'name=wyc' \
--data 'uris=/test' \
--data 'upstream_url=http://aaa.wyc.com:8888/aaa' \
--data 'preserve_host=true' \
--data 'strip_uri=true'

然后请求http://localhost:8000/test,返回server_name:aaa.wyc.com,port:8888,说明添加成功。

2.在kong里添加一个名为test_v1的upstream

curl -i -X POST \
--url http://127.0.0.1:8001/upstreams/ \
--data 'name=test_v1' \
--data 'slots=10'

生成:

{
"orderlist": [
1,
6,
7,
8,
2,
4,
10,
5,
9,
3
],
"slots": 10,
"id": "6beedc5d-87fc-4382-92be-1dc752f28383",
"name": "test_v1",
"created_at": 1505217458404
}

3.在以上生成的upstream中添加target

curl -i -X POST \
--url http://127.0.0.1:8001/upstreams/test_v1/targets \
--data 'target=aaa.wyc.com:8888' \
--data 'weight=10'

生成:

{
"target": "aaa.wyc.com:8888",
"id": "479dbc3a-74fe-47e7-b7b5-3ff188f5c08a",
"weight": 10,
"created_at": 1505269393596,
"upstream_id": "6beedc5d-87fc-4382-92be-1dc752f28383"
}

如果要删除某个target,则将其weiget设置为0

curl -i -X POST \
--url http://127.0.0.1:8001/upstreams/test_v1/targets \
--data 'target=aaa.wyc.com:8888' \
--data 'weight=0'

查看正常活跃的target:

curl -i -X GET \
--url http://127.0.0.1:8001/upstreams/test_v1/targets/active

kong的upstreams配置来负载均衡

1.修改request1的upstream为test_v1

{
"http_if_terminated": true,
"id": "d7685fd9-4caa-4f61-9b2c-8cc874ebc4d9",
"retries": 5,
"preserve_host": false,
"created_at": 1496395744000,
"upstream_connect_timeout": 60000,
"upstream_url": "http://test_v1/aaa",
"upstream_read_timeout": 60000,
"upstream_send_timeout": 60000,
"https_only": false,
"strip_uri": true,
"uris": [
"/test"
],
"name": "wyc",
"hosts": {}
}

然后重复执行上面步骤:

请求http://localhost:8000/test,返回server_name:aaa.wyc.com,port:8888。代理请求成功。

2.在upstream(test_v1)中再添加两条target

{
"data": [
{
"weight": 10,
"id": "66e30dcb-f504-408c-8269-fc86cbdc9cc6",
"target": "aaa.wyc.com:8890",
"created_at": 1505285074670,
"upstream_id": "6beedc5d-87fc-4382-92be-1dc752f28383"
},
{
"weight": 10,
"id": "e4c20a71-50d6-4b0e-989b-67f04758dbcb",
"target": "aaa.wyc.com:8889",
"created_at": 1505285069882,
"upstream_id": "6beedc5d-87fc-4382-92be-1dc752f28383"
},
{
"weight": 10,
"id": "cc79f82f-d9d8-4a8a-9dbd-9cb59f35f078",
"target": "aaa.wyc.com:8888",
"created_at": 1505273186303,
"upstream_id": "6beedc5d-87fc-4382-92be-1dc752f28383"
}
],
"total": 3
}

三个target的权重相同,应该轮流返回如上接口返回的信息。但是结果貌似不对:

https://github.com/Mashape/kong/issues/2887

实际测试:请求kong总是代理请求到upstream的其中一个target,例如:aaa.wyc.com:8889.

如果将aaa.wyc.com:8889所在服务down掉,kong将自动选择其他的健康的节点,将请求代理过去。

用consul配置kong负载均衡和服务发现

健康检查

1.https://github.com/openresty/lua-resty-upstream-healthcheck

官方提供的健康检查,使用http方式定时调用,需要对应的上游服务器暴露一个api来验证。

将上述的接口放在test_v1的upstream中:

upstream test_v1 {
server 127.0.0.1:8889;
server 127.0.0.1:8890;
server 127.0.0.1:8891 backup;
}

定义一个status的location查看upstream状态:

Nginx Worker PID: 45014
Upstream test_v1
Primary Peers
127.0.0.1:8889 up
127.0.0.1:8890 up
Backup Peers
127.0.0.1:8891 up

将其中一个upstream去除:server 127.0.0.1:8890;返回结果:

Nginx Worker PID: 45160
Upstream test_v1
Primary Peers
127.0.0.1:8889 up
127.0.0.1:8890 DOWN
Backup Peers
127.0.0.1:8891 up

2.https://github.com/upyun/lua-resty-checkups

3.https://github.com/upyun/slardar

kong添加upstream的更多相关文章

  1. kong配置upstream实现简单的负载均衡

    目录 通过konga实现 1. 配置upstream 2. 配置Service发布 3. 配置Route,匹配规则 4. 验证结果 通过 Kong Admin API实现 1. 配置upstream ...

  2. Kong(v1.0.2)代理参考

    介绍 在本文中,我们将通过详细解释Kong的路由功能和内部工作原理来介绍它的代理功能. Kong公开了几个接口,可以通过两个配置属性进行调整: proxy_listen,它定义了一个地址/端口列表,K ...

  3. 微服务Kong(八)——代理参考

    Kong侦听四个端口的请求,默认情况是: 8000:此端口是Kong用来监听来自客户端的HTTP请求的,并将此请求转发到您的上游服务.这也是本教程中最主要用到的端口. 8443:此端口是Kong监听H ...

  4. kong nginx 配置文件说明&&借鉴

    备注:     只是简单的进行说明配置文件,不会牵扯到源码   1.  配置文件位置 // 通过ps 查找 ps -ef |grep nginx /usr/local/openresty/nginx/ ...

  5. Kong的API管理方式

    目录 Kong 的管理方式 1. kong的关键术语 Service: Route: Upstream: Target: API: Consumer: Plugin: 2. 如何通过配置KONG AP ...

  6. Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  7. nginx upstream 实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  8. 【upstream】Nginx配置upstream实现负载均衡

    如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...

  9. Nginx upstream负载均衡配置

    1.在http节点下添加 upstream test {     server 127.0.0.1:16010;     server 127.0.0.1:16011; } 2.把server 节点下 ...

随机推荐

  1. Solaris 选择使用不同网口的操作

    机器上集成两个物理网口,由于先前使用的网口传输速率特别慢且容易丢包,故换成另一个网口,操作如下: 1.查看物理设备信息-- 显示可用的数据链路 root@238-spa:~# dladm show-p ...

  2. Django rest framework 权限操作(源码分析)

    知识回顾http://www.cnblogs.com/ctztake/p/8419059.html 这一篇是基于上一篇写的,上一篇谢了认证的具体流程,看懂了上一篇这一篇才能看懂, 当用户访问是 首先执 ...

  3. Linux汇编教程03:大小比较操作

    我们在上一讲中,简单了解了汇编程序大概的样子.接下来我们来了解一下,汇编程序的大小比较操作.所以我们以编写寻找一堆数中的最大值作为学习的载体. 在编写程序之前,先要分析我们的目的,在得出解决方案. 目 ...

  4. python实战===itchat

    import itchat itchat.login() friends=itchat.get_friends(update=True)[0:] male=female=other=0 for i i ...

  5. ogre 3d游戏开发框架指南

    ogre 3d游戏开发框架指南pdf 附光盘代码 http://www.ddooo.com/softdown/74228.htm OGRE3D游戏开发框架指南.pdf http://vdisk.wei ...

  6. 【bzoj1923】外星千足虫

    这个gauss消元有点naive啊. 由于只有01,位操作显然是方便的多. 那么用bitset代替之前的增广矩阵就行了. #include<bits/stdc++.h> #define N ...

  7. Zookeeper 入门第一篇

    转载原文地址: ZooKeeper学习总结 第一篇:ZooKeeper快速入门 ZooKeeper学习总结 第二篇:ZooKeeper深入探讨 ZooKeeper学习第一期---Zookeeper简单 ...

  8. Django在根据models生成数据库表时报错

    报错信息: E:\Python\s6day103>python manage.py makemigrations Traceback (most recent call last): File ...

  9. 半透明AlphaBlend

    AlphaBlend 函数功能:该函数用来显示透明或半透明像素的位图. 函数原型: BOOL AlphaBlend( HDC hdcDest, // handle to destination DC ...

  10. 这种文件别打开, 大小不足1KB, 却可以让你电脑瘫痪

    今年6月份,抖音表白代码火了,不足1kb的txt文件,玩出了新花样.可是你知道吗,这种非常“浪漫”的表白方式,其实存在着很大的风险,甚至会让你的电脑直接瘫痪. 首先,先说一下所谓的表白代码是怎么回事. ...