代理服务器danted高可用和负载均衡

高可用实现架构

danted高可用架构图.png

高可用具体实现

1.如何保证多台danted服务的负载均衡

通过采用haproxy这个服务对多台danted服务的请求进行负载均衡

haproxy.cfg.png

haproxy服务对danted服务进行健康检测时,如果发现异常会自动将异常服务剔除,将请求负载到好的服务器上,直到服务恢复正常后又会自动加入到负载均衡的列表中。

2.如何保证haproxy以及danted服务的高可用

haproxy.png

由haproxy官方文档可知, haproxy很好的集成了keepalived,可以很容易的告知keepalived它自己的状态,然后进行ip漂移。 所以这里我们通过keepalived进行解决haproxy的单点故障问题,保证haproxy的高可用。

具体配置和实现:

在keepalived.conf中,我们看到以下配置

keepalived.conf.png
  • vrrp_script配置作用:keepalived会定时执行脚本并对脚本执行的结果进行分析,动态调整vrrp_instance的优先级。

    1. “weight”值为正数时

    在vrrp_script中指定的脚本如果检测成功,那么Master节点的权值将是“weight值与”priority“值之和,如果脚本检测失败,那么Master节点的权值保持为“priority”值,因此切换策略为:

    Master节点“vrrp_script”脚本检测失败时,如果Master节点“priority”值小于Backup节点“weight值与”priority“值之和,将发生主、备切换。

    Master节点“vrrp_script”脚本检测成功时,如果Master节点“weight”值与“priority”值之和大于Backup节点“weight”值与“priority”值之和,主节点依然为主节点,不发生切换。

    1. “weight”值为负数时

    在“vrrp_script”中指定的脚本如果检测成功,那么Master节点的权值仍为“priority”值,当脚本检测失败时,Master节点的权值将是“priority“值与“weight”值之差,因此切换策略为:

    Master节点“vrrp_script”脚本检测失败时,如果Master节点“priority”值与“weight”值之差小于Backup节点“priority”值,将发生主、备切换。

    Master节点“vrrp_script”脚本检测成功时,如果Master节点“priority”值大于Backup节点“priority”值时,主节点依然为主节点,不发生切换。

    1. 由这里的策略可知,weight以及priority这两者值的选择非常重要,如果选择不当,可能会导致即使master故障,依旧不会发生主备切换、保证高可用
  • 保证高可用,还得看具体脚本执行的结果,这里我们阅读以下对应的脚本


    检测脚本.png

    脚本内容很简单,就是去查询了danted,haproxy和keepalived自身的服务状态,发现异常会将其重启。这个时候,脚本检测失败,会发生keepalived的主备切换,保证服务的正常运行,即保证haproxy,danted,keepalived的高可用, 其实这里脚本不需要这么复杂,只需要检测danted服务状态是否正常即可。

参考链接

https://blog.51cto.com/wangaimin/1903842

https://wsgzao.github.io/post/keepalived/

http://cbonte.github.io/haproxy-dconv/1.7/intro.html#3.3.4

你可能感兴趣的:(代理服务器danted高可用和负载均衡)