VMware Integrated OpenStack 3.0 或 3.1 支持 LBaaS v2.0。默认情况下,完成 VMware Integrated OpenStack 安装或升级过程后会启用 LBaaS v2.0。

开始之前

注:

VMware Integrated OpenStack 不支持 LBaaS v1.0。

该任务仅适用于使用 NSX 部署的 VMware Integrated OpenStack

关于此任务

该任务包含创建运行状况监控并将其与包含 LBaaS 服务器实例的 LBaaS 池关联起来。运行状况监控是一种 Neutron 服务,可检查实例是否仍在指定协议端口上运行。

过程

  1. 使用 SSH 登录到 VMware Integrated OpenStack Manager。
  2. 切换到 root 用户。
    sudo su -
  3. 启用 LBaaS v2.0。
    viocli lbaasv2-enable 

    选项

    说明

    -d DEPLOYMENT

    表示 VMware Integrated OpenStack 部署的名称。

  4. VMware Integrated OpenStack Manager,使用 SSH 登录 Neutron 节点。
  5. 切换到 root 用户。
    sudo su -
  6. 创建独占路由器。
    neutron router-create --router_type=exclusive <router name>
  7. 将子网附加到新路由器。
    neutron net-create <network name>
    neutron subnet-create <network name> <CIDR value> --name <subnet name>
    neutron router-interface-add <router name or id> <subnet name or id>
  8. 创建负载平衡器。

    此步骤包括创建负载平衡器、创建侦听器和创建负载平衡器池。

    1. 创建负载平衡器,指定负载平衡 VIP 子网。
      neutron lbaas-loadbalancer-create --name LOAD_BALANCER_1_NAME <vip-subnet-id>

      参数

      说明

      name

      提供新负载平衡器的名称。

      vip-subnet-id

      指定新负载平衡器的 VIP 子网。只有该子网中的成员可以添加到池中。

    2. 为新负载平衡器创建侦听器。
      neutron lbaas-listener-create \
      --loadbalancer LOAD_BALANCER_1_NAME \
      --protocol <protocol type> \
      --protocol-port <protocol port> 
      --name LISTENER_1_NAME

      参数

      说明

      loadbalancer

      指定您在上述子步骤中创建的负载平衡器。

      protocol type

      指定侦听器的协议类型。

      • TCP

      • HTTP

      • HTTPS

      protocol port

      指定协议端口。

      name

      提供新侦听器的名称。

    3. 创建 LBaaS 池。
      neutron lbaas-pool-create \
      --lb-algorithm <load balancing method> \
      --listener LISTENER_1_NAME \
      --protocol <protocol type> \
      --name LB_POOL_1

      参数

      说明

      lb-algorithm

      指定负载平衡方法:

      • IP_HASH

        根据每个数据包的源和目标 IP 地址哈希选择服务器。

      • LEAST_CONN

        根据服务器上现有连接数量将客户端请求分发给多个服务器。新连接将发送至连接最少的服务器。

      • ROUND_ROBIN

        根据每个服务器分配到的权重,依次使用各服务器。当服务器的处理时间保持均匀分布时,此过程是最顺畅、最公平的算法。

      • URI

        URI 左侧部分(问号前面)由运行中的服务器的总权重进行哈希和除法计算。结果指定接收请求的服务器,确保只要所有服务器均可用,请求始终定向至相同的服务器。

      listener

      指定您在上述子步骤中创建的侦听器。

      protocol

      为要使用的池成员指定协议。

      • TCP

      • HTTP

      • HTTPS

      name

      提供新池的名称。

  9. 为服务器和客户端创建实例。
    nova boot --image <image-uuid> --flavor <flavor> <server 1 name>
    nova boot --image <image-uuid> --flavor <flavor> <server 2 name>
    nova boot --image <image-uuid> --flavor 1 <client name>
  10. 将服务器实例添加到创建的 LBaaS 池中。
    neutron lbaas-member-create  \
    --subnet <subnet-id> --address <server 1 IP> \
    --protocol-port 80 <pool name>
    
    neutron lbaas-member-create  \
    --subnet <subnet-id> --address <server 2 IP> \
    --protocol-port 80 <pool name>
  11. 设置运行状况监控。
    neutron lbaas-healthmonitor-create \
    --delay DELAY_IN_SECONDS --type [HTTP | TCP] --max-retries NUMBER \
    --timeout TIMEOUT_IN_SECONDS --pool LBAAS_POOL

    参数

    说明

    delay

    将探查发送给成员的时间(以秒为单位)。

    type

    预定义的运行状况监控类型之一。指定 HTTP 或 TCP。

    max-retries

    成员状态更改为“非活动”之前的连接失败次数。

    timeout

    监控在超时之前等待建立连接的最大秒数。

    注:

    超时值必须小于延迟值。

    pool

    指定要监控的 LBaaS 池。

  12. (可选) : 发送测试请求以验证 LBaaS 配置。
    1. 创建测试 index.html 文件。
    2. 从相同的目录,运行简单的请求。
      # sudo python -m SimpleHTTPServer 80
    3. 登录到客户端实例。
    4. 运行 wget 命令,查看请求是否已在池中的两个服务器之间正确进行负载平衡。
       # wget -O - http://<vip-ip>