Rancher中怎么利用Traefik构建主动负载均衡

发布时间:2021-08-12 16:44:11 作者:Leah
来源:亿速云 阅读:269

Rancher中怎么利用Traefik构建主动负载均衡,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

元数据服务

在Rancher中,我们有一个杰出的内置服务发现系统被称为Rancher的元数据服务。在Rancher的元数据服务中,我们可以从本机服务或者从其他堆栈或服务获取信息。Rancher的元数据里有最新的有关什么服务在系统上运行并且位于何处信息。

想为你的服务生成动态配置文件,你需要与Rancher的元数据服务通讯。要做到这一点,可以使用confd与具体的模板。

想了解更多细节,我建议你读Bill Maxwell的这篇文章:http://rancher.com/introducing-rancher-metadata-service-for-docker/。

负载均衡

Rancher提供了一个内建的负载均衡服务。它是一个容器化的HAProxy,而且它在对外发布你的服务端口非常有用。

这个负载均衡可以在两种不同的模式下工作。这意味着,它可以在两种不同的OSI层工作,特别是4层和7层。可是,这意味着什么呢?

第4层

-------------------------------------------------------------------------------------------------------------

您可以发布和提供TCP端口的访问。你使用这种有点原始的模式给你的服务后端发包,但无法修改端口。在这种模式下,你不能共享端口。这意味着你需要为每个服务发布不同的端口。

 

第7层

-------------------------------------------------------------------------------------------------------------

在这一层,你是在应用层面工作,而且只能发布HTTP(S)端口。在这种模式下,负载均衡可以查看和修改HTTP数据包。你可以检查,添加或修改HTTP头文件。在这种模式下,你可以共享相同的发布端口给不同的服务。显然,负载均衡必须知道如何区分传入数据包,以便将它们转发给正确的服务。要做到这一点,你需要定义一个用于检查传入HTTP数据包的HTTP头文件过滤器。一旦匹配成功,请求将会发送给正确的服务。

在这两种模式下,负载均衡都是以“被动模式”工作。这意味着,一旦你部署一个新的服务,你必须修改负载均衡配置并重新添加服务。显然,如果你从负载均衡中删除一个服务,它的配置也会在负载均衡配置中被删除。

 

主动负载均衡

为了给用户提供一个更好的选择,我们已经创建了一个基于Docker标签和Rancher元数据服务的“主动模式”负载均衡。负载均衡扫描Rancher元数据,并能自行配置,并为已配置特定标签的服务提供接入。

要获得这个功能,我们使用Traefik。Traefik是一个可编程的开源负载均衡,用golang编写。它可与Zookeeper,etcd,Consul等不同的服务发现系统集成。我们做了与Rancher元数据的初步集成。Traefik有一个真正意义上的零宕机时间重载,并实现定义断路器规则的可能性。要获取更多信息,请访问https://traefik.io/。

要使用Traefik,从社区Catalog中选择它并启动。使用默认参数,Traefik将在标签traefik_lb=true的所有主机上运行。暴露用于HTTP服务的主机端口8080以及作为Traefik管理的端口8000。它每60秒刷新配置一次。让你部署服务时覆盖所有参数成为可能。

 

一旦服务被部署,您可以访问管理界面http://host-address:9000

您需要在服务端定义以下标签来使您的的服务自动暴露给Traefik:

traefik.enable=<true|false>

traefik.domain=<domain name to route rule>

traefik.port=<port to expose throught traefik>

在你的服务中定义一个健康检查是强制性的要求,因为只有健康的后端才能添加到Traefik。如果你在你的服务中定义traefik.enable=true的标签,但是服务不具有健康检查,前端虽然可以被添加到Traefik,而后端只会为空列表。

测试

我们已经写了一个基本的Web测试服务,使其能够检查Traefik服务,并以快速的方式进行测试。这项服务在8080端口公开Web服务。

你可以导入以下docker-compose.yml和rancher-compose.yml来创建一个新的Stack。

docker-compose.yml

web-test:

log_driver:''

labels:

traefik.domain:local

traefik.port:'8080'

traefik.enable:'true'

io.rancher.container.hostname_override:container_name

tty:true

log_opt:{}

image:rawmind/web-test

rancher-compose.yml

web-test:

scale:3

health_check:

port:8080

interval:2000

initializing_timeout:60000

unhealthy_threshold:3

strategy:recreate

response_timeout:2000

request_line:GET"/""HTTP/1.0"

healthy_threshold:2

关于Rancher中怎么利用Traefik构建主动负载均衡问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注亿速云行业资讯频道了解更多相关知识。

推荐阅读:
  1. 利用Helm部署高可用rancher集群
  2. 单机Docker如何实现 Traefik 反向代理-负载均衡

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

rancher traefik

上一篇:Windows中怎么利用eclipse连接hadoop

下一篇:JavaScript的中括号“[]”语义有几种

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》