kong添加upstream
- 整理的文档比较早,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的更多相关文章
- kong配置upstream实现简单的负载均衡
目录 通过konga实现 1. 配置upstream 2. 配置Service发布 3. 配置Route,匹配规则 4. 验证结果 通过 Kong Admin API实现 1. 配置upstream ...
- Kong(v1.0.2)代理参考
介绍 在本文中,我们将通过详细解释Kong的路由功能和内部工作原理来介绍它的代理功能. Kong公开了几个接口,可以通过两个配置属性进行调整: proxy_listen,它定义了一个地址/端口列表,K ...
- 微服务Kong(八)——代理参考
Kong侦听四个端口的请求,默认情况是: 8000:此端口是Kong用来监听来自客户端的HTTP请求的,并将此请求转发到您的上游服务.这也是本教程中最主要用到的端口. 8443:此端口是Kong监听H ...
- kong nginx 配置文件说明&&借鉴
备注: 只是简单的进行说明配置文件,不会牵扯到源码 1. 配置文件位置 // 通过ps 查找 ps -ef |grep nginx /usr/local/openresty/nginx/ ...
- Kong的API管理方式
目录 Kong 的管理方式 1. kong的关键术语 Service: Route: Upstream: Target: API: Consumer: Plugin: 2. 如何通过配置KONG AP ...
- Nginx配置upstream实现负载均衡
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- nginx upstream 实现负载均衡
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- 【upstream】Nginx配置upstream实现负载均衡
如果Nginx没有仅仅只能代理一台服务器的话,那它也不可能像今天这么火,Nginx可以配置代理多台服务器,当一台服务器宕机之后,仍能保持系统可用.具体配置过程如下: 1. 在http节点下,添加ups ...
- Nginx upstream负载均衡配置
1.在http节点下添加 upstream test { server 127.0.0.1:16010; server 127.0.0.1:16011; } 2.把server 节点下 ...
随机推荐
- 自定义ToolBar
一.Toolbar的简介 Toolbar 是 android 5.0 引入的一个新控件,Toolbar出现之前,我们很多时候都是使用ActionBar以及ActionActivity实现顶部导航栏的, ...
- Coursera在线学习---第七节.支持向量机(SVM)
一.代价函数 对比逻辑回归与支持向量机代价函数. cost1(z)=-log(1/(1+e-z)) cost0(z)=-log(1-1/(1+e-z)) 二.支持向量机中求解代价函数中的C值相当于 ...
- linux驱动基础系列--Linux 串口、usb转串口驱动分析
前言 主要是想对Linux 串口.usb转串口驱动框架有一个整体的把控,因此会忽略某些细节,同时里面涉及到的一些驱动基础,比如字符设备驱动.平台驱动等也不进行详细说明原理.如果有任何错误地方,请指出, ...
- Oracle事务处理
原文转自:(http://www.cnblogs.com/ITtangtang/archive/2012/04/23/2466554.html) 一.事务概念事务用于保证数据的一致性,它由一组相关的d ...
- [USACO06NOV]路障---严格次短路
Description 贝茜把家搬到了一个小农场,但她常常回到FJ的农场去拜访她的朋友.贝茜很喜欢路边的风景,不想那么快地结束她的旅途,于是她每次回农场,都会选择第二短的路径,而不象我们所习惯的那样, ...
- python的多线程、多进程代码示例
python多进程和多线程的区别:python的多线程不是真正意义上的多线程,由于python编译器的问题,导致python的多线程存在一个PIL锁,使得python的多线程的CPU利用率比预期的要低 ...
- git在window与linux的换行符问题
1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后pu ...
- [你必须知道的.NET]第二十八回:说说Name这回事儿
发布日期:2009.3.18 作者:Anytao © 2009 Anytao.com ,原创作品,转贴请注明作者和出处. 1 缘起 老赵在谈表达式树的缓存(2):由表达式树生成字符串中提到,在描述Ty ...
- K8s的内部Pod之间都不通,搞了快两天
试了不亚于二十种方法,绝望的时候,回到了家. 想手工安装,又遇到flannel在手工下,会更改docker启动项的不完善. cni,或许就是k8s的大方向吧. 最后,抱着试一试的态度,将flannel ...
- 前端读者 | 百度前端编码规范(JS)
本文来自:百度FEX 1 前言 JavaScript在百度一直有着广泛的应用,特别是在浏览器端的行为管理.本文档的目标是使JavaScript代码风格保持一致,容易被理解和被维护. 虽然本文档是针对J ...