EC2里面有个很重要的功能就是Elastic Load Balancer,配合Auto Scaling和RDS的Multip-AZ使用,可以实现非常经济高效的高可用的结构。


我们先看看最基本的一个ELB结构。ELB根据DNS以轮换的方式对用户的请求实现数据分流和高可用。

AWS - Elastic load Balance的创建使用 (上)_第1张图片

以下的实验设计来自amazon的企业培训教案(豆子在网上找到的,还不错)。这里我会创建2个Web Server,并通过user data自动配置bootstrap的shell脚本。这样的好处是我不需要在搭建完服务器之后再手动的配置一遍了。


创建EC2的实例过程很简单,在第三步的时候需要在高级里面添加一些Shell脚本。该命令会从指定的url下载一个sh脚本并执行


AWS - Elastic load Balance的创建使用 (上)_第2张图片

这个sh的内容就是自动安装LAMP的相关程序,并在apache的目录下解压预先配置的一些php文件


AWS - Elastic load Balance的创建使用 (上)_第3张图片


虚拟机创建好了


wKiom1PgDwHDUVQEAABjbIWnttI653.png


登录看看脚本执行没有,可以看见,examplefiles.zip已经解压,这样当我们打开该服务器的公网地址或者DNS的时候,会自动加载index.php 文件,并显示一些我们希望看见的数据作为对比


AWS - Elastic load Balance的创建使用 (上)_第4张图片


看看index.php文件是什么内容


AWS - Elastic load Balance的创建使用 (上)_第5张图片

在浏览器上面输入EC2的DNS以后可以看见该虚拟机的实例号,AZ区域和CPU的负荷

AWS - Elastic load Balance的创建使用 (上)_第6张图片

AWS - Elastic load Balance的创建使用 (上)_第7张图片


现在,我们来创建一个ELB

AWS - Elastic load Balance的创建使用 (上)_第8张图片


输入名字和子网,这里我们只需要简单的80端口

AWS - Elastic load Balance的创建使用 (上)_第9张图片

Ping Protocol是用来做健康检查的,每隔5秒,会自动Ping 80端口确认,注意Ping Path 我指向的是/,这个会指向web server的默认的主页进行查询, 不管主页是叫做index.html或者其他任何名字


AWS - Elastic load Balance的创建使用 (上)_第10张图片

配置Security group

AWS - Elastic load Balance的创建使用 (上)_第11张图片

把我们之前配置的2个Web Server加入ELB

AWS - Elastic load Balance的创建使用 (上)_第12张图片


最后确认一下即可

AWS - Elastic load Balance的创建使用 (上)_第13张图片

这样就创建好了。注意他的Port Configuration,ELB有点类似代理服务器或者NAT服务器,所以80端口进入他,并转发到集群里服务器的80端口

wKioL1PgEB-CB-VKAABMitujfbE126.png

查看一下描述,因为他的名字很长,可以通过CNAME来创建一个简单好记的名字。

AWS - Elastic load Balance的创建使用 (上)_第14张图片

状态表面已经是InService,准备就绪


AWS - Elastic load Balance的创建使用 (上)_第15张图片

最后来测试一下,输入ELB的URL,每次刷新,都会指向不同的Web Server实现分流


AWS - Elastic load Balance的创建使用 (上)_第16张图片

AWS - Elastic load Balance的创建使用 (上)_第17张图片


我们还可以通过cloudwatch来检测ELB的Metric参数

AWS - Elastic load Balance的创建使用 (上)_第18张图片



这样一个基本的ELB就实现了。


下一篇博客我们来看看如何配合Auto Scaling实现在不同负载的情况下,虚拟机如何动态的自动创建和删除。