EC2里面有个很重要的功能就是Elastic Load Balancer,配合Auto Scaling和RDS的Multip-AZ使用,可以实现非常经济高效的高可用的结构。
我们先看看最基本的一个ELB结构。ELB根据DNS以轮换的方式对用户的请求实现数据分流和高可用。
以下的实验设计来自amazon的企业培训教案(豆子在网上找到的,还不错)。这里我会创建2个Web Server,并通过user data自动配置bootstrap的shell脚本。这样的好处是我不需要在搭建完服务器之后再手动的配置一遍了。
创建EC2的实例过程很简单,在第三步的时候需要在高级里面添加一些Shell脚本。该命令会从指定的url下载一个sh脚本并执行
这个sh的内容就是自动安装LAMP的相关程序,并在apache的目录下解压预先配置的一些php文件
虚拟机创建好了
登录看看脚本执行没有,可以看见,examplefiles.zip已经解压,这样当我们打开该服务器的公网地址或者DNS的时候,会自动加载index.php 文件,并显示一些我们希望看见的数据作为对比
看看index.php文件是什么内容
在浏览器上面输入EC2的DNS以后可以看见该虚拟机的实例号,AZ区域和CPU的负荷
现在,我们来创建一个ELB
输入名字和子网,这里我们只需要简单的80端口
Ping Protocol是用来做健康检查的,每隔5秒,会自动Ping 80端口确认,注意Ping Path 我指向的是/,这个会指向web server的默认的主页进行查询, 不管主页是叫做index.html或者其他任何名字
配置Security group
把我们之前配置的2个Web Server加入ELB
最后确认一下即可
这样就创建好了。注意他的Port Configuration,ELB有点类似代理服务器或者NAT服务器,所以80端口进入他,并转发到集群里服务器的80端口
查看一下描述,因为他的名字很长,可以通过CNAME来创建一个简单好记的名字。
状态表面已经是InService,准备就绪
最后来测试一下,输入ELB的URL,每次刷新,都会指向不同的Web Server实现分流
我们还可以通过cloudwatch来检测ELB的Metric参数
这样一个基本的ELB就实现了。
下一篇博客我们来看看如何配合Auto Scaling实现在不同负载的情况下,虚拟机如何动态的自动创建和删除。