- Neutron 提供 OpenStack 網路連結功能以及定址 OpenStack 網路環境
- 每個租賃戶可以擁有多個私人網段,亦允許租賃戶有自己的IP定址策略,就算是IP位置重疊也無妨!
- OpenStack 的連網技術使用 plug-in 觀念!
- 其基本連網模式是利用 Linux VLANs 以及 IP tables 來進行網路連網的隔離運作!
- OpenStack 網路元件的組成,是由幾個代理人來執行:
- L3 agent: 提供外部存取 OpenStack 上的實體物件!
- DHCP agent: 提供子網路內部連結!
- Metadata agent: 提供訊息服務
- LBaaS agent: 提供負載平衡服務
- Open vSwitch agent: 管理 Open vSwitch plug-in
- # source /root/keystonerc_admin
- # systemctl status neutron-openvswitch-agent
- # systemctl status neutron-dhcp-agent
- # systemctl status neutron-l3-agent
- # systemctl status neutron-metadata-agent
- # systemctl status neutron-lbaas-agent
- # systemctl status neutron-ovs-cleanup
- # neutron agent-list
- # keystone user-list --tenant services
- # keystone user-get neutron
- # keystone service-get neutron
- # keystone endpoint-get --service network
- # 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/
...
- # crudini --get /etc/neutron/neutron.conf DEFAULT core_plugin
- # crudini --get /etc/neutron/plugin.ini ml2 mechanism_drivers
- # crudini --get /etc/neutron/plugin.ini ml2 tenant_network_types
- # crudini --get /etc/neutron/plugin.ini ml2_type_vlan metwork_vlan_ranges
- # cat /etc/sysconfig/network-scripts/ifcfg-br-ex
- # ovs-vsctl show
- # 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:
- # source /root/keystonerc_myuser
- # keystone router-create router1
- # neutron net-create private
- # neurton subnet-create --name subpriv private 192.168.0.0/24
- # neutron router-interface-add router1 subpriv
- # neutron port-list
- # neutron router-gateway-set router1 public
- # neutron floatingip-create public
- # neutron floatingip-list
LBAAS: Load Balance as a Service: 讓 Neutron 可以將網路流量分散到兩部以上的實體!
分散的方式有下列:
- Round-Robin:在多個實體之間,轉換要求!
- Source IP:來自於同一個IP的請求,導到同一個實體!
- Least Connections:將流量導到最少的連結實體上!
- # source /root/keystonerc_admin
- # grep CONFIG_LBAAS_INSTALL /root/answers.txt
- # neutron agent-list
- # grep service_plugins /etc/neutron/neutron.conf
- # grep service_provider /etc/neutron/neutron.conf
- # crudini --get /etc/neutron/lbaas_agent.ini DEFAULT device_driver
- # glance image-create --name web --is-public True --disk-format qcow2 --container-format bare --copy-from http://demo.example.com/pub/web.img
- # glance image-list
- # source /root/keystonerc_myuser
- # echo "web1" > /root/index1.html
- # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index1.html web1
- # echo "web2" > /root/index2.html
- # nova boot --flavor m2.tiny --image web --file /var/www/html/index.html=/root/index2.html web2
- # neutron lb-pool-create --name lb1 --lb-method ROUND_ROBIN --protocol HTTP --subnet subpriv
- # nova list
- # neutron lb-member-create --address 192.168.0.2 --protocol-port 80 lb1
- # neutron lb-member-create --address 192.168.0.3 --protocol-port 80 lb1
- # neutron lb-healthmonitor-create --deplay 5 --type HTTP --max-retries 3 --timeout 2
- # neutron lb-healthmonitor-associate <上項指令所列出的ID值> lb1
- # neutron lb-vip-create --name lb1-vip --protocol-port 80 --protocol HTTP --subnet subpriv lb1
- # neutron floatingip-create public
- # neutron floatingip-associate <上項指令所列出的id值> <上兩項指令所列出的port id值>
- # neutron lb-member-list
- # curl 10.1.1.2
- # curl 10.1.1.2
- 清除方式:
# neutron lb-vip-delete lb1-vip # neutron lb-pool-delete lb1 # nova delete web1 web2
Neutron 除錯
練習4: