CentOS7安裝OpenStack-08.創建一個虛擬機實例


8.0.neutron的兩種虛擬網絡

1)Provider network(提供者網絡)

# 網絡結構圖參考:https://docs.openstack.org/install-guide/launch-instance-networks-provider.html

簡單理解就是與現有物理網絡橋接起來的網絡,網絡結構圖如下,

在這種網絡中,集群中的各個節點通過物理網絡連接,節點內部通過L2(provider網橋/交換機)與物理網絡進行連接,這個網絡可以包括為實例提供IP地址的DHCP服務器。

集群中的實例(虛擬機)通過Provider網絡為其分配映射的tap端口與橋接網卡傳輸數據從而進行內外部通信,類似kvm虛擬機采用橋接模式使得網絡結構,網絡結構示意圖如下:

2)Self-service network(自服務網絡)

# 網絡結構圖參考:https://docs.openstack.org/install-guide/launch-instance-networks-selfservice.html

類似阿里雲的內部私有網絡,可以讓使用者自己構建一個內部使用對外隔離的網絡,結構如下圖:

是在provider網絡上的擴展,通過self-service網橋使用vxlan技術創建一個獨立的網絡,這個獨立的網絡也可以通過vxlan tunnels連接到物理網絡進行數據傳輸

網絡連接拓撲圖如下:

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 net_provider
openstack network list

# 附:舊版的命令(在這個版本中會少創建一些東西),可以參考

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:ens33 -----------------------------

3)創建provider子網

# 標記的net_provider與上面的net_provider對應,相關聯
openstack subnet create --network net_provider --no-dhcp --allocation-pool start=192.168.182.210,end=192.168.182.220 --dns-nameserver 114.114.114.114 --gateway 192.168.182.2 --subnet-range 192.168.182.0/24 provider-subnet01
# openstack subnet create --network net_provider --dhcp --subnet-range 192.168.182.0/24 provider-subnet02
openstack subnet list

8.2、創建m1.nano規格的主機

#  默認的最小規格的主機需要512 MB內存。對於環境中計算節點內存不足4 GB的,我們推薦創建只需要64 MB的``m1.nano``規格的主機。若單純為了測試的目的,請使用``m1.nano``規格的主機來加載CirrOS鏡像

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

8.3、生成一個鍵值對

1)導入租戶``demo``的憑證

cd /server/tools && source keystone-admin-pass.sh

2)生成和添加秘鑰對

ssh-keygen -q -N "" -f ~/.ssh/id_rsa
openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

3)驗證公鑰的添加

openstack keypair list

8.4、增加安全組規則

# 默認情況下, ``default``安全組適用於所有實例並且包括拒絕遠程訪問實例的防火牆規則。對諸如CirrOS這樣的Linux鏡像,我們推薦至少允許ICMP (ping) 和安全shell(SSH)規則。

# 添加規則到 default 安全組

1)允許 ICMP (ping)

openstack security group rule create --proto icmp default

2)允許安全 shell (SSH) 的訪問

openstack security group rule create --proto tcp --dst-port 22 default

8.5、啟動一個實例(在公有網絡上創建實例

1)查看配置

openstack flavor list
openstack image list
openstack network list
openstack security group list

2)創建實例(紅色標注的,寫自己的network ID,通過 `openstack network list`查看ID)

openstack server create --flavor m1.nano --image cirros \
  --nic net-id=PROVIDER_NET_ID --security-group default \
  --key-name mykey provider-instance

==================================================================================================

問題1:在計算節點上查看日志:/var/log/nova/nova-compute.log shows 

No compute node record for host compute1: ComputeHostNotFound_Remote: Compute host compute1 could not be found.

解決:在控制節點上執行

[root@controller ~]# su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova 
Found 2 cell mappings.
Skipping cell0 since it does not contain hosts.
Getting computes from cell 'cell1': c7e6974d-2af9-46e2-b463-aa606c205228
Checking host mapping for compute host 'compute1': 90e3f7a9-e895-4052-b600-4695ffd858b1
Creating host mapping for compute host 'compute1': 90e3f7a9-e895-4052-b600-4695ffd858b1
Found 1 unmapped computes in cell: c7e6974d-2af9-46e2-b463-aa606c205228

問題2:如果一直卡着不動了,則需要設置一下鏡像的屬性

解決:修改硬盤屬性為 ide,網卡屬性為 e1000。問題解決!

# 通過openstack image list 查看image_id
openstack image set --property hw_disk_bus=ide --property hw_vif_model=e1000 <image_id>

問題3:如果無法ping通ip

解決:找到對應網絡的subnet,把 dchp 功能啟用,打對勾

==================================================================================================

3)檢查實例的狀態

openstack server list

 8.6、驗證能否遠程訪問實例

 1)驗證控制節點或者其他公有網絡上的主機能否ping通實例

ping -c 4 192.168.182.213

2)在控制節點或其他公有網絡上的主機使用 SSH遠程訪問實例

ssh cirros@192.168.182.213

 8.7、快速新增一個計算節點

1)配置主機名

# 設置主機名
hostnamectl set-hostname compute2
# 添加controller域名解析 echo
' # controller 192.168.182.143 controller '>>/etc/hosts

2)關閉防火牆和selinux

systemctl stop firewalld.service
systemctl disable firewalld.service
systemctl status firewalld.service

setenforce 0
getenforce
sed -i 's#SELINUX=enforcing#SELINUX=disabled#g' /etc/sysconfig/selinux
grep SELINUX=disabled /etc/sysconfig/selinux

3)在計算節點配置時間同步服務

# 安裝時間同步的軟件包

yum install chrony -y

# 編輯配置文件確認有以下配置

vim /etc/chrony.conf
# 在計算節點上配置
# 去掉原有的server
server  192.168.182.143 iburst

# 重啟chronyd服務,並配置開機自啟動

systemctl restart chronyd.service
systemctl status chronyd.service
systemctl enable chronyd.service
systemctl list-unit-files |grep chronyd.service

# 設置時區,首次同步時間

timedatectl set-timezone Asia/Shanghai
chronyc sources
timedatectl status

4)配置相關yum源 

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

mv /etc/yum.repos.d/epel.repo /etc/yum.repos.d/epel.repo.backup
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

# 安裝openstack-rocky的倉庫

yum install centos-release-openstack-rocky -y
yum clean all
yum makecache

# 更新軟件包

yum update -y

# 安裝openstack客戶端相關軟件

yum install python-openstackclient openstack-selinux -y

5)安裝nova計算節點相關軟件包

# 計算節點安裝nova軟件包

yum install openstack-nova-compute python-openstackclient openstack-utils -y

# 快速修改配置文件(/etc/nova/nova.conf),注意修改成自己的ip

openstack-config --set  /etc/nova/nova.conf DEFAULT my_ip 192.168.182.128
openstack-config --set  /etc/nova/nova.conf DEFAULT use_neutron True
openstack-config --set  /etc/nova/nova.conf DEFAULT firewall_driver nova.virt.firewall.NoopFirewallDriver
openstack-config --set  /etc/nova/nova.conf DEFAULT enabled_apis  osapi_compute,metadata
openstack-config --set  /etc/nova/nova.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
openstack-config --set  /etc/nova/nova.conf api auth_strategy  keystone 
openstack-config --set  /etc/nova/nova.conf keystone_authtoken auth_url http://controller:5000/v3
openstack-config --set  /etc/nova/nova.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set  /etc/nova/nova.conf keystone_authtoken auth_type password
openstack-config --set  /etc/nova/nova.conf keystone_authtoken project_domain_name default
openstack-config --set  /etc/nova/nova.conf keystone_authtoken user_domain_name default
openstack-config --set  /etc/nova/nova.conf keystone_authtoken project_name  service
openstack-config --set  /etc/nova/nova.conf keystone_authtoken username nova
openstack-config --set  /etc/nova/nova.conf keystone_authtoken password nova
openstack-config --set  /etc/nova/nova.conf vnc enabled True
openstack-config --set  /etc/nova/nova.conf vnc server_listen 0.0.0.0
openstack-config --set  /etc/nova/nova.conf vnc server_proxyclient_address  '$my_ip'
openstack-config --set  /etc/nova/nova.conf vnc novncproxy_base_url  http://controller:6080/vnc_auto.html
openstack-config --set  /etc/nova/nova.conf glance api_servers http://controller:9292
openstack-config --set  /etc/nova/nova.conf oslo_concurrency lock_path /var/lib/nova/tmp
openstack-config --set  /etc/nova/nova.conf placement region_name RegionOne
openstack-config --set  /etc/nova/nova.conf placement project_domain_name Default
openstack-config --set  /etc/nova/nova.conf placement project_name service
openstack-config --set  /etc/nova/nova.conf placement auth_type password
openstack-config --set  /etc/nova/nova.conf placement user_domain_name Default
openstack-config --set  /etc/nova/nova.conf placement auth_url http://controller:5000/v3
openstack-config --set  /etc/nova/nova.conf placement username placement
openstack-config --set  /etc/nova/nova.conf placement password placement

# 配置虛擬機的硬件加速

# 首先確定您的計算節點是否支持虛擬機的硬件加速。

egrep -c '(vmx|svm)' /proc/cpuinfo

# 如果返回位0,表示計算節點不支持硬件加速,需要配置libvirt使用QEMU方式管理虛擬機,使用以下命令

openstack-config --set  /etc/nova/nova.conf libvirt virt_type  qemu
egrep -v "^#|^$" /etc/nova/nova.conf|grep 'virt_type'

# 如果返回為其他值,表示計算節點支持硬件加速且不需要額外的配置,使用以下命令

openstack-config --set  /etc/nova/nova.conf libvirt virt_type  kvm 
egrep -v "^#|^$" /etc/nova/nova.conf|grep 'virt_type'

# 啟動nova相關服務,並配置為開機自啟動

systemctl start libvirtd.service openstack-nova-compute.service 
systemctl status libvirtd.service openstack-nova-compute.service
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl list-unit-files |grep libvirtd.service
systemctl list-unit-files |grep openstack-nova-compute.service

# 列表查看安裝的nova服務組件(控制節點)

openstack compute service list

6)在計算節點安裝neutron網絡組件

# 安裝neutron組件

yum install openstack-neutron-linuxbridge ebtables ipset -y

# 快速配置/etc/neutron/neutron.conf

openstack-config --set /etc/neutron/neutron.conf DEFAULT transport_url  rabbit://openstack:openstack@controller
openstack-config --set /etc/neutron/neutron.conf DEFAULT auth_strategy keystone
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken www_authenticate_uri  http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_url http://controller:5000
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken memcached_servers controller:11211
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken auth_type password
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken user_domain_name default
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken project_name service
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken username neutron
openstack-config --set /etc/neutron/neutron.conf keystone_authtoken password neutron
openstack-config --set /etc/neutron/neutron.conf oslo_concurrency lock_path /var/lib/neutron/tmp

# 快速配置/etc/neutron/plugins/ml2/linuxbridge_agent.ini

openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini linux_bridge physical_interface_mappings  provider:ens33
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini vxlan enable_vxlan false
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup enable_security_group true
openstack-config --set /etc/neutron/plugins/ml2/linuxbridge_agent.ini securitygroup firewall_driver neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

# 注意:第一個選項physical_interface_mappings選項要配置計算節點自身的網卡名稱provider:ens33

7)配置nova計算服務與neutron網絡服務協同工作

# 快速配置/etc/nova/nova.conf

openstack-config --set /etc/nova/nova.conf neutron url http://controller:9696
openstack-config --set /etc/nova/nova.conf neutron auth_url http://controller:5000
openstack-config --set /etc/nova/nova.conf neutron auth_type password
openstack-config --set /etc/nova/nova.conf neutron project_domain_name default
openstack-config --set /etc/nova/nova.conf neutron user_domain_name default
openstack-config --set /etc/nova/nova.conf neutron region_name RegionOne
openstack-config --set /etc/nova/nova.conf neutron project_name service 
openstack-config --set /etc/nova/nova.conf neutron username neutron
openstack-config --set /etc/nova/nova.conf neutron password neutron

# 重啟計算節點

systemctl restart openstack-nova-compute.service
systemctl status openstack-nova-compute.service

# 啟動neutron網絡組件,並配置開機自啟動

systemctl restart neutron-linuxbridge-agent.service
systemctl status neutron-linuxbridge-agent.service

systemctl enable neutron-linuxbridge-agent.service
systemctl list-unit-files |grep neutron* |grep enabled

# 查看網絡代理列表

openstack network agent list

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM