负载均衡和故障转移

负载均衡和故障转移 

网关既支持delphi,又支持lazarus开发(支持更多操作系统和CPU平台)。

必须使用网关才能部署中间件集群,中间件集群是通过网关实现客户端负载均衡和故障转移的。

网关配置server.json

{
    "ssl":false,//开启https
    "selfsigned":false,
    "cert":"server.pem",//ssl证书
    "privatekey":"server.key",//ssl私钥
    "privpassword":"",
    "httpport":12345,//网关使用端口
    "threadpoolsize":64,//网关工作线程池线程初始数量
    "httpclientpoolsize":64,
    "loadbalance":"roundrobin",//roundrobin(轮转),random(随机),iphash(ip哈希)

// 主动地健康检查,网关定时主动地去ping后端的服务列表,当发现某服务出现异常时,
// 把该服务从健康列表中移除,当发现某服务恢复时,又能够将该服务加回健康列表中。

"health":
    {
        "interval":3000,
        "retry":1,
        "timeout":200
    },
    "httpserver"://被网关代理的服务列表
    [
        {
            "protocol":"http",
            "name":"webapi server1",
            "prefix":"http",
            "ip":"127.0.0.1",
            "port":1234
        }
    ],
    "rewrite"://url重定向
    [
        {
            "frommethod":"GET",
            "tomethod":"GET",
            "fromurl":"/rest/test",
            "tourl":"/test"
        }
    ]
}

 负载均衡和故障转移算法:

server.json文件的"loadbalance":"roundrobin"配置,共有3种配置项:iphash,roundrobin,random。

1)随机(random)算法:

网关将客户端请求随机地分配给后端的代理服务。

2)轮转(轮转)算法:

网关将客户端请求根据代理服务列表,顺序依次分配给后端的代理服务。

3)ip(哈希)算法:

网关将同一客户端请求,分配给同一的后端代理服务,依据是客户端访问网关的remote ip。

网关可以静态配置代理服务,代理服务也可以通过webapi接口动态地向网关注册或移除自身。

1)静态配置代理服务

server.json文件httpserver数组。

    "httpserver":
    [
        {
            "protocol":"http",//协议
            "name":"webapi server1",//代理服务名称
            "prefix":"http",//前缀
            "ip":"127.0.0.1",//代理服务ip
            "port":1234//代理服务端口
        }
    ],

2)代理服务通过webapi接口动态地向网关注册或移除自身

2.1)动态注册服务
http://网关ip:port/addserver/{"name":"service1","prefix":"http","ip":"localhost","port":1234,"protocol":"http"}

2.2)动态注销服务
http://网关ip:port/removeserver/{"name":"service1"}

url重定向

通过url重定向,可以改变客户端请求的http method和url。

server.json的rewrite数组。

    "rewrite":
    [
        {
            "frommethod":"GET",//源方法
            "tomethod":"GET",//目的方法
            "fromurl":"/rest/test",//源url
            "tourl":"/test"//目的Url
        }
    ]

 

https配置

server.json文件

    "ssl":false,//是否使用https
    "selfsigned":false,//使用自签名
    "cert":"server.pem",//ssl证书
    "privatekey":"server.key",//ssl私钥
    "privpassword":"",//私密

 

反向代理健康检查

 网关主动地检查代理服务的健康,网关定时主动地去ping后端的服务列表,当发现某服务出现异常时,
把该服务从健康列表中移除,当发现某服务恢复时,又能够将该服务加回健康列表中。

"health":
    {
        "interval":3000,//间隔3秒
        "retry":1,//尝试次数
        "timeout":200//Ping超时
    },

 

posted @ 2025-04-29 13:28  delphi中间件  阅读(49)  评论(0)    收藏  举报