私有雲技術
使用腳本部署OpenStack平台
需要兩台主機,一台控制節點,一台計算節點
控制節點:安裝MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服務,主要作為認證、鏡像管理節點,以及提供Nova和Neutron服務的管理節點。提供Dashboard界面服務
計算節點:安裝nova-compute和Neutron服務,Nova服務提供雲主機服務,Neutron提供網絡服務
基礎環境配置
基礎配置
兩個節點設定第一張網卡為僅主機模式,第二張網卡為NAT模式,以及配置CPU虛拟化
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iN1YzNxYGZxM2N5UjM5IDZ4UmYmVjM3UGNwEDMkRDO08CXzIzLcRDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLzM3Lc9CX6MHc0RHaiojIsJye.png)
計算節點至少使用4 GB記憶體,硬碟不小于50 GB
IP位址配置
控制節點ip配置
# hostnamectl set-hostname controller
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
BOOTPROTO=static
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=8c4cfa11-e842-4d06-9320-0cf31d42075c
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.10
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
# vi /etc/sysconfig/network-scripts/ifcfg-eno33554960
NAME=eno33554960
UUID=69fd9c09-d0ec-496d-a0da-c7fc077b0e7a
DEVICE=eno33554960
IPADDR=192.168.20.10
GATEWAY=192.168.20.2
計算節點ip配置
# hostnamectl set-hostname compute
UUID=604a502b-fe44-4284-8361-27ca70ed1a89
IPADDR=192.168.10.20
UUID=9323fac9-2c37-4604-9dc9-777cbeefdcd6
IPADDR=192.168.20.20
上傳基礎鏡像(控制節點)
将XianDian-IaaS-v2.2.iso和CentOS-7-x86_64-DVD-1511.iso兩個鏡像包上傳至controller節點的/root目錄中
# ll
總用量 7012772
-rw-------. 1 root root 1635 5月 19 02:52 anaconda-ks.cfg
-rw-r--r--. 1 root root 4329570304 5月 20 17:11 CentOS-7-x86_64-DVD-1511.iso
-rw-r--r--. 1 root root 2851502080 11月 6 2017 XianDian-IaaS-v2.2.iso
将鏡像檔案挂載到/opt目錄
# mkdir /opt/centos7.2
# mkdir /opt/iaas
# mount /root/CentOS-7-x86_64-DVD-1511.iso /opt/centos7.2/
mount: /dev/loop0 寫保護,将以隻讀方式挂載
# mount /root/XianDian-IaaS-v2.2.iso /opt/iaas/
mount: /dev/loop1 寫保護,将以隻讀方式挂載
配置YUM源檔案
controller節點
# rm -rf /etc/yum.repos.d/CentOS-*
# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
compute節點
baseurl=ftp://192.168.10.10/centos7.2
baseurl=ftp://192.168.10.10/iaas/iaas-repo
安裝ftp服務(控制節點)
# yum install -y vsftpd
編輯配置檔案
# vi /etc/vsftpd/vsftpd.conf
檔案最上邊添加代碼
anon_root=/opt
重新開機服務
# systemctl restart vsftpd
配置防火牆政策(兩個節點)
# setenforce 0
# iptables -F
# iptables -X
# iptables -Z
# systemctl stop firewalld
安裝服務(兩個節點)
安裝iaas-xiandian軟體包
# yum install -y iaas-xiandian
配置環境變量(兩個節點)
# vi /etc/xiandian/openrc.sh
HOST_IP=192.168.10.10
HOST_NAME=controller
HOST_IP_NODE=192.168.10.20
HOST_NAME_NODE=compute
RABBIT_USER=openstack
RABBIT_PASS=000000
DB_PASS=000000
DOMAIN_NAME=demo
ADMIN_PASS=000000
DEMO_PASS=000000
KEYSTONE_DBPASS=000000
GLANCE_DBPASS=000000
GLANCE_PASS=000000
NOVA_DBPASS=000000
NOVA_PASS=000000
NEUTRON_DBPASS=000000
NEUTRON_PASS=000000
METADATA_SECRET=000000
INTERFACE_NAME=eno33554960
CINDER_DBPASS=000000
CINDER_PASS=000000
BLOCK_DISK=md126p3
TROVE_DBPASS=000000
TROVE_PASS=000000
SWIFT_PASS=000000
OBJECT_DISK=md126p4
STORAGE_LOCAL_NET_IP=192.168.10.20
HEAT_DBPASS=000000
HEAT_PASS=000000
CEILOMETER_DBPASS=000000
CEILOMETER_PASS=000000
AODH_DBPASS=000000
AODH_PASS=000000
使用腳本安裝OpenStack平台
安裝基礎服務(兩個節點)
通過腳本安裝基礎服務
# iaas-pre-host.sh
安裝完成後,退出并重新登陸,使主機名生效
安裝MYSQL資料庫服務(控制節點)
通過腳本安裝MYSQL資料庫服務
# iaas-install-mysql.sh
安裝Keystone認證服務(控制節點)
通過腳本安裝Keystone認證服務
# iaas-install-keystone.sh
安裝Glance鏡像服務(控制節點)
通過腳本安裝Glance鏡像服務
# iaas-install-glance.sh
安裝Nova計算服務
控制節點通過腳本安裝計算服務
# iaas-install-nova-controller.sh
計算節點通過腳本安裝計算服務
# iaas-install-nova-compute.sh
安裝Neutron網絡服務
控制節點通過腳本安裝網絡服務
# iaas-install-neutron-controller.sh
# iaas-install-neutron-controller-gre.sh
計算節點通過腳本安裝網絡服務
# iaas-install-neutron-compute.sh
# iaas-install-neutron-compute-gre.sh
安裝Dashboard服務(控制節點)
通過腳本安裝Dashboard服務
# iaas-install-dashboard.sh
安裝Cinder塊存儲服務
控制節點通過腳本安裝塊存儲服務
# iaas-install-cinder-controller.sh
計算節點通過腳本安裝塊存儲服務
# iaas-install-cinder-compute.sh
安裝Swift對象存儲服務
控制節點通過腳本安裝對象存儲服務
# iaas-install-swift-controller.sh
計算通過腳本安裝對象存儲服務
# iaas-install-swift-compute.sh
通路Dashboard服務
打開浏覽器,通路92.168.10.10/dashboard
登入後即可通路到Dashboard系統
OpenStack平台使用
建立鏡像
複制鏡像到控制節點(控制節點)
在控制節點找到qcow2鏡像
# cd /opt/iaas/images/
# ls
CentOS_6.5_x86_64_XD.qcow2 CentOS_7.2_x86_64_XD.qcow2 MySQL_5.6_XD.qcow2
上傳鏡像到Glane服務(控制節點)
将qcow2鏡像上傳到平台中
# source /etc/keystone/admin-openrc.sh
# glance image-create --name "centos7.2" --disk-format qcow2 --container-format bare --progress < CentOS_7.2_x86_64_XD.qcow2
[=============================>] 100%
+------------------+--------------------------------------+
| Property | Value |
| checksum | ea197f4c679b8e1ce34c0aa70ae2a94a |
| container_format | bare |
| created_at | 2020-05-20T19:39:58Z |
| disk_format | qcow2 |
| id | 554dedbb-4bc4-4825-ab8a-29385f1b6cfa |
| min_disk | 0 |
| min_ram | 0 |
| name | centos7.2 |
| owner | 07ea51a6ef9a4a3cb9f6930b2db2df7f |
| protected | False |
| size | 400752640 |
| status | active |
| tags | [] |
| updated_at | 2020-05-20T19:40:10Z |
| virtual_size | None |
| visibility | private |
建立外部網絡
建立網絡
在浏覽器選擇菜單欄“項目”→“網絡”→“網絡”指令,單擊右側“建立網絡”按鈕,建立虛拟機網絡
設定網絡
在彈出的視窗中,輸入網絡名稱為net-gre,管理狀态為up,單擊“前進”按鈕
建立子網
在彈出的對話框中填寫子網資訊,單擊“前進”按鈕
設定DHCP位址池
配置DHCP位址池,勾選“激活DHCP”複選框,添加“114.114.114.114”的DNS伺服器,單擊“已建立”按鈕建立網絡
選擇外部網絡
選擇菜單欄“管理者”→“系統”→“ 網絡”指令,在已建立的外部網絡中,選擇“操作”下拉菜單中“編輯網絡”菜單指令
在彈出的對話框中,勾選“外部網絡”複選框,單擊“儲存”按鈕
建立内部網絡
選擇菜單欄“項目”→“網絡”→“網絡”指令,右側單擊“建立網絡”按鈕,建立虛拟機網絡
設定網絡
在彈出的對話框中設定網絡名稱,然後單擊“前進”按鈕
設定子網
設定子網名稱為“int-subnet”,網絡位址為“10.10.0.0/24”,網關IP位址為“10.10.0.1”,單擊“前進”按鈕
設定DHCP
在彈出的對話框中,勾選“激活DHCP”複選框,并點選“已建立”按鈕
建立路由器
建立路由
選擇菜單欄“項目”→“網絡”→“路由”指令,右側單擊“建立路由”按鈕,建立路由
設定路由
在彈出的對話框中設定路由名稱為“route”,在外部網絡下拉菜單中,選擇外部網絡“net-gre”,單擊“建立路由”按鈕
添加内部網絡端口
單擊新建立的路由名稱,進入路由編輯頁面
選擇“接口”标簽,單擊“增加接口”按鈕
在彈出的對話框中,選擇“int-gre”内部網絡,然後單擊“送出”按鈕
管理安全組
管理default預設安全組
管理通路政策安全組,選擇菜單欄“項目”→“計算”→“通路&安全”指令,管理default預設規則
添加放行政策
單擊右側“添加規則”按鈕,放行通信政策
放行所有ICMP協定,單擊“添加”按鈕
放行所有TCP協定,單擊“添加”按鈕
放行所有UDP協定,單擊“添加”按鈕
建立雲主機
建立雲主機
建立雲主機,選擇菜單欄“項目”→“計算”→“雲主機”指令,單擊右側“建立雲主機”按鈕
設定雲主機名稱
在彈出的對話框中,輸入建立的雲主機名稱以及數量,然後單擊“下一步”按鈕
選擇雲主機鏡像
在“源”中選擇所要使用的鏡像檔案,單擊對應鏡像後的“+”按鈕,然後單擊“下一步”按鈕
選擇雲主機資源類型
在“flavor”中選擇所需雲主機的資源類型,選擇“m1.small”資源類型,單擊對應的“+”按鈕,然後單擊“下一步”按鈕
選擇雲主機網絡
在“網絡”中使雲主機使用建立的int-gre内部網絡,單擊對應的“+”按鈕,然後單擊“啟動執行個體”按鈕
綁定浮動ip位址
選擇菜單欄的“項目”→“計算”→“雲主機”指令,在“操作”的下拉菜單中選擇“綁定浮動IP”菜單指令
在彈出的對話框中單擊“+”按鈕,配置設定一個IP位址
單擊“配置設定IP”按鈕,單擊“關聯”按鈕,關聯浮動ip位址
檢視雲主機建立狀态
建立完成後,可以在“雲主機”頁面中顯示雲主機清單,可檢視到建立的雲主機狀态為“運作”
測試雲主機連通性
回到電腦,window+R打開CMD視窗,通過ping指令進行測試,可以連通雲主機
通過secureCRT工具,連接配接雲主機,檢視雲主機IP位址,使用者名為root,密碼為00000
Keystone服務運維
在OpenStack架構中,Keystone(OpenStack Identity Service)的功能是負責驗證身份、校驗服務規則和釋出服務令牌的,它實作了OpenStack的Identity API。Keystone可分解為兩個功能,即權限管理和服務目錄。權限管理主要用于使用者的管理授權。服務目錄,類似一個服務總線,或者說是整個OpenStack架構的系統資料庫。認證子產品提供API服務、Token令牌機制、服務目錄、規則和認證釋出等功能
Keystone運維指令
建立使用者(控制節點)
建立使用者的具體格式
$ openstack user create [--domain
[--password
[--enable | --disable]
建立一個名稱為“alice”賬戶,密碼為“mypassword123”,郵箱為“[email protected]”
# openstack user create --password mypassword123 --email [email protected] --domain demo alice
+-----------+----------------------------------+
| Field | Value |
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| email | [email protected] |
| enabled | True |
| id | fd6877910f884ef3b5b619adab16ada9 |
| name | alice |
建立項目(控制節點)
一個Project就是一個項目、團隊或組織,當請求OpenStack服務時,必須定義一個項目
建立項目的格式
$ openstack project create [--domain
[--description
[--enable | --disable]
建立一個名為“acme”的項目
# openstack project create --domain demo acme
+-------------+----------------------------------+
| Field | Value |
| description | |
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| enabled | True |
| id | 5a1740c1194d425b844f9df90e88d969 |
| is_domain | False |
| name | acme |
| parent_id | 1b3296609d0b4f82a7734e5439033935 |
建立角色(控制節點)
角色限定了使用者的操作權限
建立角色的具體格式
$ openstack user create
建立一個角色“compute-user”
# openstack role create compute-user
| domain_id | None |
| id | f18f7c0f40a54378aa4c51c3b250e56b |
| name | compute-user |
綁定使用者和項目權限(控制節點)
添加的使用者需要配置設定一定的權限,這就需要把使用者關聯綁定到對應的項目和角色
綁定使用者和項目權限的具體格式
$ openstack role add --user
給使用者“alice”配置設定“acme”項目下的“compute-user”角色
# openstack role add --user alice --project acme compute-user
Keystone基礎查詢指令
使用者清單查詢(控制節點)
OpenStack平台所使用的使用者可以通過Keystone元件進行查詢
查詢所有使用者清單資訊
# openstack user list
+----------------------------------+---------+
| ID | Name |
| 5cbf8d5eb0cd48b3b2018a988f52e405 | neutron |
| 6c82348164d646df9b2a94d183a41c3b | cinder |
| 7d569ea77c8f4e1e96995be7608c713a | demo |
| a689d312175643819f4f48cf44975cea | nova |
| b2ea672397fa40849b3b65ae6dd72f6a | admin |
| ce88d040605541b092c3e18717d08fd4 | swift |
| e91ee100c089479aa18392c821c52d38 | glance |
| fd6877910f884ef3b5b619adab16ada9 | alice |
查詢使用者詳細資訊和狀态
# openstack user show alice
項目清單查詢(控制節點)
查詢平台中所有存在項目清單
# openstack project list
| 5a1740c1194d425b844f9df90e88d969 | acme |
| 81945ab408cf4c8e86fadc28a83d2d2d | admin |
| d23d9122a904433b83cabcb96d048614 | service |
| daa94a9af47a4adfbed9a33086874186 | demo |
查詢“acme”項目的詳細資訊
# openstack project show acme
角色清單查詢(控制節點)
查詢角色清單資訊
# openstack role list
+----------------------------------+--------------+
| ID | Name |
| 1b7c050f80854656a5385cfa8a51f26e | admin |
| 64ed8b55474a49ab90ca2eca5625cbe0 | user |
| f18f7c0f40a54378aa4c51c3b250e56b | compute-user |
查詢“compute-user”角色的詳細資訊
# openstack role show compute-user
端點位址查詢(控制節點)
Keystone元件管理OpenStack平台中所有服務端點資訊,通過指令可以查詢平台中所有服務所使用的端點位址資訊
# openstack endpoint list
+-----------+-----------+--------------+--------------+---------+-----------+------------+
| ID | Region | Service Name | Service Type | Enabled | Interface | URL |
| 142d33757 | RegionOne | keystone | identity | True | admin | http://con |
| dad4a9290 | | | | | | troller:35 |
| 16113ef74 | | | | | | 357/v3 |
| a742b | | | | | | |
| 1f0fdb8af | RegionOne | swift | object-store | True | internal | http://con |
| bf94b7abf | | | | | | troller:80 |
| 28ac38dff | | | | | | 80/v1/AUTH |
| c0f6a | | | | | | _%(tenant_ |
| | | | | | | id)s |
| 29f944673 | RegionOne | swift | object-store | True | public | http://con |
| ad74b7e9d | | | | | | troller:80 |
| aa206a40a | | | | | | 80/v1/AUTH |
| 766c8 | | | | | | _%(tenant_ |
| 3700332b3 | RegionOne | keystone | identity | True | public | http://con |
| a6346618c | | | | | | troller:50 |
| 5e062d71f | | | | | | 00/v3 |
| 37353 | | | | | | |
| 3cc9a5531 | RegionOne | glance | image | True | public | http://con |
| ee247318c | | | | | | troller:92 |
| 28d35ade6 | | | | | | 92 |
| 62744 | | | | | | |
| 45347af92 | RegionOne | cinder | volume | True | internal | http://con |
| 70d42e6a5 | | | | | | troller:87 |
| 08b8bed47 | | | | | | 76/v1/%(te |
| bad38 | | | | | | nant_id)s |
| 46cfdc6a4 | RegionOne | cinder | volume | True | public | http://con |
| 0bf48b4bb | | | | | | troller:87 |
| 8a8504d2b | | | | | | 76/v1/%(te |
| c24bb | | | | | | nant_id)s |
| 54acfa284 | RegionOne | nova | compute | True | admin | http://con |
| f204dc98c | | | | | | troller:87 |
| 4aa22de7b | | | | | | 74/v2.1/%( |
| 034c1 | | | | | | tenant_id) |
| | | | | | | s |
| 54ca2be22 | RegionOne | glance | image | True | internal | http://con |
| f60473ab8 | | | | | | troller:92 |
| b723935be | | | | | | 92 |
| 8d455 | | | | | | |
| 67b8130ad | RegionOne | keystone | identity | True | internal | http://con |
| 3104b398f | | | | | | troller:50 |
| f49cb9fa1 | | | | | | 00/v3 |
| edbbf | | | | | | |
| 71487ce33 | RegionOne | cinderv2 | volumev2 | True | admin | http://con |
| d8b4263b5 | | | | | | troller:87 |
| d4a450256 | | | | | | 76/v2/%(te |
| 1b08f | | | | | | nant_id)s |
| 7ca7ca1bb | RegionOne | cinder | volume | True | admin | http://con |
| d0c47e6bb | | | | | | troller:87 |
| 8a80b56a4 | | | | | | 76/v1/%(te |
| 23d17 | | | | | | nant_id)s |
| 8fbea79b4 | RegionOne | swift | object-store | True | admin | http://con |
| 68c472eaf | | | | | | troller:80 |
| 92d100f03 | | | | | | 80/v1 |
| 63385 | | | | | | |
| a2e126d9b | RegionOne | nova | compute | True | public | http://con |
| ea141d689 | | | | | | troller:87 |
| 454e3cf74 | | | | | | 74/v2.1/%( |
| e2919 | | | | | | tenant_id) |
| ada04574a | RegionOne | neutron | network | True | admin | http://con |
| 5e847e7a2 | | | | | | troller:96 |
| 7d4e05959 | | | | | | 96 |
| bff7d | | | | | | |
| d696f82bb | RegionOne | neutron | network | True | public | http://con |
| 4574cedb1 | | | | | | troller:96 |
| 9d7dbb9dd | | | | | | 96 |
| af7c0 | | | | | | |
| db6d1ece1 | RegionOne | nova | compute | True | internal | http://con |
| 6074043b1 | | | | | | troller:87 |
| 73f64cff2 | | | | | | 74/v2.1/%( |
| c9f3f | | | | | | tenant_id) |
| dc30fb7cb | RegionOne | cinderv2 | volumev2 | True | public | http://con |
| 46b4649be | | | | | | troller:87 |
| c721c21f9 | | | | | | 76/v2/%(te |
| d52d4 | | | | | | nant_id)s |
| f27638936 | RegionOne | neutron | network | True | internal | http://con |
| c444e3fb1 | | | | | | troller:96 |
| 1c824bc02 | | | | | | 96 |
| 9de81 | | | | | | |
| f43aa80bc | RegionOne | cinderv2 | volumev2 | True | internal | http://con |
| b2f4db598 | | | | | | troller:87 |
| afb9d1026 | | | | | | 76/v2/%(te |
| 8874e | | | | | | nant_id)s |
| f43c02b42 | RegionOne | glance | image | True | admin | http://con |
| 67c486f85 | | | | | | troller:92 |
| e8efc3fd6 | | | | | | 92 |
| d8b66 | | | | | | |
Glance服務運維
Glance鏡像服務實作發現、注冊、擷取虛拟機鏡像和鏡像中繼資料,鏡像資料支援多種存儲系統,可以是簡單檔案系統、對象存儲系統等。Glance鏡像服務是典型的C/S架構,Glance架構包括glance-CLIent、Glance和Glance Store。Glance主要包括REST API、資料庫抽象層(DAL)、域控制器(glance domain controller)和注冊層(registry layer),Glance 使用集中資料庫(Glance DB)在Glance各元件間直接共享資料
Glance管理鏡像
建立鏡像(控制節點)
将提供的鏡像檔案cirros-0.3.4-x86_64-disk.img上傳到控制節點的/root目錄
建立一個名稱為“cirros”的鏡像
# glance image-create --name "cirros" --disk-format qcow2 --container-format bare --progress < cirros-0.3.4-x86_64-disk.img
| checksum | ee1eca47dc88f4879d8a229cc70a07c6 |
| created_at | 2020-05-21T22:13:34Z |
| id | d2b3013e-4aac-4e4b-a506-a88de0e6bdad |
| name | cirros |
| owner | 81945ab408cf4c8e86fadc28a83d2d2d |
| size | 13287936 |
| updated_at | 2020-05-21T22:13:35Z |
檢視鏡像清單(控制節點)
查詢鏡像清單指令及結果
# glance image-list
+--------------------------------------+-----------+
| ID | Name |
| edd13c0b-9711-4ef8-9a27-c565ea511ba3 | centos7.2 |
| d2b3013e-4aac-4e4b-a506-a88de0e6bdad | cirros |
Glance鏡像運維
檢視鏡像詳情(控制節點)
檢視鏡像的詳細資訊
# glance image-show d2b3013e-4aac-4e4b-a506-a88de0e6bdad
更改鏡像(控制節點)
使用glance image-update指令更新鏡像資訊
# glance image-update --min-disk=1 d2b3013e-4aac-4e4b-a506-a88de0e6bdad
| min_disk | 1 |
| updated_at | 2020-05-21T22:21:27Z |
删除鏡像(控制節點)
使用glance image-delete删除鏡像資訊
# glance image-delete d2b3013e-4aac-4e4b-a506-a88de0e6bdad
Nova服務運維
計算服務(Nova)表示雲平台的工作負載的核心。如果有些雲服務的工作中不包括計算,那麼它們充其量隻代表靜态存儲,所有動态活動都會涉及一些計算元素。OpenStack Compute這個名稱指的是一個特定的項目,該項目也被稱為Nova,OpenStack的其他元件依托Nova,與Nova協同工作,組成了整個OpenStack雲平台
Nova,是OpenStack計算的彈性控制器。Nova可以說是整個雲平台最重要的元件,其功能包括運作虛拟機執行個體、管理網絡以及通過使用者和項目來控制對雲的通路。OpenStack最基礎的開源項目名字稱為Nova,它提供的軟體可以控制基礎設施即服務(IaaS)雲計算平台,與AmazonEC2和Rackspace雲伺服器有一定程度的相似。OpenStack Compute沒有包含任何的虛拟化軟體,相反,它定義和運作在主機作業系統上的虛拟化機制互動的驅動程式,并通過基于Web的程式應用接口(API)來提供功能的使用
Nova運維指令
Nova管理安全組規則
安全組(security group)是一些規則的集合,用來對虛拟機的通路流量加以限制,這反映到底層,就是使用iptables,給虛拟機所在的主控端添加iptables規則。可以定義n個安全組,每個安全組可以有n個規則,可以給每個執行個體綁定n個安全組。Nova中總是有一個default安全組,這個是不能被删除的。建立執行個體的時候,如果不指定安全組,會預設使用這個default安全組。現在Nova中安全組應該會移到Neutron中,并且會增加對虛拟機外出流量的控制
建立安全組
# nova secgroup-create test 'test the nova command about the rules'
+--------------------------------------+------+---------------------------------------+
| Id | Name | Description |
| d1ce4ef1-26c8-4b3d-958b-bc778bf283f3 | test | test the nova command about the rules |
Nova管理虛拟機類型(控制節點)
虛拟機類型是在建立執行個體的時候,配置設定給執行個體的資源情況
使用指令建立一個名為test,ID為6,記憶體為2048 MB,磁盤為20 GB,vCPU數量為2的雲主機類型
# nova flavor-create test 6 2048 20 2
+----+------+-----------+------+-----------+------+-------+-------------+-----------+
| ID | Name | Memory_MB | Disk | Ephemeral | Swap | VCPUs | RXTX_Factor | Is_Public |
| 6 | test | 2048 | 20 | 0 | | 2 | 1.0 | True |
檢視test雲主機類型的詳細資訊
# nova flavor-show test
+----------------------------+-------+
| Property | Value |
| OS-FLV-DISABLED:disabled | False |
| OS-FLV-EXT-DATA:ephemeral | 0 |
| disk | 20 |
| extra_specs | {} |
| id | 6 |
| name | test |
| os-flavor-access:is_public | True |
| ram | 2048 |
| rxtx_factor | 1.0 |
| swap | |
| vcpus | 2 |
Nova執行個體管理
啟動執行個體
格式
nova boot [--flavor
[--image-with
[--snapshot
[--max-count
[--file
[--user-data
[--availability-zone
[--security-groups
[--block-device-mapping
[--block-device key1=value1[,key2=value2...]]
[--swap
[--ephemeral size=
[--hint
[--nic
[--config-drive
[--access-ip-v4
[--description
固定參數
可選參數
[--flavor
[--image
[--image-with
[--boot-volume
[--snapshot
[--num-instances
[--meta
[--file
[--key-name
[--user-data
[--availability-zone
[--security-groups
[--block-device-mapping
[--block-device key1=value1[,key2=value2...]] 塊裝置參數
[--swap
[--ephemeral size=
[--hint
[--nic ] 配置IP
[--config-drive
[--poll] 顯示建立進度
删除執行個體
usage: nova delete [--all-tenants]
Immediately shut down and delete specified server(s).
Positional arguments:
Optional arguments:
--all-tenants Delete server(s) in another tenant by name (Admin only).
Neutron服務運維
Neutron網絡目的是靈活地劃分實體網絡,在多租戶環境下提供給每個租戶獨立的網絡環境。它是可以被使用者建立的對象,如果要和實體環境下的概念映射的話,這個對象相當于一個巨大的交換機,可以擁有無限多個動态可建立和銷毀的虛拟端口
Neutron查詢(控制節點)
使用Neutron相關指令查詢網絡服務的清單資訊中的“binary”一列
# neutron agent-list -c binary
+---------------------------+
| binary |
| neutron-openvswitch-agent |
| neutron-lbaas-agent |
| neutron-metadata-agent |
| neutron-l3-agent |
| neutron-dhcp-agent |
查詢網絡詳情(控制節點)
# neutron net-list
+-----------------------------------+---------+------------------------------------+
| id | name | subnets |
| 9e923ba3-b584-47bc-9bca- | int-gre | f3d75dd9-4970-402b- |
| eef0e49d1efe | | bdd6-f34e0cab877b 10.10.0.0/24 |
| 77654301-f079-40b2-8658-3087c4dd3 | net-gre | 473b2662-6dcd-494e-ab7f- |
| 6fb | | e0a7f80ba0ee 192.168.20.0/24 |
+-----------------------------------+---------+------------------------------------+
查詢Neutron相關元件服務(控制節點)
使用Neutron相關指令查詢網絡服務DHCP agent的詳細資訊
# neutron agent-list
+-----------+------------+-----------+-------------------+-------+----------------+--------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
| 46c9dd95- | Open | compute | | :-) | True | neutron- |
| 66a0 | vSwitch | | | | | openvswitch- |
| -4e5a- | agent | | | | | agent |
| 8b8d-0762 | | | | | | |
| 62e4b7a0 | | | | | | |
| 7d210742- | Loadbalanc | controlle | | xxx | True | neutron- |
| f656-42a9 | er agent | r | | | | lbaas-agent |
| -9103-ba1 | | | | | | |
| 4a36e4ad2 | | | | | | |
| a3899944 | Metadata | controlle | | :-) | True | neutron- |
| -245f- | agent | r | | | | metadata- |
| 407a- | | | | | | agent |
| abfe-2914 | | | | | | |
| 0779e2ee | | | | | | |
| abd22fd2- | L3 agent | controlle | nova | :-) | True | neutron-l3-a |
| 50f4-4997 | | r | | | | gent |
| -b3bf-923 | | | | | | |
| 2785e15a5 | | | | | | |
| c407a59a- | Metadata | compute | | :-) | True | neutron- |
| 59cb-45f1 | agent | | | | | metadata- |
| -9ff5-211 | | | | | | agent |
| 51799c344 | | | | | | |
| def73e89 | Open | controlle | | :-) | True | neutron- |
| -27ba- | vSwitch | r | | | | openvswitch- |
| 4b52 | agent | | | | | agent |
| -88db-580 | | | | | | |
| d30419ea0 | | | | | | |
| f4772d45- | DHCP agent | controlle | nova | :-) | True | neutron- |
| 95a4-49d4 | | r | | | | dhcp-agent |
| -b69c-296 | | | | | | |
| 7a037649d | | | | | | |
Cinder服務運維
Cinder是OpenStack Block Storage(OpenStack塊存儲)的項目名稱,Cinder的核心功能是對卷的管理,允許對卷、卷的類型、快照進行處理。然而,它并沒有實作對塊裝置的管理和實際服務(提供邏輯卷),而是通過後端的統一存儲接口,支援不同塊裝置廠商的塊存儲服務,實作其驅動支援并于OpenStack進行整合。Cinder可以支援如NetAPP、SolidFire、華為、EMC和IBM等知名存儲廠商以及衆多開源塊存儲系統
建立雲硬碟(控制節點)
建立一個2 GB的雲硬碟extend-demo
# cinder create --name cinder-volume-demo 2
+--------------------------------+--------------------------------------+
| Property | Value |
| attachments | [] |
| availability_zone | nova |
| bootable | false |
| consistencygroup_id | None |
| created_at | 2020-05-21T23:01:01.000000 |
| description | None |
| encrypted | False |
| id | 22585efe-a7a5-49df-b942-096e0ff57a71 |
| metadata | {} |
| migration_status | None |
| multiattach | False |
| name | cinder-volume-demo |
| os-vol-host-attr:host | None |
| os-vol-mig-status-attr:migstat | None |
| os-vol-mig-status-attr:name_id | None |
| os-vol-tenant-attr:tenant_id | 81945ab408cf4c8e86fadc28a83d2d2d |
| replication_status | disabled |
| size | 2 |
| snapshot_id | None |
| source_volid | None |
| status | creating |
| updated_at | None |
| user_id | b2ea672397fa40849b3b65ae6dd72f6a |
| volume_type | None |
通過cinder-list指令檢視雲硬碟資訊
# cinder list
+--------------------------------------+--------+--------------------+------+-------------+----------+-------------+
| ID | Status | Name | Size | Volume Type | Bootable | Attached to |
| 22585efe-a7a5-49df-b942-096e0ff57a71 | error | cinder-volume-demo | 2 | - | false | |
建立雲硬碟卷類型(控制節點)
建立type辨別的卷類型
# cinder type-create lvm
+--------------------------------------+------+-------------+-----------+
| ID | Name | Description | Is_Public |
| f4aad652-c573-495a-8199-9ec15122a378 | lvm | - | True |
檢視現有的卷類型
[root@controller ~]# cinder type-list
建立帶辨別雲硬碟(控制節點)
建立一塊帶“lvm”辨別的雲硬碟
# cinder create --name type_test_demo --volume-type lvm 1
| created_at | 2020-05-21T23:06:04.000000 |
| id | e74a9773-65fd-4183-9cee-ad3911e8461b |
| name | type_test_demo |
| size | 1 |
| volume_type | lvm |
查詢資訊,看到該卷的volume_type字段已修改為“lvm”
# cinder show type_test_demo
| status | error |
| updated_at | 2020-05-21T23:06:06.000000 |
删除指定的Cinder卷
# cinder delete cinder-volume-demo
Request to delete volume cinder-volume-demo has been accepted.
Swift服務運維
Swift構築在比較便宜的标準硬體存儲基礎設施之上,無需采用RAID(磁盤備援陣列),通過在軟體層面引入一緻性散列技術提高資料備援性、高可用性和可伸縮性,支援多租戶模式、容器和對象讀寫操作,适合解決網際網路的應用場景下非結構化資料存儲問題。在OpenStack中,Swift主要用于存儲虛拟機鏡像,用于Glance的後端存儲。在實際運用中,Swift的典型運用是網盤系統,代表是“Dropbox”,存儲類型大多為圖檔、郵件、視訊和存儲備份等靜态資源
Swift查詢指令(控制節點)
建立容器
需要建立一個名稱為“test”的容器
# swift post test
查詢容器
檢視“test”容器裡面的内容
# swift list test
建立file目錄
# mkdir file
# touch one.txt
# touch two.doc
# touch three.png
Swift上傳和下載下傳(控制節點)
上傳檔案至容器
上傳一個空白的“file”目錄
# swift upload test file/
file/
将one.txt檔案上傳到“test”容器内file目錄内
# swift upload test/file one.txt
file/one.txt
将剩下的two.doc和three.png遞歸上傳到“test”容器下的file目錄内
# mv two.doc three.png file/
file/three.png
file/two.doc
從容器中下載下傳檔案
資料在Swift叢集内儲存,随時供使用者下載下傳使用
# swift download test file/three.png
file/three.png [auth 2.329s, headers 2.725s, total 2.726s, 0.000 MB/s]
從容器中删除檔案
磁盤容量有限,需要删除一些相對價值低的資料,空出更多的空間
# swift delete test file/three.png
檢視容器服務狀态
通過swift stat指令來檢視整個Account賬戶下Swift狀态
# swift stat
Account: AUTH_81945ab408cf4c8e86fadc28a83d2d2d
Containers: 1
Objects: 4
Bytes: 0
Containers in policy "policy-0": 1
Objects in policy "policy-0": 4
Bytes in policy "policy-0": 0
X-Account-Project-Domain-Id: 1b3296609d0b4f82a7734e5439033935
X-Timestamp: 1590102621.65325
X-Trans-Id: txe6c38a6ca5e342d09321e-005ec70c3e
Content-Type: text/plain; charset=utf-8
Accept-Ranges: bytes
建構LNMP+WordPress
使用建立的雲主機進行操作
安裝LNMP環境
修改主機名
# hostnamectl set-hostname lnmp
上傳軟體包
将提供的lnmp1.6-full.tar.gz軟體包,上傳到虛拟機的/root目錄下,并解壓
# tar -zxvf lnmp1.6-full.tar.gz
配置DNS
# vi /etc/sysconfig/network-scripts/ifcfg-eth0
DNS="114.114.114.114"
執行安裝腳本
# cd lnmp1.6-full
# ./install.sh
選擇預設(Default)的軟體安裝版本,設定資料庫密碼
安裝成功後按Ctrl+C退出
使用浏覽器輸入ip檢視頁面
部署WordPress應用
資料庫基礎配置
登入資料庫
# mysql -uroot -p123456
建立資料庫
> create database wordpress;
賦予遠端權限
> grant all privileges on *.* to root@localhost identified by'123456' with grant option;
> grant all privileges on *.* to root@"%" identified by'123456' with grant option;
壓縮包基礎配置
将提供的wordpress-4.7.3-zh_CN.zip壓縮包上傳至/root目錄并解壓
# unzip wordpress-4.7.3-zh_CN.zip
删除nginx項目的預設頁面
# cd /home/wwwroot/default/
# rm -rf index.html
複制檔案
# cd /root/wordpress
# cp -rvf * /home/wwwroot/default/
賦予權限
# chmod 777 *
将模闆配置檔案複制并改名
# cp wp-config-sample.php wp-config.php
編輯模闆配置檔案
# vi wp-config.php
// ** MySQL 設定 - 具體資訊來自您正在使用的主機 ** //
/** WordPress資料庫的名稱 */
define('DB_NAME', 'wordpress');
/** MySQL資料庫使用者名 */
define('DB_USER', 'root');
/** MySQL資料庫密碼 */
define('DB_PASSWORD', '123456');
/** MySQL主機 */
define('DB_HOST', '127.0.0.1');
/** 建立資料表時預設的文字編碼 */
define('DB_CHARSET', 'utf8');
/** 資料庫整理類型。如不确定請勿更改 */
define('DB_COLLATE', '');
浏覽器配置
浏覽器輸入ip進入WordPress安裝頁面
點選安裝之後重新整理頁面
點選登入,輸入使用者名密碼
進入WordPress應用的背景儀表盤界面,點選左上角myblog