UDN-企业互联网技术人气社区
登录
注册
搜索
本版
文章
帖子
用户
搜索
本版
文章
帖子
用户
移动下载
试试手气
每日签到
首页
论坛
开发者大赛2020
资源工具
云品秀
学习认证
赛事竞猜
云平台
YonBuilder_低代码开发平台
云品秀
数字化建模(业务中台)
云原生架构(技术中台)
数据中台
智能服务
开放连接
伙伴专区
云服务
YonBip
YonSuite
NCCloud
U8Cloud
管理软件
NC
U8
U9
企业互联网产品
开放平台
YonBuilder
友企联
通用技术
HTML5|CSS3
JavaScript
数据库
Docker|云计算
J2EE技术
DevOps
开源
招聘面试
社区服务
论坛事务区
IT资讯
板块导航
UDN每周精选
HTML5
UAP工具下载
营改增
主数据平台
前端开发
用友研发员工必备
UDN 企业互联网技术社区
»
论坛
›
社区服务:IT资讯
›
在Rancher上使用Traefik构建主动负载均衡
返回
发表新主题
浏览 :
2585
回复 :
0
[干货]
在Rancher上使用Traefik构建主动负载均衡
[复制链接]
舞操
发布主题
回复的帖子
7045
积分
威望
活力
U币
发消息
当前离线
楼主
发表于 2017-1-6 17:23:53
|
显示全部楼层
|
阅读模式
人工智能
开发者
简述
本文原文作者:Raul Sanchez Liebanaon,是
DevOps
微服务架构师,专门从事敏捷,看板,微服务,CI/CD,开源以及其他新技术的应用。
这篇文章的重点是Traefik“主动模式”负载均衡技术结合
Docker
标签和Rancher元数据,以实现自动配置和提供服务接入。
负载均衡/代理是使您够访问服务后台成为可能的软件程序。
在微服务架构里,它们有一个额外的挑战那就是管理高活力。它们必须以动态和自动化的方式察觉
前端
和后端的变化,从而更新和重新装载它们的配置。它们还需要与服务发现系统通讯。
元数据服务
在Rancher中,我们有一个杰出的内置服务发现系统被称为Rancher的元数据服务。在Ranche
想为你的服务生成动态配置文件,你需要与Rancher的元数据服务通讯。要做到这一点,可以使用confd与具体的模板。
想了解更多细节,我建议你读Bill Maxwell的这篇文章:
http://rancher.com/introducing-r ... 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
复制代码
它将Traefik标签添加到它的定义中。在部署后,其后端将会是“健康”的状态。他们将被自动添加到Traefik服务中以下方式暴露:
http://${service_name}.${stack_name}.${traefik.domain}:${http_port}.
复制代码
你可以在Traefik管理界面查看http://host-address:8000
如果你切换web-test服务开启或关闭,你可以在Traefik管理界面中看到后端服务器将自动添加或删除。但是,你必须等待刷新间隔时间之前的配置被刷新。
要访问web-test服务,添加一个别名到DNS,web-test.proxy-test.local指向你的主机地址,然后转到
http://web-test.proxy-test.local:8080.
当你请求的web-test服务,它会显示所有的头文件信息,如下图所示:
http://web-test.proxy-test.local:8080
一旦你刷新页面,你应该可以看到Real_server正在发生变化并且负载均衡开始工作。
小提示:为了避免设置DNS纪录,你可以使用curl测试服务,添加主机头文件。
curl –H Host:web-test.proxy-test.local http://host-address:8080
复制代码
暴露你的服务
给Traefik暴露你的服务,给它们的添加以下标签:
traefik.enable=true
traefik.domain=
traefik.port=
复制代码
这个服务${traefik.port}将会暴露为:
http://${service_name}.${stack_name}.${traefik.domain}:${http_port}
小提示:如果你删除Traefik Stack,当你再次部署它,你不需要重新配置它,它会自动通过扫描服务标签进行配置。
参考
https://github.com/rawmind0/alpine-traefik
https://github.com/rawmind0/rancher-traefik
https://github.com/rawmind0/web-test
原文作者: Haoskism 来源:开发者头条
相关帖子
•
创新工场对人工智能认真了,李开复详解AI创业的三个“不...
•
Java帝国之拨云见日识回调
•
总结一个技术总监的教训和经验
•
使用ES6新特性开发微信小程序(8)——国际化与本地化
•
基于时间序列数据的监控实践
•
iOS编程中throttle那些事
•
ansible2.0 playbook api运维应用
•
看我如何搞定Nodejs内存泄漏问题
•
RxJava系列2(基本概念及使用介绍)
•
听说你想撤回信息?
使用道具
举报
回复
提升卡
置顶卡
变色卡
返回
发表新主题
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用微信扫一扫
互动赢积分
关于我们
网站简介
友链交换
免责声明
联系我们
电话:010-86393388
邮件:
udn@yonyou.com
地址:北京市海淀区北清路68号
移动客户端下载
安卓客户端
苹果客户端
关注我们
微信公众号:yonyouudn
扫描右侧二维码关注我们
专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041
京ICP备05007539号-11
京公网网备安1101080209224
Powered by Discuz!
快速回复
返回列表
返回顶部