AWS 是否能支持智能dns 负载均衡衡

Elastic Load Balancing automatically distributes incoming application traffic across multiple targets, such as Amazon EC2 instances, containers, and IP addresses. It can handle the varying load of your application traffic in a single Availability Zone or across multiple Availability Zones. Elastic Load Balancing offers three types of load balancers that all feature the high availability, automatic scaling, and robust security necessary to make your applications fault tolerant.
Application Load Balancer
Application Load Balancer is best suited for load balancing of HTTP and HTTPS traffic and provides advanced request routing targeted at the delivery of modern application architectures, including microservices and containers. Operating at the individual request level (Layer 7), Application Load Balancer routes traffic to targets within Amazon Virtual Private Cloud (Amazon VPC) based on the content of the request.
Network Load Balancer
Network Load Balancer is best suited for load balancing of TCP traffic where extreme performance is required. Operating at the connection level (Layer 4), Network Load Balancer routes traffic to targets within Amazon Virtual Private Cloud (Amazon VPC) and is capable of handling millions of requests per second while maintaining ultra-low latencies. Network Load Balancer is also optimized to handle sudden and volatile traffic patterns.
Classic Load Balancer
Classic Load Balancer provides basic load balancing across multiple Amazon EC2 instances and operates at both the request level and connection level. Classic Load Balancer is intended for applications that were built within the EC2-Classic network.
Highly Available
Elastic Load Balancing automatically distributes incoming traffic across multiple targets – Amazon EC2 instances, containers, and IP addresses – in multiple Availability Zones and ensures only healthy targets receive traffic. Elastic Load Balancing can also load balance across a Region, routing traffic to healthy targets in different Availability Zones.
Elastic Load Balancing works with
to provide robust security features, including integrated certificate management and SSL decryption. Together, they give you the flexibility to centrally manage SSL settings and offload CPU intensive workloads from your applications. & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &&
Elastic Load Balancing is capable of handling rapid changes in network traffic patterns. Additionally, deep integration with
ensures sufficient application capacity to meet varying levels of application load without requiring manual intervention. & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & & &
Elastic Load Balancing also allows you to use IP addresses to route requests to application targets. This offers you flexibility in how you virtualize your application targets, allowing you to host more applications on the same instance. This also enables these applications to have individual security groups and use the same network port to further simplify inter-application communication in microservices based architecture.
Robust Monitoring and Auditing
Elastic Load Balancing allows you to monitor your applications and their performance in real time with
metrics, logging, and request tracing. This improves visibility into the behavior of your applications, uncovering issues and identifying performance bottlenecks in your application stack at the granularity of an individual request.
Hybrid Load Balancing
Elastic Load Balancing offers ability to load balance across AWS and on-premises resources using the same load balancer. This makes it easy for you to migrate, burst, or failover on-premises applications to the cloud.
Elastic Load Balancing provides fault tolerance for your applications by automatically balancing traffic across targets – Amazon EC2 instances, containers and IP addresses – and Availability Zones while ensuring only healthy targets receive traffic. If all of your targets in a single Availability Zone are unhealthy, Elastic Load Balancing will route traffic to healthy instances in other Availability Zones. Once targets have returned to a healthy state, load balancing will automatically resume to the original targets.
With enhanced container support for Elastic Load Balancing, you can now load balance across multiple ports on the same Amazon EC2 instance. You can also take advantage of deep integration with the Amazon EC2 Container Service (ECS), which provides a fully-managed container offering. Simply register a service with a load balancer, and ECS transparently manages the registration and de-registration of Docker containers. The load balancer automatically detects the port and dynamically reconfigures itself.
Elastic Load Balancing provides confidence that your applications will scale to the demands of your customers. With the ability to trigger Auto Scaling for your Amazon EC2 instance fleet when latency of any one of your EC2 instances exceeds a preconfigured threshold, your applications will always be ready to serve the next customer request.
Elastic Load Balancing makes it easy to create an internet-facing entry point into your VPC or to route request traffic between tiers of your application within your VPC. You can assign security groups to your load balancer to control which ports are open to a list of allowed sources. Because Elastic Load Balancing is integrated with your VPC, all of your existing Network Access Control Lists (ACLs) and Routing Tables continue to provide additional network controls.
When you create a load balancer in your VPC, you can specify whether the load balancer is internet-facing (default) or internal. If you select internal, you do not need to have an internet gateway to reach the load balancer, and the private IP addresses of the load balancer will be used in the load balancer’s DNS record.
Elastic Load Balancing offers ability to load balance across AWS and on-premises resources using the same load balancer. For example, if you need to distribute application traffic across both AWS and on-premises resources, you can achieve this by registering all the resources to the same target group and associating the target group with a load balancer. Alternatively, you can use DNS-based weighted load balancing across AWS and on-premises resources using two load balancers, with one load balancer for AWS and other for on-premises resources.
You can also use hybrid load balancing to benefit separate applications where one is in a VPC and the other is in an on-premises location. Simply put the VPC targets in one target group and the on-premises targets in another target group, and then use content based routing to route traffic to each target group.
It's easy to get started with Elastic Load Balancing. Follow our console walkthrough to deploy your first load balancer in a few clicks.编者按:Luminis Technologies从2015年初就开始将Docker和Kubernetes应用到了生产环境,本文作者为Luminis Technologies软件架构...
编者按:Luminis Technologies从2015年初就开始将Docker和Kubernetes应用到了生产环境,本文作者为Luminis Technologies软件架构师Paul Bakker,他在文章中介绍了如何实现负载均衡,蓝绿部署和监控的。
2015年初,我们团队受命为开发团队搭建一个新的部署平台,之前我们的部署平台一直是基于AWS的EC2,很好用,但唯独部署的安装和设置阶段,需要用户写脚本和工具来实现部署的自动化,这些对于运维团队之外的人有一定难度,尤其是那些没有资源去学习这些脚本和细节的小团队。主要的问题是没有“部署单元”,在开发和运维之间存在着断层,而显然容器化的趋势正在改变这个问题。
如果你还没准备好将Docker和Kubernetes应用到生产环境,可以看下我们是如何成为早期的采用者的,如今我们已经在生产环境中运行Kubernetes 1年多的时间了。
从容器和容器编排工具开始
我们相信容器将是未来部署的标准格式,它们简化了应用的打包方式。类似Docker的工具提供了容器的实现,我们还需要工具来处理服务和错误等问题,以及在多个机器上实现自动化部署的API。
虽然在2015年初,像Kubernetes和Docker Swarm这种集群工具还很不成熟,我们依然开始尝试它们,最初用的是Docker Swarm。
起初我们用它来解决网络问题,还用脚本来自动化部署工作。这有多难呢?容器集群,网络以及自动化部署确实是非常难的问题。
我们很快意识到了这一点,并决定换个工具,Kubernetes看上去是最好的选择,因为其背后有Google,RedHat,CoreOS等公司的支持,他们清楚地知道如何做大规模部署。
Kubernetes的负载均衡
要用Kubernetes,首先要熟悉pods,service和replication controller等概念,Kubernetes的文档也是非常棒的学习资料。如果你还没入门,可以看。
一旦一个Kubernetes集群启动并运行了,就可以用kubectl(Kubernetes的CLI)部署应用了,但我们很快发现在实现自动化部署时只有kubectl还不够。但是首先我们还有一个问题要解决:如何在网上访问部署好的应用?
部署的服务有一个IP地址,但是这个地址只在Kubernetes集群内可用,这意味着网络是访问不到这个服务的。在GCE(Google Cloud Engine)上,Kubernetes可以自动配置一个负载均衡器去访问这个应用。如果不是在GCE上,就需要做一些额外的负载均衡工作。
可以在主机端口上直接开放一个服务,很多人最开始都是这样做的,但是这样做放弃了Kubernetes的很多好处。如果依赖主机的端口,随着应用的增多很可能会出现端口冲突,并且未来集群的扩展或主机的替换也会变得非常困难。
两级负载均衡配置
我们发现在Kubernetes集群前配置一个负载均衡器(比如HAProxy或NGINX)是更好的做法。我们的Kubernetes集群运行在AWS的VPN内,用AWS的Elastic Load Balancer路由外部的网络流量到内部的HAProxy集群。对于每个Kubernetes的service,HAProxy都被配置一个后端,service也代理了每个pod的流量。
这种两级负载均衡配置是为了应对AWS ELB非常有限的配置选项。其中一个限制是它不能处理多个vhosts,这也是我们在使用HAProxy的原因。只用HAProxy也可以,但是必须要在DNS级别针对动态的AWS IP做一些工作。
图1:我们的两级负载均衡
在任何情况下,当Kubernetes服务被创建的时候,我们都需要一种机制去动态配置负载均衡器(在这种情况下是HAProxy)。
Kubernetes社区目前正在开发一个叫ingress的功能,有了它就可以直接通过Kubernetes配置外部的负载均衡器。目前这个功能还不可用,去年我们都是通过API和一个小的开源工具去进行负载均衡的配置。
配置负载均衡
首先,我们需要一个区域去存储负载均衡器的配置,由于我们已经用了etcd,就决定存在这里。我们使用confd去监控etcd的配置变化,并基于模板生成新的HAProxy配置文件。当一个新的服务被添加到Kubernetes时,我们会向etcd添加一个新的配置,结果就是一个新的HAProxy配置文件。
逐步成熟的Kubernetes
Kubernetes还有很多待解决的问题,社区已经意识到了许多问题,还有设计文档在讨论新的feature去解决这些问题。但是开发出适用于每个人的解决方案还需要大量时间,毕竟从长期来看,用快捷方式去设计一个新功能并不是一件好事。
当然这并不意味着Kubernetes的功能有限,通过API,Kubernetes就可以做到你需要的。一旦Kubernetes的新feature上线,我们可以马上用标准的组件替换这些第三方的解决方案。
在我们开发出负载均衡的第三方解决方案后,接下来的挑战就是实现一个必要的部署技术:蓝绿部署。
Kubernetes的蓝绿部署
蓝绿部署是一种无宕机的升级技术,和滚动升级不同,蓝绿部署是启动一个运行着新版应用的副本的集群,旧版的应用依旧提供服务,直到新的应用真正启动并配置好负载均衡器。这种方式的一个好处是任何时候都只有一个版本的应用在运行,减少了处理多个并发版本带来的复杂性。当副本个数很少时,蓝绿部署也能很好地工作。
图2:Kubernetes蓝绿部署
图2展示了“Deployer”组件是如何编排部署的。我们基于Apache协议开源了它的实现,作为Amdatu项目的一部分,大家基于这个可以很容易地实现,它还有一个在线UI来配置部署。
这种实现机制中要特别注意在配置负载均衡器之前,对pods的健康检查,我们为每个应用组件都添加了一个可通过HTTP来访问的健康检查。
让部署自动化
有了Deployer,就可以将部署集成到build流程中了。我们的build服务器可以在build成功后,push新的镜像到registry中,然后build服务器能调用Deployer自动将新版应用部署到测试环境中。同一个镜像也可以通过触发生产环境中的Deployer被推送上生产。
图3:我们的容器自动化部署流程
知道你的资源限制
当我们开始用Kubernetes的时候,知道你的资源限制是非常关键的。你可以在每个pod上配置资源请求和CPU/内存限制,还可以控制资源保障和暴增限制。这些配置对于高效运行多个容器非常重要,如果我们不能进行正确的设置,容器会由于未被分配到足够的内存,而经常意外停止。
应该尽早开始设置和测试资源限制,没有限制的情况下,看起来应用运行得很好,一旦将重要的负载放到其中几个容器上,很有可能会出问题。
如何监控Kubernetes
当Kubernetes开始启动后,我们很快意识到在这个新的动态环境中,监控和日志是非常重要的一环。但当你面对的是大规模的服务和节点的时候,进入服务器查看日志文件也是不现实的,应该着手构建一个中心化的日志和监控系统。
有很多做日志的开源工具,我们选择的是Graylog,还有Apache Kafka作为消息系统,收集和分析容器中的日志。容器将日志发送给Kafka,Kafka将它们提交给Graylog去做索引。我们选择了让应用组件将日志打给Kafka,这样方便将日志流式化,成为易于索引的格式。还有其它工具可以从容器外收集日志,然后发送给日志系统。
Kubernetes有很好的故障恢复机制,当pod意外停止时,Kubernetes会重启它们,用户甚至对这个过程毫无察觉。所以我们曾遇到过由于内存泄露,容器在一天内宕机n次的情况,而当时我们完全没有发现。
Kubernetes能做到这一点确实非常厉害,但从用户的角度来说,遇到问题即使被及时处理了,也希望被告知。我们使用了一个第三方的健康检查工具来监控Kubernetes节点和pod,还有数据存储的服务。Kubernetes的API可以和这些工具做到很好的集成。
我们认为检测负载,吞吐量,应用错误和其它状态同样重要,也有很多开源软件可以做。我们用了Heapster去收集Kubernetes的度量,用InfluxDB时序存储来做存储,用Grafana实现可视化。
Kubernetes和数据存储
容器一旦重启,所有的数据都会丢失,对于无状态的组件这没有什么影响,但是对于持久化数据存储显然不行,这就要用到容器的volume机制。Volume可以通过多种形式备份,包括主机文件系统,AWS的EBS(Elastic Block Store)和nfs等。关于Volume的详情可以看《深入浅出Docker Volume》这篇文字。
副本的问题
在大多数的部署中,数据存储都是有备份的。这带来了一些问题,首先,数据存储集群中的每个节点都被备份在不同的volume中,向同一个volume中写数据会造成冲突。另一个问题是大部分数据存储需要明确的配置才能保证集群的运行,而节点的自动发现和配置并不通用。
同时,一个运行着数据存储的机器通常会针对某种工作负载进行调优,比如更高的IOPS。扩展(添加/删除节点)对于数据存储来说,也是一个昂贵的操作。这些都和Kubernetes部署的动态本质不相符。
于是我们决定不在生产环境中的数据存储中使用Kubernetes,我们在不同的主机上手动启动这些集群,然后和Kubernetes上的服务联通。现在我们的服务除了数据存储和HAProxy服务器,都运行在Kubernetes中,包括监控和日志。
看看我们现在的部署方式,我总会由衷感慨Kubernetes真是非常棒,Kubernetes的API在实现部署流程的自动化方面提供了很大的帮助。现在部署不但更可靠了,也更快了,因为我们不需要处理VM了。我们的构建和部署变得更可靠了,因为容器的测试和交付更简单。这种新的部署方式也让我们能够紧跟开发团队的脚步,在第一时间将他们的成果push到生产环境。
在开销上主要包括两个方面:为了运行Kubernetes,需要一个etcd集群和一个master节点,对于很小的部署来说,这个开销相对还是比较大的,所以这种情况下放在云上更合适。
对于规模较大的部署,etcd和master节点的开销就微不足道了。Kubernetes让很多容器在一个主机上运行变得非常简单,最大程度地利用现有资源,减少了服务器的个数,从而降低了成本。但是运维一个这样的集群需要投入很大的精力,如果有更方便的云服务能帮你做到这些也是一个不错的选择,比如灵雀云。
原文链接:/one-year-using-kubernetes-production-lessons-learned
灵雀云 ∣释放云的无限潜能长按,识别二维码,加关注
扫描二维码下载开发者头条
使用《开发者头条》客户端,拥有更好的阅读体验。
南京无印信息技术有限公司 版权所有 苏ICP备号-2
扫描二维码下载开发者头条
我已安装了开发者头条 App,7 天内不再显示该广告AWS EC2服务器配置负载均衡器步骤:
1、普通负载均衡器
至少两台EC2实例,这里以Centos6.7系统为例
启动之后先安装个apache的httpd服务器默认80端口,或者使用其他服务器和端口也行,配置负载均衡器的时候需要用到这个端口
iptables防火墙开启80端口或者直接关闭防火墙
在/var/www/html里面新建个index.html文件,内容随意,注册实例到负载均衡器的时候会通过这个端口请求这个默认主页文件,请求得到实例才能注册成功
可以先使用
curl http://内网IP
telnet 内网IP 端口
来检查是不是成功,ELB会通过内网和实例通信
注意,AWS安全组的策略的入站规则必须包含HTTP,80端口
安全组相当于EC2服务器的防火墙,Amazon Linux系统只通过安全组来控制,其他例如Centos系统内部仍然自带防火墙和selinux
所以使用时需要注意安全组、系统防火墙和selinux
在EC2的控制台界面左边导航栏上选择负载均衡器
给个自定义名称,其他可以默认
安全组根据自己需要配置
这一步是HTTPS的负载均衡器配置使用的,所以直接默认
确认Ping的端口和路径没错就ok
之后的标签和审核看自己决定
启动之后,点击负载均衡器选项,在下面的描述选项卡可以看到几个实例正在服务,继续点击可以查看各个实例的状态,InService才是正常的
如果出现OutOfService状态的话请检查服务器内网IP、端口、防火墙、selinux、安全组策略、Apache服务器的状态来排查问题
2、HTTPS负载均衡器
首先需要创建SSL。
创建SSL证书:
Amazon提供的文档这部分写的太官方了,而且含有强烈的英文翻译成中文的那种感觉,读起来不要不要的。虽然按着他提供的步骤是能够正确创建的
但是还是稍微整理下把基本操作列出来,可以在看官方文档的过程中参看下提高效率。
官网文档地址:
Linux上(任意机器,甚至是Mac系统,只要能执行一下命令即可):
使用OpenSSL创建服务器证书(RSA加密方式):
openssl&genrsa&-out&my-private-key.pem&2048
根据my-private-key.pem创建CSR文件,过程会输入一些简要的信息:
openssl&req&-sha256&-new&-key&my-private-key.pem&-out&csr.pem
根据csr.pem创建自签名证书:
openssl&x509&-req&-days&365&-in&csr.pem&-signkey&my-private-key.pem&-out&my-certificate.pem
最后生成的文件有三个,分别是
(1)私有密钥my-private-key.pem
(2)包含简要信息的csr.pem
(3)最后的服务器证书my-certificate.pem
之后可以根据官网的步骤使用AWS CLI进行上传并验证,这里演示的是在创建HTTPS负载均衡器的时候上传服务器证书,所以创建SSL证书的部分就完成了。
创建HTTPS负载均衡器:
选择负载均衡器,点击创建之后不再保持默认设置
在监听器配置一栏点击添加,负载均衡器协议和实例协议均选择HTTPS,端口号默认443
选中启用高级VPC设置
在多出来的选择子网中按照要求选择子网,这里将两个可以用的子网都添加进去了
选择安全组,注意该安全组入站规则要有HTTPS的443端口
在第三部配置安全设置中,选择上传一个新的证书。
输入证书名称。
将之前生成的my-private-key.pem的内容全部复制到私有密钥中。
将my-certificate.pem的内容全部输入到公有密钥证书中。
由于使用的是自签名证书,所以不用填写证书链一格。
在选择密码的选项中,可以选择预定义的安全策略,也可以使用自定义。
选择使用后端证书的话,要按之前的步骤重新创建一个SSL证书,输入证书名和公有密钥证书即可。
之后的步骤和配置普通的负载均衡器一致。
HTTPS负载均衡器启动之后,如果出现实例无法注册的话,
仍然验证服务器内网IP、端口、防火墙、selinux、安全组策略、Apache服务器的状态来排查问题(注意增加了HTTPS的443端口)
或者参考官方的排错文档。
如果在审核启动之后出现
则是账号没有管理员权限,请联系管理员获得相应的权限。
最后使用ELB要注意预热的问题。&
默认aws上的&端口80/都是关闭的。如果网站需要公众访问,则需要先进行&ICP&备案。详情请见:https://forums.aws.csdn.net/thread.jspa?threadID=111&tstart=0
AWS论坛上客服的回复(隔了一天多的时间),解决无法通过外网访问服务器的问题,没有备案的话三个默认端口是关闭的。&
阅读(...) 评论()AWS发布了新的负载均衡器Application Load Balancer_Linux新闻_Linux公社-Linux系统门户网站
你好,游客
AWS发布了新的负载均衡器Application Load Balancer
作者:David Iffland ,译者 Rays
Amazon已经发布了其新的负载均衡器产品,。ALB是一种新型智能负载均衡器,对于那些运行基于HTTP的服务的用户来说,它可以显著地降低负载均衡的成本。
ALB是位于OSI模型第七层的负载均衡器,因此它能根据网络包的内容将该网络包路由到不同的后端服务。现有的负载均衡器多是位于OSI模型第四层的TCP/UDP均衡器。与这些均衡器不同的是,ALB将检查网络包的内容,并将该网络包发送给适当的服务。当前,ALB支持基于URL对路由流量定义多至十条的独立规则。
对于那些运行细粒度后端服务的用户而言,使用ALB是一种福利。有别于为每一种服务运行一个弹性负载均衡器,一个ALB就可以为多个后端服务均衡网络流量。例如,包含&/api&的URL和包含&/signup&的URL会被路由到不同的后端服务上。
在未来的更新中,ALB将非常有可能具有根据任意HTTP头信息进行路由的功能。来自Amazon的Jeff Barr暗示了这样的改进。他提到,&假以时日,我们计划为提供其它的路由方法。&
除了对标准HTTP路由的支持,ALB还支持WebSockets和HTTP/2。
在今年8月11日举办的上,Amazon CTO Werner Vogels指出,新负载均衡器是明显更好的:
我们从一些最早使用封闭测试版的用户那里所听到的是,ALB不仅比AWS原有的Classic Load Balancer更快,而且大家将会看到成本显著降低。通常能达到10%甚至更多。
当然,其它云服务提供商也已有类似的产品。微软的Azure提供了产品,Goole也提供了一种。
ALB已经可以与Auto Scaling、ECS、CloudFormation、CodeDeploy和Certificate Manager等其它AWS产品搭配使用,而与Elastic Beanstalk和AWS Config的集成正在实现中。原有的Elastic Load Balancer均衡器,现已更名为Classic Load Balancer,依然是可用的。可使用将现有的Classic Load Balancers迁移到ALB。
获取更多信息,可访问Barr的,了解如何设置新的ALB。
查看英文原文:
本文永久更新链接地址:
相关资讯 & & &
& (05月23日)
& (04月30日)
& (10月17日)
& (05月12日)
& (12/13/:46)
   同意评论声明
   发表
尊重网上道德,遵守中华人民共和国的各项有关法律法规
承担一切因您的行为而直接或间接导致的民事或刑事法律责任
本站管理人员有权保留或删除其管辖留言中的任意内容
本站有权在网站内转载或引用您的评论
参与本评论即表明您已经阅读并接受上述条款}

我要回帖

更多关于 cdn负载均衡的功能 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信