zoukankan      html  css  js  c++  java
  • Devstack配置负载均衡,负载均衡版本V2

    JmilkFan:minxihou的技术博文方向是 算法&Openstack自动化 ,写得很好,值得推荐。 : )

    目录

    本文为博主翻译文章,转载请注明出处Bob Hou: http://blog.csdn.net/minxihou
    负载均衡项目在openstack开源之后就一直在开发,早先neutron LBaaS V1的版本已经不在适用,现在使用的是LBaaS V2的版本。 LBaaS V2 API开发参照Octavia。

    阶段1:创建Devstack + 2个nova实例

    首先,创建一个至少8G内存16G磁盘空间的虚拟机,确保虚机更新(原文是: make sure it is updated,译者认为是需要yum update来更新组件。)安装git组件和任何你认为有用的开发组件。
    安装devstack

    gitclone https://git.openstack.org/openstack-dev/devstack
    cd devstack

    参照下列配置编辑你的local.conf文件

    [[local|localrc]]# Load the external LBaaS plugin.
    enable_plugin neutron-lbaas https://git.openstack.org/openstack/neutron-lbaas
    enable_plugin octavia https://git.openstack.org/openstack/octavia
    
    # ===== BEGIN localrc =====
    DATABASE_PASSWORD=password
    ADMIN_PASSWORD=password
    SERVICE_PASSWORD=password
    RABBIT_PASSWORD=password
    # Enable Logging
    LOGFILE=$DEST/logs/stack.sh.log
    VERBOSE=True
    LOG_COLOR=True
    SCREEN_LOGDIR=$DEST/logs
    # Pre-requisite
    ENABLED_SERVICES=rabbit,mysql,key
    # Horizon
    ENABLED_SERVICES+=,horizon
    # Nova
    ENABLED_SERVICES+=,n-api,n-crt,n-cpu,n-cond,n-sch
    # Glance
    ENABLED_SERVICES+=,g-api,g-reg
    # Neutron
    ENABLED_SERVICES+=,q-svc,q-agt,q-dhcp,q-l3,q-meta
    # Enable LBaaS v2
    ENABLED_SERVICES+=,q-lbaasv2
    ENABLED_SERVICES+=,octavia,o-cw,o-hk,o-hm,o-api
    # Cinder
    ENABLED_SERVICES+=,c-api,c-vol,c-sch
    # Tempest
    ENABLED_SERVICES+=,tempest
    # ===== END localrc =====

    运行stack.sh然后做完整性检查

    ./stack.sh
    . ./openrc
    
    neutron net-list  # should showpublic and private networks
    

    在nova中创建两个实例用作测试http服务器

    #create nova instances on private network
    nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node1
    nova boot --image $(nova image-list | awk '/ cirros-.*-x86_64-uec / {print $2}') --flavor 1 --nic net-id=$(neutron net-list | awk '/ private / {print $2}') node2
    nova list # should show the nova instances just created
    
    #add secgroup rules to allow ssh etc..
    neutron security-group-rule-create default --protocol icmp
    neutron security-group-rule-create default --protocol tcp --port-range-min 22 --port-range-max 22
    neutron security-group-rule-create default --protocol tcp --port-range-min 80 --port-range-max 80

    在创建的两个节点上每个节点配置一个简单的web服务器。使用ssh链接到每个实例中(用户名:“cirros”,密码:“cubswin”)

    MYIP=$(ifconfig eth0|grep'inet addr'|awk -F: '{print $2}'| awk '{print $1}')
    while true; do echo -e "HTTP/1.0 200 OK
    
    Welcome to $MYIP" | sudo nc -l -p 80 ; done&

    阶段2:创建你的负载均衡

    neutron lbaas-loadbalancer-create --name lb1 private-subnet
    neutron lbaas-loadbalancer-show lb1  # Wait for the provisioning_status to be ACTIVE.
    neutron lbaas-listener-create --loadbalancer lb1 --protocol HTTP --protocol-port 80 --name listener1
    sleep 10  # Sleep since LBaaS actions can take a few seconds depending on the environment.
    neutron lbaas-pool-create --lb-algorithm ROUND_ROBIN --listener listener1 --protocol HTTP --name pool1
    sleep 10
    neutron lbaas-member-create  --subnet private-subnet --address 10.0.0.3 --protocol-port 80 pool1
    sleep 10
    neutron lbaas-member-create  --subnet private-subnet --address 10.0.0.5 --protocol-port 80 pool1

    请注意在上面命令行中的“10.0.0.3”和“10.0.0.5”IP地址是你创建出来的两个实例机器的IP地址(这个以实际你创建出来虚机的IP地址为准)。创建出来负载均衡的VIP会在lbass-loadbalancer-create中以vip_address的开头形式报告出来。一个快速检测LB的方法是使用curl指令测试这个LB的IP,这个指令应该会交替的访问实际两个虚机节点的IP地址。(从配置文件中不难看出是使用的round robin轮询方式来访问)
    译者注: 在linux中curl是一个利用URL规则在命令行下工作的文件传输工具。

    原文地址:http://docs.openstack.org/developer/devstack/guides/devstack-with-lbaas-v2.html

    相关阅读:

  • 相关阅读:
    jQuery EasyUI API 中文文档 可调整尺寸
    jQuery EasyUI API 中文文档 链接按钮(LinkButton)
    jQuery EasyUI API 中文文档 手风琴(Accordion)
    jQuery EasyUI API 中文文档 表单(Form)
    jQuery EasyUI API 中文文档 组合(Combo)
    jQuery EasyUI API 中文文档 布局(Layout)
    jQuery EasyUI API 中文文档 拆分按钮(SplitButton)
    jQuery EasyUI API 中文文档 菜单按钮(MenuButton)
    jQuery EasyUI API 中文文档 搜索框
    jQuery EasyUI API 中文文档 验证框(ValidateBox)
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13310786.html
Copyright © 2011-2022 走看看