负载均衡快速入门(进阶版)
操作场景
假如您有两个Web应用,需要部署在两个弹性云服务器(简称ECS)上。对外提供同一个访问域名“www.example.com”,根据不同的URL(/ELB01/和/ELB02/)来决定需要访问的应用。
负载均衡可以配置基于域名和URL的转发策略,将来自不同域名或者不同URL的请求转发到不同的后端服务器组处理。此功能目前仅支持协议类型为HTTP、HTTPS的监听器。
本文以HTTP转发为例,通过配置ELB的转发策略,实现基于访问同一个域名下的不同的URL,ELB实例根据URL将访问请求转发到不同的后端服务器组进行处理。
前提条件
为了确保负载均衡器与后端服务器进行正常通信和健康检查正常,添加后端服务器后必须检查后端服务器所在的安全组规则和网络ACL规则。
流量经共享型ELB转到后端服务器以后,源IP会被转换为100.125.0.0/16的IP。
- 后端服务器的安全组规则必须配置放行100.125.0.0/16网段。
- 网络ACL规则为子网级别的可选安全层,若ELB的后端子网关联了网络ACL,网络ACL规则必须配置允许源地址为ELB后端子网所属网段。
若共享型ELB实例开启“获取客户端IP”功能,共享型ELB四层监听器转发的流量将不受安全组规则和网络ACL限制,安全组规则和网络ACL规则均无需额外放通。建议您使用监听器的访问控制功能对访问IP进行限制。
步骤一:创建弹性云服务器
负载均衡只负责流量转发,不具备处理请求的能力。因此,需要通过ECS实例处理用户的请求。
在当前场景中,弹性云服务器需要创建并绑定弹性IP (简称EIP),ECS绑定EIP仅作为本次示例中配置ECS后端业务所需。
- 登录管理控制台。
- 在管理控制台左上角单击图标,选择区域和项目。
- 单击页面左上角的,选择“计算 > 弹性云服务器”。
-
在“弹性云服务器”界面单击“创建弹性云服务器”,根据界面提示配置参数,并单击“立即申请”。
示例中使用的两台弹性云服务器的规格如下:表1 弹性云服务器规格 参数项
参数值
名称
ECS01、ECS02
操作系统
CentOS 7.2 64bit
CPU
2vCPUs
内存
4GB
系统盘
40GB
数据盘
100GB
公网带宽
5 Mbit/s
- 单击“提交”。
步骤二:搭建后端服务
在ECS实例上部署Nginx,编辑HTML页面,使访问ECS01时返回一个标题为“Welcome to ELB test page one!”的页面,访问ECS02时返回一个标题为“Welcome to ELB test page two!”的页面。
- 登录弹性云服务器。
- 安装nginx。
- 使用wget命令,下载对应当前操作系统版本的Nginx安装包。此处以CentOS 7.6版本的操作系统为例。
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行以下命令,建立Nginx的yum仓库。此处以CentOS 7.6版本的操作系统为例。
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
- 执行以下命令,安装Nginx。
yum -y install nginx
- 执行以下命令,启动Nginx并设置开机启动。
systemctl start nginx systemctl enable nginx
- 在任意终端使用浏览器访问“http://ECS的公网IP地址”,显示如下页面,说明nginx安装成功。
图1 nginx安装成功
- 使用wget命令,下载对应当前操作系统版本的Nginx安装包。此处以CentOS 7.6版本的操作系统为例。
- 修改ECS实例ECS01的html页面。
Nginx的默认根目录是“/usr/share/nginx/html”,移动并修改“index.html”页面,用来标识到ECS01的访问。
- 依次执行以下命令,创建“ELB01”目录,并复制一个“index.html”文件到“ELB01”目录下。
mkdir /usr/share/nginx/html/ELB01
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB01/
- 执行以下命令打开文件“index.html”。
- 按i键进入编辑模式。
- 修改打开的“index.html”文件。
修改文件内容,涉及内容修改部分如下所示:
... <body> <h1>Welcome to <strong>ELB</strong> test page one!</h1> <div class="content"> <p>This page is used to test the <strong>ELB</strong>!</p> <div class="alert"> <h2>ELB01</h2> <div class="content"> <p><strong>ELB test (page one)!</strong></p> <p><strong>ELB test (page one)!</strong></p> <p><strong>ELB test (page one)!</strong></p> </div> </div> </div> </body>
- 按Esc键退出编辑模式,并输入:wq保存后退出。
- 依次执行以下命令,创建“ELB01”目录,并复制一个“index.html”文件到“ELB01”目录下。
- 修改ECS实例ECS02的html页面。
Nginx的默认根目录是“/usr/share/nginx/html”,移动并修改“index.html”页面,用来标识到ECS02的访问。
- 依次执行以下命令,创建“ELB02”目录,并复制一个“index.html”文件到“ELB02”目录下。
mkdir /usr/share/nginx/html/ELB02
cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB02/
- 执行以下命令打开文件“index.html”。
- 按i键进入编辑模式。
- 修改打开的“index.html”文件。
... <body> <h1>Welcome to <strong>ELB</strong> test page two!</h1> <div class="content"> <p>This page is used to test the <strong>ELB</strong>!</p> <div class="alert"> <h2>ELB02</h2> <div class="content"> <p><strong>ELB test (page two)!</strong></p> <p><strong>ELB test (page two)!</strong></p> <p><strong>ELB test (page two)!</strong></p> </div> </div> </div> </body>
- 按Esc键退出编辑模式,并输入:wq保存后退出。
- 依次执行以下命令,创建“ELB02”目录,并复制一个“index.html”文件到“ELB02”目录下。
- 使用浏览器分别访问“http://ECS01的公网IP地址/ELB01/”和“http://ECS02的公网IP地址/ELB02/”,验证nginx服务。
如果页面显示修改后的html页面,说明nginx部署成功。
- ECS01的html页面:
图2 ECS01的nginx部署成功页面
- ECS02的html页面:
图3 ECS02的nginx部署成功页面
- ECS01的html页面:
步骤三:新建负载均衡器
在当前场景中,ELB需要创建并绑定弹性IP (简称EIP)。ELB绑定EIP仅作为本次示例中通过ELB访问后端业务所需。用户实际使用时,需要根据自身业务规划确定ELB是否绑定EIP。具体原则请参见公网和私网负载均衡器。
- 在管理控制台左上角单击图标,选择区域和项目。
- 单击页面左上角的,选择“网络 > 弹性负载均衡”。
- 在“负载均衡器”界面单击“创建弹性负载均衡”,根据界面提示配置参数。
- 单击“立即申请”。
- 确认配置信息,并单击“提交”。
- 创建完成后,在“负载均衡器”界面,选择对应的区域即可看到新建的负载均衡器。
步骤四:添加监听器
负载均衡监听器通过指定的协议和端口进行流量转发。同时监听器将根据健康检查的配置自动检查其后端云服务器的运行状况。如果发现某台云服务器运行不正常,则会停止向该云服务器发送流量,并重新将流量发送至正常运行的云服务器。
- 单击页面左上角的,选择“网络 > 弹性负载均衡”。
- 在“负载均衡器”界面,单击需要添加监听器的负载均衡名称。
- 切换到“监听器”页签,单击“添加监听器”。
- 配置监听器。
- 名称:监听器名称,示例为“listener-HTTP”。
- 前端协议:负载分发的协议,示例为“HTTP”。
- 前端端口:负载分发的端口,示例为“80”。
- 配置后端服务器组和开启健康检查,单击“完成”。
- 后端服务器组
- 名称:后端组名称,示例为“server_group-ELB”。
- 分配策略类型:负载均衡采用的算法,示例为“加权轮询算法”。
- 后端服务器组
步骤五:添加转发策略
- 在新添加的监听器下,单击操作列的“添加/编辑转发策略”。
- 单击“添加转发策略”,配置转发策略。
- 转发策略名称:示例为“forwarding_policy-ELB01”。
- 域名:触发转发的域名,仅支持精确域名。示例为“www.example.com”。
- URL:触发转发的URL,示例为“/ELB01/”。
- URL匹配规则:匹配的优先级为“精确匹配 > 前缀匹配 > 正则匹配”,示例为“精确匹配”。
- 动作:选择“转发至后端服务器组”。
- 后端服务器组:选择“创建后端服务器组”。
- 创建后端服务器组和开启健康检查,单击“完成”。
- 后端服务器组
- 名称:后端服务器组名称,示例为“server_group-ELB01”。
- 分配策略类型:负载均衡采用的算法,示例为“加权轮询算法”。
- 后端服务器组
- 单击新添加的转发策略下的后端服务器组名称,跳转至“后端服务器组”的基本信息页面。
- 切换至“后端服务器”页签,选择下方“云服务器”页签,并单击“添加”。
- 勾选需要添加的服务器,设置业务端口,单击“完成”。
- 服务器勾选“ECS01”。
- 业务端口:业务所使用的端口,示例为“80”。
- 重复执行以上步骤,添加另一条转发策略、创建后端服务器组,并添加ECS02。
验证负载均衡服务
负载均衡器配置完成后,可通过访问ELB实例对应的域名以及指定的URL,验证是否实现访问到不同的后端服务器。
- 修改本地PC的“C:\Windows\System32\drivers\etc\hosts”文件,将域名映射到创建的ELB实例的EIP上。
- 在本地PC的命令行窗口,执行以下命令测试域名映射ELB实例的EIP是否成功。
如有回复数据包,则说明域名映射成功。
- 使用浏览器访问“http://www.example.com/ELB01/”,显示如下页面,说明本次访问请求被ELB实例转发到弹性云服务器"ECS01","ECS01"正常处理请求并返回请求的页面。
图6 访问到ECS01
"ELB01/"表示访问的是名为“ELB01”的默认目录,"ELB01"表示访问的是名为“ELB01”的文件。所以,此处"ELB01"后面的“/”符号必须保留。
- 使用浏览器访问“http://www.example.com/ELB02/”,显示如下页面,说明本次访问请求被ELB实例转发到弹性云服务器"ECS02","ECS02"正常处理请求并返回请求的页面。
图7 访问到ECS02