• 整理的文档比较早,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. LCD实验学习笔记(九):UART

    s3c2440包含三个通用异步收发器,可工作于中断模式或DMA模式.每个UART包含两个64字节的FIFOs用于接收和发送数据.可编程设置波特率.1或2个停止位,5/6/7/8个数据位和奇偶校验状态. ...

  2. Java8的Lambda表达式简介

    先阐述一下JSR(Java Specification Requests)规范,即Java语言的规范提案.是向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求 ...

  3. FC4-i386-SRPMS

    [重点] http://archives.fedoraproject.org/pub/archive/fedora/linux/core/6/ http://archives.fedoraprojec ...

  4. Unknown character set: 'utf8mb4'

    出现Unknown character set: 'utf8mb4'该错误是因为你的mysql-connector-java版本太高了,现在的mysql编码方式utf8mb4  然而老版本的却是utf ...

  5. Tomcat+Apache 负载均衡

    1.JDK1.8和Tomcat7.0不兼容,支持Tomcat8.0. 集群架构图: 2.负载均衡:负载的基础是集群,集群就是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同 ...

  6. 取消myeclipse自动进入workspace

    进入到C:\Program Files\MyEclipse 6.5\eclipse\configuration\.settings目录, 修改SHOW_WORKSPACE_SELECTION_DIAL ...

  7. 接口测试Session/Cookie笔记(二)

    Windows系统运行计算器命令:calc python显示上一步操作命令:Alt+p python显示上一步操作结果:_(英文下划线) Session是存放在服务器的键值对 ,用于保存客户端的某个特 ...

  8. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记10——三维天空的构建&三维粒子的实现&多游戏模型的载入

    第23章 三维天空的构建 目前描述三维天空的技术主要包括三种类型,直接来介绍使用最广泛的模拟技术,详细的描述可以见作者的博文. 天空盒(Sky Box),即放到场景的是一个立方体.它是目前使用最广泛的 ...

  9. 监测mysql错误日志,有错误自动邮件报警

    监测mysql错误日志,有错误自动邮件报警 http://blog.csdn.net/yabingshi_tech/article/details/51443401 MySQL:监控慢日志.错误日志. ...

  10. APP线上问题收集信息整理

    常话说“软件是不能保证百分百没有bug的”,因此当我们的APP上线之后,市场的使用人员会反馈一些我们测试人员可能在测试时遗漏的问题,包括也不防会有一些需求的反馈,这些问题均由售后人员反馈整理,以一种方 ...