安裝完openstack的必要組件keystone,nova,glance,neutron以后就可以使用openstack命令創建一台雲虛擬機了
------------------- 完美的分割線 --------------------
8.0.neutron 的兩種虛擬網絡
對於實際的網絡環境,購買好路由器交換機等網絡設備后,還需要連接網線,配置局域網絡才可以讓服務器正常連接上網。
同樣,對於 openstack,安裝好 neutron 只相當於購買好了網絡設備,仍然需要創建一個虛擬的網絡才可以讓虛擬機在里面運行。
對於 openstack 的虛擬網絡,在安裝 neutron 時只進行了簡單的敘述,有兩種模式:
1)Provider network
# 網絡結構圖參考:https://docs.openstack.org/install-guide/launch-instance-networks-provider.html
簡單理解就是與現有物理網絡橋接起來的網絡,網絡結構和配置較簡單,適用於小規模服務器集群(幾十台幾百台),網絡結構圖如下,
在這種網絡中,集群中的各個節點通過物理網絡連接,節點內部通過 L2( provider 網橋/交換機)與物理網絡進行連接,這個網絡可以包括為實例提供 IP 地址的 DHCP 服務器。
集群中的實例(虛擬機)通過 Provider 網絡為其分配映射的tap端口與橋接網卡傳輸數據從而進行內外部通信,類似 kvm 虛擬機采用橋接模式使得網絡結構,網絡結構示意圖如下:
# ok
2)Self-service network(自服務網絡)
# 網絡結構圖參考:https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html
類似阿里雲的內部私有網絡,可以讓使用者自己構建一個內部使用對外隔離的網絡,結構靈活,適用於大規模服務器集群(上千台),結構如下圖:
是在provider網絡上的擴展,通過self-service網橋使用vxlan技術創建一個獨立的網絡,這個獨立的網絡也可以通過vxlan tunnels連接到物理網絡進行數據傳輸
網絡連接拓撲圖如下:
# ok
8.1.創建 provider 網絡
1)在控制節點上,創建網絡接口
# 加載 admin 憑證來獲取管理員能執行的命令訪問權限
cd /server/tools/ source keystone-admin-pass.sh openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider
openstack network list
# 實例演示:
[root@openstack01 tools]# openstack network create --share --external --provider-physical-network provider --provider-network-type flat provider +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2018-11-06T06:34:01Z | | description | | | dns_domain | None | | id | 25346d04-0f1f-4277-b896-ba3f01425d86 | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | None | | is_vlan_transparent | None | | mtu | 1500 | | name | provider | | port_security_enabled | True | | project_id | 3706708374804e2eb4ed056f55d84666 | | provider:network_type | flat | | provider:physical_network | provider | | provider:segmentation_id | None | | qos_policy_id | None | | revision_number | 0 | | router:external | External | | segments | None | | shared | True | | status | ACTIVE | | subnets | | | tags | | | updated_at | 2018-11-06T06:34:01Z | +---------------------------+--------------------------------------+ [root@openstack01 tools]# openstack network list +--------------------------------------+----------+---------+ | ID | Name | Subnets | +--------------------------------------+----------+---------+ | 25346d04-0f1f-4277-b896-ba3f01425d86 | provider | | +--------------------------------------+----------+---------+
# 附:舊版的命令(在這個版本中會少創建一些東西),可以參考
neutron net-create --shared --provider:physical_network [自定義的物理網卡的名稱] --provider:network_type flat(單一扁平網絡) [創建的虛擬網絡名稱]
neutron net-create --shared --provider:physical_network provider --provider:network_type flat provider
2)檢查網絡配置
# 確認 ml2_conf.ini 以下配置選項
# 上面的命令 --provider-network-type flat 網絡名稱 provider 與此對應
vim /etc/neutron/plugins/ml2/ml2_conf.ini ----------------------------- [ml2_type_flat] flat_networks = provider -----------------------------
# 確認 linuxbridge_agent.ini 以下配置選項
# 上面的命令 --provider-physical-network provider 於此對應,網卡注意要於此對應,控制節點的網卡名稱
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini ----------------------------- [linux_bridge] physical_interface_mappings = provider:eno16777736 -----------------------------
3)創建 provider 子網
openstack subnet create --network provider --no-dhcp --allocation-pool start=192.168.1.210,end=192.168.1.220 --dns-nameserver 4.4.4.4 --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 provider-subnet01 openstack subnet create --network provider --dhcp --subnet-range 192.168.2.0/24 provider-subnet02 openstack subnet list
# 實例演示:
[root@openstack01 tools]# openstack subnet create --network provider --no-dhcp --allocation-pool start=192.168.1.210,end=192.168.1.220 --dns-nameserver 4.4.4.4 --gateway 192.168.1.1 --subnet-range 192.168.1.0/24 provider-subnet01 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 192.168.1.210-192.168.1.220 | | cidr | 192.168.1.0/24 | | created_at | 2018-11-12T12:48:08Z | | description | | | dns_nameservers | 4.4.4.4 | | enable_dhcp | False | | gateway_ip | 192.168.1.1 | | host_routes | | | id | 2aaf50aa-ab80-4ed5-99c8-58d4d4d31ff3 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | provider-subnet01 | | network_id | 25346d04-0f1f-4277-b896-ba3f01425d86 | | project_id | 3706708374804e2eb4ed056f55d84666 | | revision_number | 0 | | segment_id | None | | service_types | | | subnetpool_id | None | | tags | | | updated_at | 2018-11-12T12:48:08Z | +-------------------+--------------------------------------+ [root@openstack01 tools]# openstack subnet create --network provider --dhcp --subnet-range 192.168.2.0/24 provider-subnet02 +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 192.168.2.2-192.168.2.254 | | cidr | 192.168.2.0/24 | | created_at | 2018-11-12T12:48:13Z | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.168.2.1 | | host_routes | | | id | 0d21b823-ae0c-4c3e-87e6-22e3b2d794c4 | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | provider-subnet02 | | network_id | 25346d04-0f1f-4277-b896-ba3f01425d86 | | project_id | 3706708374804e2eb4ed056f55d84666 | | revision_number | 0 | | segment_id | None | | service_types | | | subnetpool_id | None | | tags | | | updated_at | 2018-11-12T12:48:13Z | +-------------------+--------------------------------------+ [root@openstack01 tools]# openstack subnet list +--------------------------------------+-------------------+--------------------------------------+----------------+ | ID | Name | Network | Subnet | +--------------------------------------+-------------------+--------------------------------------+----------------+ | 0d21b823-ae0c-4c3e-87e6-22e3b2d794c4 | provider-subnet02 | 25346d04-0f1f-4277-b896-ba3f01425d86 | 192.168.2.0/24 | | 2aaf50aa-ab80-4ed5-99c8-58d4d4d31ff3 | provider-subnet01 | 25346d04-0f1f-4277-b896-ba3f01425d86 | 192.168.1.0/24 | +--------------------------------------+-------------------+--------------------------------------+----------------+
# 至此,provider 網絡創建完成,可以創建虛擬機
8.2.在在控制節點使用普通用戶 myuser 創建密鑰對
# 大部分雲鏡像支持功功秘鑰認證而不是密碼認證,也可以不創建,使用已有的公鑰
# 秘鑰對用於使用 openstack 的 dashboard 遠程管理虛擬機
# 可以使用管理員 admin 創建也可以使用普通用戶 myuser 創建,這里使用普通用戶進行虛擬機創建的演示
1)使用普通用戶myuser的權限
cd /server/tools/ source keystone-demo-pass.sh
2)生成秘鑰對
ssh-keygen -q -N ""
3)添加公鑰到openstack秘鑰系統
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey
4)查看可用的公鑰(驗證公鑰的添加)
openstack keypair list
8.3.在控制節點為示例項目myproject增加安全組規則
# 默認情況下,每個項目都有其自己的default默認安全組,適用於所有項目中的實例並且包括拒絕遠程訪問實例的防火牆規則。
# 項目自身的管理員只可以管理自身項目中的安全組規則,admin管理員也無法管理其他項目的安全組規則
# 對諸如CirrOS這樣的Linux鏡像,建議至少允許ICMP (ping) 和安全shell(SSH)規則。
1)使用普通用戶myuser的權限
cd /server/tools/ source keystone-demo-pass.sh
2)允許 ICMP (ping)
openstack security group rule create --proto icmp default
3)允許安全 shell (SSH) 的訪問
openstack security group rule create --proto tcp --dst-port 22 default
4)查看安全組和相關的規則
openstack security group list
openstack security group rule list
8.4.在控制節點使用普通用戶在 provider 網絡創建虛擬機實例
1)控制機:使用 admin 用戶創建主機模板
# 注意:虛擬機模板配置只能由 admin 管理員創建和管理,普通用戶 myuser 只能使用已有的虛擬機模板
# 列表查看實例配置模板
cd /server/tools/
source keystone-admin-pass.sh openstack flavor list
# 使用 admin 用戶創建自定義配置的主機模板 flavor
openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano
openstack flavor create --id 1 --vcpus 1 --ram 1024 --disk 50 m1.tiny openstack flavor create --id 2 --vcpus 1 --ram 2048 --disk 500 m1.small openstack flavor create --id 3 --vcpus 2 --ram 4096 --disk 500 m1.medium openstack flavor create --id 4 --vcpus 4 --ram 8192 --disk 500 m1.large openstack flavor create --id 5 --vcpus 8 --ram 16384 --disk 500 m1.xlarge openstack flavor list
# 以下為常用命令,在此列出下:
## 查看可用的虛擬機配置模板
openstack flavor list
## 查看可用的鏡像
openstack image list
# 查看可用的網絡
openstack network list
openstack subnet list
## 查看可用的公鑰(驗證公鑰的添加)
openstack keypair list
## 查看可用的安全組
openstack security group list
openstack security group rule list
2)控制機:使用普通用戶創建一台虛擬機實例
# R 版的可以使用網絡名稱和 ID 創建虛擬機,如果只有一個網絡也可以不使用 --nic 選項
cd /server/tools/ source keystone-demo-pass.sh openstack server create --flavor m1.nano --image cirros --nic net-id=provider --security-group default --key-name mykey cirros-01 openstack server create --flavor m1.nano --image cirros --nic net-id=25346d04-0f1f-4277-b896-ba3f01425d86 --security-group default --key-name mykey cirros-02 openstack server create --flavor m1.nano --image cirros --security-group default --key-name mykey cirros-03
# 檢查實例的狀態
openstack server list
# 當構建過程完全成功后,狀態會從 BUILD 變為 ACTIVE
3)顯示主機的 novnc 地址(vnc控制台)
openstack console url show cirros-01
# 得出的地址可以直接使用瀏覽器進行訪問,並管理相應用主機
login as 'cirros' user. default password: 'cubswin:)'. use 'sudo' for root.
# 至此文檔已經補充完畢,20200618
8.5.創建私有網絡(暫略)
# openstack 的私有網絡類似阿里雲等雲廠商的VPC子網,用戶可以自行定義子網內的網絡架構,比較靈活
# 附官方文檔:Create the self-service network
https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html