zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    echart图表--雷达图表的动态数据max
    访问github个人博客时*.github.io 拒绝了我们的连接请求,错误码403
    js数组对象去重
    关于vuex的demo
    原生js实现 正方体旋转
    实现分页加载,加载更多(按钮类型),滚动加载的方式
    this指向
    记录三段式布局
    vue 动态路由 和 路由模式
    vue cli 配置反向代理
  • 原文地址:https://www.cnblogs.com/mentalidade/p/10394274.html
Copyright © 2011-2022 走看看