
# 实现多个Web应用的负载均衡
#### 操作场景
弹性负载均衡可以配置基于域名和路径的转发策略，将来自不同域名或者不同路径的请求转发到不同的后端服务器组处理。
假如您有两个应用，需要分别部署在两个弹性云服务器ECS01和ECS02上，对外提供同一个访问域名，可以根据域名下不同的路径（/ELB01/和/ELB02/）来决定最终访问的应用。
图1两个应用负载分发架构图   
![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001961053288.png)
#### 操作流程
配置流程如[图2]所示：
图2弹性负载均衡负载多个应用   
![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000002017539101.png)
| 操作步骤                                                                            | 说明                                                                                                                                                                                                                                                                                                                |
|:---|:---|
| [准备工作]                                       | 使用云服务前，您需要注册华为账号并开通华为云、完成实名认证、为账户充值。                                                                                                                                                                                                                                                                              |
| [步骤一：创建VPC和ECS]                              | - 创建一个IPv4网段的VPC，并从VPC中划分一个子网。 VPC的IPv4网段：192.168.0.0/16，子网IPv4网段：192.168.0.0/24   - 基于已有的VPC和子网，购买两个ECS实例。   |
| [步骤二：搭建后端服务]  | 在两个ECS实例上分别部署Nginx，使访问ECS01时返回标题为"Welcome to ELB test page one!"的页面，访问ECS02时返回标题为"Welcome to ELB test page two!"的页面。                                                                                                                                                                                              |
| [步骤三：新建负载均衡器] | 创建一个弹性规格的ELB实例，用于接收来自客户端的请求并将请求分发至后端服务器。                                                                                                                                                                                                                                                                          |
| [步骤四：配置安全组规则] | 在后端服务器的安全组中，放通ELB后端子网所属网段。                                                                                                                                                                                                                                                                                        |
| [步骤五：添加监听器]     | 为ELB实例配置HTTP监听器，监听器接收客户端请求并将请求分发至后端服务器组内的服务器。                                                                                                                                                                                                                                                                     |
| [步骤六：添加转发策略]   | 在HTTP监听器上配置基于域名和URL的转发策略，监听器根据转发策略转发请求至不同的后端服务器组。                                                                                                                                                                                                                                                                 |
| [步骤七：验证业务]      | 访问ELB实例对应的域名，验证是否实现访问到不同的后端服务器。                                                                                                                                                                                                                                                                                   |
   
 #### 准备工作
在使用弹性负载均衡服务前，您需要注册华为账号并开通华为云、完成实名认证、为账户充值。
- [注册华为账号并开通华为云](https://support.huaweicloud.com/usermanual-account/account_id_001.html)。
- 参考"[实名认证](https://support.huaweicloud.com/usermanual-account/zh-cn_topic_0077914254.html)"完成个人或企业账号实名认证。
- 您需要确保账户有足够金额，请参见"[如何给华为云账户充值](https://support.huaweicloud.com/usermanual-billing/bills-topic_30000002.html)"。
 
 #### 步骤一：创建VPC和ECS
您需要根据业务需求规划ELB实例的区域，创建VPC和后端服务器ECS实例等。确保ECS实例的可用区和ELB实例的可用区相同，并且ECS实例与ELB实例属于同一个VPC。
1. 创建VPC。 本示例中的VPC相关配置如下所示，仅供参考，更多详细设置请参考[创建VPC](https://support.huaweicloud.com/usermanual-vpc/zh-cn_topic_0013935842.html)。
   图3VPC的基本信息   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001991359929.png)
   图4VPC的子网设置   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001991371805.png)
   单击查看本示例VPC的创建配置
   - VPC的基本信息
     
     | 参数       | 示例             | 说明                                 |
     |:---|:---|:---|
     | 区域       | 华北-北京四         | 请您选择靠近业务的区域，VPC需要和ECS、EIP位于同一个区域内。 |
     | 名称       | vpc-A          | 请您按需设置VPC名称。                       |
     | IPv4网段   | 192.168.0.0/16 | VPC的IPv4地址范围。                      |
     | 企业项目     | default        | 请您将VPC加入已有的企业项目内，支持按企业项目维度管理资源。    |
     | 高级配置（可选） | -              | 本示例保持系统默认。                         |
        
     
   
   - VPC的子网设置
     
     | 参数       | 示例             | 说明                                                                                                                                                                      |
     |:---|:---|:---|
     | 可用区      | 可用区1           | 一个区域内分为多个可用区，不同可用区之间物理隔离，内网互通。请您任意选择一个可用区，一个VPC的多个子网可以位于不同可用区，不影响通信。 ECS可以和VPC子网位于不同可用区，比如位于可用区1的云服务器，可以使用可用区3的子网。 |
     | 子网名称     | subnet-elb     | 请您按需设置子网称。                                                                                                                                                              |
     | 子网IPv4网段 | 192.168.0.0/24 | 子网的IPv4地址范围，子网网段需要从VPC的IP网段中划分。                                                                                                                                         |
     | 子网IPv6网段 | 不开启            | 是否自动为子网分配IPv6地址。                                                                                                                                                        |
     | 关联路由表    | 默认             | 默认路由表中已预置系统路由，确保同一个VPC内不同子网之间的网络互通。                                                                                                                                     |
     | 高级配置（可选） | -              | 本示例保持系统默认。                                                                                                                                                              |
        
     
     
2. 创建两台ECS。 本示例中的ECS相关配置仅供参考，更多详细设置请参考[快速创建ECS](https://support.huaweicloud.com/qs-ecs/ecs_01_0102.html)。
   单击查看本示例中两台ECS的网络配置
   - ECS的网络配置信息
     
     | 参数     | 示例                                                                                                                                                                                                                                                                                                   | 说明                                     |
     |:---|:---|:---|
     | 名称     | - ECS01  - ECS02       | 两台ECS实例的名称。                            |
     | 区域     | 华北-北京四                                                                                                                                                                                                                                                                                               | 与VPC的区域保持一致。                           |
     | 可用区    | - 可用区1  - 可用区2        | 两台ECS实例分别部署在不同的可用区。                    |
     | 网络     | - vpc-A  - subnet-elb        | 选择已创建的虚拟私有云和子网，vpc-A和subnet-elb。       |
     | 弹性公网IP | - EIP01  - EIP02   | 购买ECS时，同步购买EIP，保证ECS01和ECS02分别绑定一个EIP。 |
        
     
     
 
 #### 步骤二：搭建后端服务
在ECS实例上部署Nginx，编辑HTML页面，使访问ECS01时返回一个标题为"Welcome to ELB test page one!"的页面，访问ECS02时返回一个标题为"Welcome to ELB test page two!"的页面。
1. [登录弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
2. 安装nginx。 此处以CentOS 7.6版本的操作系统为例。
   单击查看nginx部署命令
   1. 使用wget命令，下载对应当前操作系统版本的Nginx安装包。
      ```
      wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
      ```
      
   
   2. 执行以下命令，建立Nginx的yum仓库。此处以CentOS 7.6版本的操作系统为例。
      ```
      rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm
      ```
      
   
   3. 执行以下命令，安装Nginx。
      ```
      yum -y install nginx
      ```
      
   
   4. 执行以下命令，启动Nginx并设置开机启动。
      ```
      systemctl start nginx
      systemctl enable nginx
      ```
      
   
   5. 在任意终端使用浏览器访问"http://*ECS的公网IP地址* "，显示如下页面，说明nginx安装成功。
      图5nginx安装成功   
      ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001894152713.png) 
     
3. 修改ECS实例ECS01的html页面。
   Nginx的默认根目录是"/usr/share/nginx/html"，移动并修改"index.html"页面，用来标识到ECS01的访问。
   单击查看ECS01页面部署命令
   1. 依次执行以下命令，创建"ELB01"目录，并复制一个"index.html"文件到"ELB01"目录下。
      ```
      mkdir /usr/share/nginx/html/ELB01
      cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB01/
      ```
      
   
   2. 执行以下命令打开文件"index.html"。
      ```
      vim /usr/share/nginx/html/ELB01/index.html
      ```
      
   
   3. 按**i**键进入编辑模式。
   
   4. 修改打开的"index.html"文件。
      修改文件\<body\>标签之间内容，涉及修改部分如下所示：
      ```
      ...
          <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>
      ```
      
   
   5. 按**Esc** 键退出编辑模式，并输入**:wq**保存后退出。
     
4. 参考步骤[3]修改ECS实例ECS02的"index.html"文件，用"page two"来标识到ECS02的访问。
   单击查看ECS02页面部署命令
   1. 依次执行以下命令，创建"ELB02"目录，并复制一个"index.html"文件到"ELB02"目录下。
      ```
      mkdir /usr/share/nginx/html/ELB02
      cp /usr/share/nginx/html/index.html /usr/share/nginx/html/ELB02/
      ```
      
   
   2. 执行以下命令打开文件"index.html"。
      ```
      vim /usr/share/nginx/html/ELB02/index.html
      ```
      
   
   3. 按**i**键进入编辑模式。
   
   4. 修改打开的"index.html"文件。
      修改文件\<body\>标签之间内容，涉及修改部分如下所示：
      ```
      ...
          <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>
      ```
      
   
   5. 按**Esc** 键退出编辑模式，并输入**:wq**保存后退出
     
5. 使用浏览器分别访问"http://*ECS01的EIP地址* /ELB01/"和"http://*ECS02的EIP地址* /ELB02/"，验证nginx服务。
   如果页面显示修改后的html页面，说明nginx部署成功。
   - ECS01的html页面：
     图6ECS01的nginx部署成功页面   
     ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001894032257.png) 
   
   - ECS02的html页面：
     图7ECS02的nginx部署成功页面   
     ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001847753216.png) 
    
 
 #### 步骤三：新建负载均衡器
在当前场景中，ELB需要创建并绑定弹性公网IP 。ELB绑定EIP仅作为本次示例中通过ELB访问后端业务所需，用户实际使用时，需要根据自身业务规划确定ELB是否绑定EIP。
1. 进入[购买弹性负载均衡页面](https://console.huaweicloud.com/vpc/?locale=zh-cn#/elb/create/custom)。
2. 在"购买弹性负载均衡器"界面，根据界面提示选择负载均衡器的基础配置。
   本示例中的基础配置参数如[图8]所示。
   图8负载均衡器的基础配置   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001878245064.png)
   单击展开负载均衡器的基础配置
   - 负载均衡器的基础配置
     
     | 参数   | 取值样例                                                                                                                                                                                                                                                                                      | 说明                                                                                                                                                                                     |
     |:---|:---|:---|
     | 实例类型 | 独享型                                                                                                                                                                                                                                                                                       | 本文选择独享型负载均衡，资源独享，性能不受其它实例的影响。                                                                                                                                                          |
     | 计费模式 | 按需计费                                                                                                                                                                                                                                                                                      | 独享型负载均衡器的收费类型。                                                                                                                                                                         |
     | 区域   | -                                                                                                                                                                                                                                                                                         | 不同区域的资源之间内网不互通，本文选择与弹性云服务器的区域保持一致。                                                                                                                                                     |
     | 可用区  | - 可用区1  - 可用区2   | 如果业务需要考虑容灾能力，建议选择多个可用区，实例对应的最高性能规格会随可用区数量加倍。 说明： 当您为智能边缘小站购买弹性负载均衡时，可用区选择"边缘可用区"。 |
     | 名称   | elb-test                                                                                                                                                                                                                                                                                  | 负载均衡器的名称。                                                                                                                                                                              |
     | 企业项目 | default                                                                                                                                                                                                                                                                                   | 企业项目是一种云资源管理方式，将弹性负载均衡加入已有的企业项目内，支持修改。                                                                                                                                                 |
        
     
     
3. 选定负载均衡器的基础配置后，负载均衡器的实例规格本文选择"弹性规格" ，如[图9]所示。
   图9负载均衡器的实例规格   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001999108756.png) 
4. 选定负载均衡器的基础配置后，请根据界面提示选择负载均衡器的网络配置和弹性公网IP，配置参数如[图10]所示。
   图10负载均衡器的网络配置   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001878088360.png)
   单击展开负载均衡器的网络配置
   - 负载均衡器的网络配置
     
     | 参数     | 取值样例       | 说明                                                                                                                                                                                                   |
     |:---|:---|:---|
     | 网络类型   | IPv4私网     | 弹性负载均衡的网络类型，本文选择"IPv4私网"。 负载均衡器通过IPv4私网IP处理私网请求。 弹性负载均衡绑定弹性公网IP地址后，支持通过弹性公网IP地址对外处理公网请求。 |
     | 所属VPC  | -          | 选择负载均衡器所属的虚拟私有云，本示例选择vpc-A。                                                                                                                                                                          |
     | 前端子网   | -          | 选择独享型负载均衡所在的子网，从该子网中分配ELB实例对外服务的IP私有地址和IPv6地址。                                                                                                                                                       |
     | IPv4地址 | 自动分配IP地址   | 选择从前端子网分配IPv4地址给负载均衡器的方式。                                                                                                                                                                            |
     | 后端子网   | 与前端子网保持一致。 | ELB实例将使用后端子网中的IP地址与后端服务器建立连接。                                                                                                                                                                        |
     | IP类型后端 | -          | 用户可以通过IP地址形式为负载均衡器添加当前VPC以外的后端服务器，本文选择暂不开启该功能。                                                                                                                                                       |
     | **弹性公网IP配置**                                                                                                                                                                                                             |||
     | 弹性公网IP | 新创建        | 当网络类型勾选"IPv4公网"时，需要指定ELB绑定的弹性公网IP。                                                                                                                                                                   |
     | 线路     | 全动态BGP     | 选择新创建弹性公网IP的链路类型。                                                                                                                                                                                    |
     | 公网带宽   | 按流量计费      | 弹性公网IP使用的带宽类型，本文选择"按流量计费"，需指定带宽上限，按实际使用的出公网流量计费。                                                                                                                                                     |
     | 带宽大小   | 100        | 指定具体的公网带宽上限，带宽范围：1-300 Mbit/s。                                                                                                                                                                       |
        
     
     
5. 您可以单击![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000002035385977.png)，展开折叠的高级配置区域，为负载均衡器添加描述和标签，本文保持默认设置。
6. 单击"立即购买"。
7. 确认配置信息，单击"去支付"。
8. 创建完成后，在"负载均衡器"界面，选择对应的区域即可看到新建的负载均衡器。
 
 #### 步骤四：配置安全组规则
为了确保负载均衡器与后端服务器进行正常通信和健康检查正常，添加后端服务器后必须检查后端服务器所在的安全组规则和后端服务器所在子网的网络ACL规则。
- 后端服务器的安全组规则必须添加允许源地址为ELB后端子网所属网段的入方向规则，以确保健康检查请求和业务请求可以访问后端服务器。默认情况下，ELB后端子网与ELB所在子网一致。
- 网络ACL为子网级别的可选安全层，若后端服务器的子网关联了网络ACL规则，后端服务器的子网网络ACL规则必须添加允许源地址为ELB后端子网所属网段的入方向规则。
配置安全组与网络ACL规则详情请参见[后端服务器配置安全组（独享型）](https://support.huaweicloud.com/usermanual-elb/elb_ug_hd_0007.html)。
本示例添加的安全组放通规则请见[表1]。
 表1放通后端服务器的安全组 
| 方向  | 策略 | 类型   | 协议端口    | 源地址/目的地址           | 描述                            |
|:---|:---|:---|:---|:---|:---|
| 入方向 | 允许 | IPv4 | TCP: 80 | 源地址：192.168.0.0/24 | 用于外部请求访问ECS，允许流量流入安全组内的ECS。   |
| 出方向 | 允许 | IPv4 | 全部      | 目的地址：0.0.0.0/0     | 用于安全组内ECS访问外部，允许流量从安全组内ECS流出。 |
   
 #### 步骤五：添加监听器
负载均衡监听器通过指定的协议和端口进行流量转发。同时监听器将根据健康检查的配置自动检查其后端服务器的运行状况。如果发现某台服务器运行不正常，则会停止向该服务器发送流量，并重新将流量发送至正常运行的服务器。
1. 在弹性负载均衡列表页，单击需要添加监听器的负载均衡名称"elb-test"。
2. 单击"添加监听器"，配置监听器参数参见[表2]。
    表2独享型负载均衡配置监听器参数说明 
   | 参数      | 示例       | 说明                                                                                                   |
   |:---|:---|:---|
   | 名称      | listener | 监听器名称。                                                                                               |
   | 前端协议    | HTTP     | 客户端与负载均衡监听器建立流量分发连接的协议。                                                                              |
   | 前端端口    | 80       | 客户端与负载均衡监听器建立流量分发连接的端口。                                                                              |
   | 重定向     | -        | 用于将HTTP监听的流量转发到HTTPS监听器。 本文默认关闭。                |
   | 访问控制    | 允许所有IP访问 | 支持对特定IP地址的访问请求进行控制，更多信息请参见[访问控制策略](https://support.huaweicloud.com/usermanual-elb/elb_03_0003.html)。 |
   | 获取客户端IP | -        | 后端服务器可以获取到客户端的真实IP地址。 独享型负载均衡默认开启此功能，且不可关闭。       |
   | 高级转发策略  | -        | 开启高级转发策略功能之后，支持更为丰富的转发规则和转发动作。 本文保持默认开启。        |
      
   
3. 保持"高级配置"参数默认取值不变，单击"下一步：配置后端分配策略"，选择"新创建"后端服务器组。 参数"分配策略类型"选择"加权轮询算法"，其他参数保持默认选项。
   
4. 单击"下一步：添加后端服务器"，添加后端服务器。
   - 后端服务器需勾选"ECS01"和"ECS02"。
   
   - 业务端口：业务所使用的端口，示例为"80"。
    
5. 为后端服务器组配置健康检查参数，本文保持默认健康检查参数设置不变。
6. 单击"下一步：确认配置"，确认无误后，单击"提交"。
 
 #### 步骤六：添加转发策略
本文以负载均衡器转发客户端的HTTP请求配置为例。在HTTP监听器上配置基于域名和路径的转发策略，将来自域名"www.example.com"+路径"/ELB01/"的请求转发到ECS"ELB01"所在的后端服务器组处理，将来自域名 "www.example.com"+路径"/ELB02/"的请求转发到ECS"ELB02"所在的后端服务器组处理。
1. 在监听器的列表页，新添加监听器所在行，单击"添加/编辑转发策略"。
   配置转发策略如[图11]所示，参数设置详情请参见[表3]。
   图11配置转发策略   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001894032265.png)
    表3转发策略示例 
   | 转发策略设置 | 描述                                                                                                    |
   |:---|:---|
   | 名称     | 转发策略的名称，示例为"forwarding_policy-ELB01"。                                                                 |
   | 如果转发规则 | 域名：触发转发的域名，示例为"www.example.com"。 路径：触发转发的路径，匹配方式选择"精确匹配"，示例路径为"/ELB01/"。 |
   | 然后转发动作 | 选择"转发至后端服务器组"。                                                                                        |
      
   
2. 为转发策略forwarding_policy-ELB01创建新的后端服务器组。
   1. 在"转发至后端服务器组"右侧的下拉框中，单击"创建后端服务器组"。
   
   2. 在"配置后端分配策略"阶段，修改后端服务器组名称为"server_group-ELB01"， 其他参数保持默认不变。
      
   
   3. 单击"下一步"，在"添加后端服务器"阶段，单击下方"添加云服务器"。
    
3. 勾选需要添加的云服务器ECS01，设置业务端口为80，单击"完成"。
4. 重复执行[1]\~[3]，添加另一条转发策略、创建后端服务器组并添加ECS02。
 
 #### 步骤七：验证业务
负载均衡器配置完成后，可通过访问ELB实例对应的域名以及指定的URL，验证是否实现访问到不同的后端服务器。
1. 修改本地PC的"C:\\Windows\\System32\\drivers\\etc\\hosts"文件，将域名映射到创建的ELB实例的EIP上。
   ELB实例的EIP请在负载均衡器的基本信息界面查看。
   图12本地PC的hosts文件   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001847753224.png) 
2. 打开"开始"菜单，输入cmd命令，打开命令行窗口。
3. 执行以下命令测试域名映射ELB实例的EIP是否成功。
   ```
   ping www.example.com
   ```
   如果有回复数据包，则说明域名映射成功。
   
4. 使用浏览器访问"http://www.example.com/ELB01/"。
   显示如下页面，说明本次访问请求被ELB实例转发到弹性云服务器"ECS01"，"ECS01"正常处理请求并返回请求的页面。
   图13访问到ECS01   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001847911928.png)
   ![](https://support.huaweicloud.com/qs-elb/public_sys-resources/note_3.0-zh-cn.png)
   "ELB01/"表示访问的是名为"ELB01"的默认目录，"ELB01"表示访问的是名为"ELB01"的文件。所以，此处"ELB01"后面的"/"符号必须保留。
   
5. 使用浏览器访问"http://www.example.com/ELB02/"。
   显示如下页面，说明本次访问请求被ELB实例转发到弹性云服务器"ECS02"，"ECS02"正常处理请求并返回请求的页面。
   图14访问到ECS02   
   ![](https://support.huaweicloud.com/qs-elb/zh-cn_image_0000001894152725.png) 
 
