本文為部落客翻譯文章,轉載請注明出處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
git clone 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 show public 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 --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 --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 --port-range-max
neutron security-group-rule-create default --protocol tcp --port-range-min --port-range-max
在建立的兩個節點上每個節點配置一個簡單的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\r\n\r\nWelcome to $MYIP" | sudo nc -l -p ; 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