CentOS7.0+OpenStack+kvm雲平臺部署—配置Nova
初始化Nova
(1).安裝nova:
[root@openstack ~]# yum -y installopenstack-nova
(2).建立nova資料庫:
[root@openstack ~]# openstack-db--init --service nova
建立User,定義Services和 API Endpoints
(1).編寫指令碼:
[root@openstack ~]# vi/root/config/nova-user.sh
#!/bin/sh
my_ip=10.1.1.2
keystone user-create --name=nova--pass=service --email=nova@example.com
keystone user-role-add --user=nova--tenant=service --role=admin
keystone service-create --name=nova--type=compute --description="Nova Compute Service"
service=$(keystone service-list | awk'/nova/ {print $2}')
keystone endpoint-create--service-id=$service --publicurl=http://$my_ip:8774/v2/%tenantid
s--internalurl=http://$my_ip:8774/v2/%tenantids--adminurl=http://$my_ip:8774/v2/%tenantid
s
(2).執行指令碼,建立使用者、服務及api endpoint:
[root@openstack ~]# sh/root/config/nova-user.sh
配置nova服務:
(1).修改/etc/nova.conf配置檔案:
[root@openstack ~]# vi /etc/nova/nova.conf
[DEFAULT]
my_ip = 10.1.1.2
auth_strategy = keystone
state_path = /openstack/lib/nova
verbose=True
allow_resize_to_same_host = true
rpc_backend =nova.openstack.common.rpc.impl_qpid
qpid_hostname = 10.1.1.2
libvirt_type = kvm
glance_api_servers = 10.1.1.2:9292
novncproxy_base_url =http://10.1.1.2:6080/vnc_auto.html
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
vnc_enabled = true
vnc_keymap = en-us
network_manager =nova.network.manager.FlatDHCPManager
firewall_driver =nova.virt.firewall.NoopFirewallDriver
multi_host = True
flat_interface = eth0
flat_network_bridge = br1
#public_interface = eth0
instance_usage_audit = True
instance_usage_audit_period = hour
notify_on_state_change = vm_and_task_state
notification_driver =nova.openstack.common.notifier.rpc_notifier
compute_scheduler_driver=nova.scheduler.simple.SimpleScheduler
[hyperv]
[zookeeper]
[osapi_v3]
[conductor]
[keymgr]
[cells]
[database]
[image_file_url]
[baremetal]
[rpc_notifier2]
[matchmaker_redis]
[ssl]
[trusted_computing]
[upgrade_levels]
[matchmaker_ring]
[vmware]
[spice]
[keystone_authtoken]
auth_host = 127.0.0.1
auth_port = 35357
auth_protocol = http
admin_user = nova
admin_tenant_name = service
admin_password = service
因上述配置檔案中修改了instances例項存放的位置,還需要作一下操作:
修改instances路徑,設定目錄許可權:
[root@openstack ~]# cp -r/var/lib/nova/ /openstack/lib/
[root@openstack ~]# chown -R nova:nova/openstack/lib/nova/
(2).配置libvirtd服務,刪除virbr0
啟動libvirt服務:
[root@openstack ~]# service libvirtdstart
檢視net-list,發現default:
[root@openstack ~]# virsh net-list
Name State Autostart Persistent
--------------------------------------------------
default active yes yes
刪除default,即virbr0:
[root@openstack ~]# virsh net-destroydefault
Network default destroyed
[root@openstack ~]# virsh net-undefinedefault
Network default has been undefined
重啟libvirtd服務,設定開機自啟動:
[root@openstack ~]# service libvirtdrestart
[root@openstack ~]# chkconfig libvirtdon
(3).啟動nova相關服務,設定開機自啟動
[root@openstack ~]# service messagebusstart
[root@openstack ~]# chkconfigmessagebus on
啟動nova服務,採用network網路服務:
[root@openstack ~]# serviceopenstack-nova-api start
[root@openstack ~]# serviceopenstack-nova-cert start
[root@openstack ~]# serviceopenstack-nova-consoleauth start
[root@openstack ~]# serviceopenstack-nova-scheduler start
[root@openstack ~]# serviceopenstack-nova-conductor start
[root@openstack ~]# serviceopenstack-nova-novncproxy start
[root@openstack ~]# serviceopenstack-nova-compute start
[root@openstack ~]# service openstack-nova-networkstart
[root@openstack ~]# chkconfigopenstack-nova-api on
[root@openstack~]# chkconfig openstack-nova-cert on
[root@openstack~]# chkconfig openstack-nova-consoleauth on
[root@openstack~]# chkconfig openstack-nova-scheduler on
[root@openstack~]# chkconfig openstack-nova-conductor on
[root@openstack~]# chkconfig openstack-nova-novncproxy on
[root@openstack~]# chkconfig openstack-nova-compute on
[root@openstack~]# chkconfig openstack-nova-network on
nova測試:
(1).建立網路:
[root@openstack~]# nova network-create vmnet --fixed-range-v4=10.1.1.0/24--bridge-interface=br1 --multi-host=T
[root@openstack ~]#novanetwork-list
[root@openstack ~]# nova-manage network list
(2).設定安全組:
[root@openstack~]# nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
[root@openstack~]# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
openstack裡的浮動ip知識點
預設情況下例項會被賦予固定ip,這時並不能保證例項會馬上可以從外面訪問到,一般來說需要配置防火牆來允許公共ip,然後建立一條NAT規則從公共ip到私有ip的對映。
Ag引入了一個叫浮動ip的概念,浮動ip是一些可以從外部訪問的ip列表,通常從isp哪裡買來的。
浮動ip預設不會自動賦給例項,使用者需要手動從地址池裡抓取然後賦給例項。一旦使用者抓去後,他就變成這個ip的所有者,可以隨意賦給自己擁有的其他例項。如果例項死掉了的話,使用者也不會失去這個浮動ip,可以隨時賦給其他例項。暫時不支援為了負載均衡多例項共享一個浮動ip。
而對於固定ip來說,例項啟動後獲得的ip也是自動的,不能指定某一個。所以當一個VM歇菜了,再啟動也許固定ip就換了一個。
系統管理員可以配置多個浮動ip池,這個ip池不能指定租戶,每個使用者都可以去抓取。多浮動ip池是為了考慮不同的isp服務提供商,免得某一個isp出故障帶來麻煩。
如果執行的是企業雲,浮動ip池就是那些ag外的資料中心都能訪問到的ip。
浮動ip機制給雲使用者提供了很多靈活性,也給系統管理員減少了安全風險,儘量只讓Ag軟體去改防火牆會安全些。
浮動 IP
要了解浮動 IP是如何實現的,首先將一個浮動IP關聯到此例項的固定IP。之前所建立的這個例項的固定IP是10.10.10.2。
在預設池內建立一個浮動IP
要在預設池內建立一個浮動 IP,請執行一下程式碼:
# nova-manage floating create --ip_range=10.1.1.232/30
要從這個池分派一個浮動 IP,請執行一下程式碼:
# Nova floating-ip-create
建立VM例項
使用nova image-list檢視當前可用的映象
使用nova flavor-list檢視當前可用的系統型別
使用nova boot建立VM例項,nova boot --flavor [flavor ID | flavor name] --image [image ID | image name] [instace_name],比如
nova boot --flavor m1.small --image 5290eb9f-f248-408f-a319-622c4a070ca8 test
建立成功後使用nova list檢視例項狀態
[root@bdpe11 ~(keystone_admin)]# nova list
+--------------------------------------+-----------+--------+-------------------------------------+
| ID | Name | Status | Networks |
+--------------------------------------+-----------+--------+-------------------------------------+
| dbaded92-b445-4106-a124-607150ff17c5 | Server 47 | ACTIVE | private=192.168.20.2, 192.168.148.1 |
| d9d4bea3-6387-4695-b031-965478623fb6 | Server 48 | ACTIVE | private=192.168.20.4, 192.168.148.2 |
+--------------------------------------+-----------+--------+-------------------------------------+
這樣,就擁有一個 IP 10.1.1.233。現在將它分配給 ID為8f773639-c04f-4885-9349-ac7d6a799843的例項:
# nova add-floating-ip 8f773639-c04f-4885-9349-ac7d6a799843 10.1.1.233
將浮動IP繫結到公共介面
FLAGS.public_interface
被用來繫結浮動 IP。在執行了 novaadd-floating-ip
命令後,可以看到 public_interface
下就具有了如下的浮動 IP:
# ip addr list dev wlan0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 08:11:96:75:91:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.90/16 brd 192.168.255.255 scope global wlan0
inet 192.168.1.233/32 scope global wlan0
inet6 fe80::a11:96ff:fe75:9154/64 scope link
valid_lft forever preferred_lft forever
NAT 表內針對浮動IP的規則
在此例項獲得了 nova-network主機上的一個浮動 IP後,這些規則適用:
-A nova-network-OUTPUT -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2
-A nova-network-PREROUTING -d 192.168.1.233/32 -j DNAT --to-destination 10.10.10.2
-A nova-network-float-snat -s 10.10.10.2/32 -j SNAT --to-source 192.168.1.233
您會看到該 dNAT規則被用來將此浮動 IP轉換成此例項的固定 IP。如果一個包到達nova-network主機並以浮動IP為目標 IP,則此目標 IP就會被轉換。然後,就會有另一項sNAT規則會將來自此例項的固定IP的流量轉換到此浮動IP。由於所有從 VM到固定網路之外的流量均被指向閘道器(是由nova-network的 dnsmasq
進行設定),有了 sNAT規則,出 VM的流量就可以成功標誌成來自此浮動IP。此外,已包裝的OUTPUT鏈內還有一個dNAT規則,允許nova-network上的本地過程訪問具有浮動IP的 VM。
使用浮動IP的 Ping VM
要將 VM與浮動 IP Ping在一起,也需要一些規則。請記住,在此nova-compute主機上,針對每個例項必須有一個特定鏈;其內的規則只允許來自固定子集內的IP的流量。如果想要ping一個浮動IP,流量就會被這些規則丟棄,因為ping包的源IP並不在此固定子集內。顯然,需要一個規則以允許icmp流量。
為了新增一個允許 ping的規則,可以使用Ag的安全組規則的概念:
# nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
之後,就可以看到在此例項的特定鏈下多建立了一個規則:
-Anova-compute-inst-1 -p icmp -j ACCEPT
同樣的方式,可以對具有浮動 IP的 VM啟用 SSH。
(3).建立虛擬機器例項:
檢視可用映象:
[root@openstack~]# nova image-list
建立虛擬機器例項:
[root@openstack~]# nova boot --flavor 1 --image centos6.4 vm01
檢視虛擬機器例項執行狀態:
[root@openstack ~]# novalist
+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+
| f754afe1-784f-41d0-9139-a05d25eaca20| vm01 | ACTIVE | - | Running | vmnet=10.1.1.2 |
+--------------------------------------+--------------------------------------------+--------+------------+-------------+-----------------+
測試虛擬機器例項連通性:
[root@openstack ~]# ping 10.1.1.2
PING 10.1.1.2 (10.1.1.2)56(84) bytes of data.
64 bytes from 10.1.1.2:icmp_seq=1 ttl=64 time=0.057 ms
64 bytes from 10.1.1.2:icmp_seq=2 ttl=64 time=0.037 ms
--- 10.1.1.2 pingstatistics ---
2 packets transmitted, 2received, 0% packet loss, time 1639ms
rtt min/avg/max/mdev =0.037/0.047/0.057/0.010 ms
相關文章
- CentOS7.0+OpenStack+kvm雲平臺部署—配置GlanceCentOS
- OpenStack雲平臺部署
- OpenStack——雲平臺部署
- 雲端計算管理平臺之OpenStack計算服務nova
- 實用教程 | 雲原生安全平臺 NeuVector 部署
- 部署LAMP平臺LAMP
- 容器雲平臺物理叢集配置實踐
- 部署AI平臺-OllamaAI
- 開普勒雲平臺:如何配置gitlab與JenkinsGitlabJenkins
- 阿里雲平臺下Terraform+Packer一鍵部署WordPress案例阿里ORM
- 將SpringBoot應用Docker化並部署到SAP雲平臺Spring BootDocker
- DCOS雲平臺之業務多應用部署改造方案
- 在 SAP 雲平臺上部署和執行 Docker 應用Docker
- AutoCAD雲產品平臺ForgeViewer格式離線部署思路分析View
- Teuthology平臺部署手冊
- 雲平臺是什麼?知名雲平臺有哪些?
- 將SAP UI5應用部署在Heroku雲平臺裡UI
- 【雲管平臺】多雲混合雲管理平臺用哪個好?
- 關於 docker 部署 walle 平臺Docker
- 部署KVM虛擬化平臺
- 漏洞管理平臺『洞察』部署指南
- 雲平臺SDK攻略
- 網易雲音樂全面開源一款雲原生應用部署平臺:Horizon
- 雲管平臺的優勢有哪些?哪家雲管平臺好?
- go-admin部署到istio平臺Go
- 在滴滴雲 DC2 上部署 Manifold 文字收集與閱讀平臺
- CentOS7.2+OpenStack+kvm 雲平臺部署--用OZ工具製作openstack映象CentOS
- SAP雲平臺部署應用時遇到的502 Updating service failed - Bad GatewayAIGateway
- 使用Eclipse開發Java應用並部署到SAP雲平臺SCP上去EclipseJava
- 雲平臺和雲管平臺的三大區別詳細解析
- 跨平臺級聯dataguard配置
- 工位出租,資源配置平臺
- AI雲平臺介紹AI
- C#Winform快速開發平臺與軟體配置平臺C#ORM
- 將Java應用部署到SAP雲平臺neo環境的兩種方式Java
- StackGres 1.6,可私有部署的雲原生資料庫中介軟體平臺工程資料庫
- 使用SAP iRPA Studio建立的本地專案,如何部署到SAP雲平臺上?
- SAP雲平臺上部署應用時遇到disk quota不夠的問題