2015年12月10日 星期四

RHEL 的 OpenStack (八)--管理 Neutron 網路服務

Cinder 區塊儲存服務

  • Neutron 提供 OpenStack 網路連結功能以及定址 OpenStack 網路環境
  • 每個租賃戶可以擁有多個私人網段,亦允許租賃戶有自己的IP定址策略,就算是IP位置重疊也無妨!
  • OpenStack 的連網技術使用 plug-in 觀念!
  • 其基本連網模式是利用 Linux VLANs 以及 IP tables 來進行網路連網的隔離運作!
  • OpenStack 網路元件的組成,是由幾個代理人來執行:
    1. L3 agent: 提供外部存取 OpenStack 上的實體物件!
    2. DHCP agent: 提供子網路內部連結!
    3. Metadata agent: 提供訊息服務
    4.  LBaaS agent: 提供負載平衡服務
    5. Open vSwitch agent: 管理 Open vSwitch plug-in
練習1:
  1. # source /root/keystonerc_admin
  2. # systemctl status neutron-openvswitch-agent
  3. # systemctl status neutron-dhcp-agent
  4. # systemctl status neutron-l3-agent
  5. # systemctl status neutron-metadata-agent
  6. # systemctl status neutron-lbaas-agent
  7. # systemctl status neutron-ovs-cleanup
  8. # neutron agent-list
  9. # keystone user-list --tenant services
  10. # keystone user-get neutron
  11. # keystone service-get neutron
  12. # keystone endpoint-get --service network
  13. # vim /etc/neutron/neutron.conf
    admin_tenant_name=services
    admin_user=neutron
    admin_password=xxxxx
    auth_host=10.1.1.1
    auth_port=35357
    auth_protocol=http
    auth_uri=http://10.1.1.1:5000/
    ...
  14. # crudini --get /etc/neutron/neutron.conf DEFAULT core_plugin
  15. # crudini --get /etc/neutron/plugin.ini ml2 mechanism_drivers
  16. # crudini --get /etc/neutron/plugin.ini ml2 tenant_network_types
  17. # crudini --get /etc/neutron/plugin.ini ml2_type_vlan metwork_vlan_ranges
  18. # cat /etc/sysconfig/network-scripts/ifcfg-br-ex
  19. # ovs-vsctl show
  20. # openstack-status

租賃戶設定連網服務
  • 網路設定步驟:先新增 router,接下來才是建立網路與子網路!
  • 若子網路是私人網段,則使用 neutron router-interface-add 增加一個介面到 router 上!
  • 利用新增一個 Gateway 方式,將 router 連到外部網路!
  • 外部網路可以指定一個浮動IP,連結上實體物件!
  • OpenStack 利用核心功能,提供網路名稱空間的使用!
  • 網路空間包含虚擬存取網路資源的抽象層網路功能,類似 port 與介面的概念!
  • ip 以及 ifconfig  指令無法顯示網路空間!使用 ip netns 以及 iproute 才能清楚了解網路架構!
  • 範例指令:
    • # source /root/keystonerc_admin
    • # neutron router --list
    • # ip netns exec qrouter-UUID  ip a
    • # ip netns exec qruoter-UUID ping  10.1.1.2

練習2:
  1. # source /root/keystonerc_myuser
  2. # keystone router-create router1
  3. # neutron net-create private
  4. # neurton subnet-create --name subpriv private 192.168.0.0/24
  5. # neutron router-interface-add router1 subpriv
  6. # neutron port-list
  7. # neutron router-gateway-set router1 public
  8. # neutron floatingip-create public
  9. # neutron floatingip-list 
佈署LBAAS
LBAAS: Load Balance as a Service: 讓 Neutron 可以將網路流量分散到兩部以上的實體!
分散的方式有下列:
  • Round-Robin:在多個實體之間,轉換要求!
  • Source IP:來自於同一個IP的請求,導到同一個實體!
  • Least Connections:將流量導到最少的連結實體上!
練習3:
  1. # source /root/keystonerc_admin
  2. # grep CONFIG_LBAAS_INSTALL /root/answers.txt
  3. # neutron agent-list
  4. # grep service_plugins /etc/neutron/neutron.conf
  5. # grep service_provider /etc/neutron/neutron.conf
  6. # crudini --get /etc/neutron/lbaas_agent.ini DEFAULT device_driver
  7. # glance image-create --name web --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/web.img
  8. # glance image-list
  9. # source /root/keystonerc_myuser
  10. # echo "web1" > /root/index1.html
  11. # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index1.html web1
  12. # echo "web2" > /root/index2.html
  13. # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index2.html web2
  14. # neutron lb-pool-create --name lb1 --lb-method ROUND_ROBIN --protocol HTTP --subnet subpriv
  15. # nova list
  16. # neutron lb-member-create --address 192.168.0.2 --protocol-port 80 lb1
  17. # neutron lb-member-create --address 192.168.0.3 --protocol-port 80 lb1
  18. # neutron lb-healthmonitor-create --deplay 5 --type HTTP --max-retries 3 --timeout 2
  19. # neutron lb-healthmonitor-associate <上項指令所列出的ID值> lb1
  20. # neutron lb-vip-create --name lb1-vip --protocol-port 80 --protocol HTTP --subnet subpriv lb1
  21. # neutron floatingip-create public
  22. # neutron floatingip-associate <上項指令所列出的id值> <上兩項指令所列出的port id值>
  23. # neutron lb-member-list
  24. # curl 10.1.1.2
  25. # curl 10.1.1.2
  26. 清除方式:
    # neutron lb-vip-delete lb1-vip # neutron lb-pool-delete lb1 # nova delete web1 web2


Neutron 除錯

練習4: