私有雲技術 使用腳本部署OpenStack平臺 需要兩台主機,一臺控制節點,一臺計算節點 控制節點:安裝MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服務,主要作為認證、鏡像管理節點,以及提供Nova和Neutron服務的管理節點。提供Dashboard界 ...
私有雲技術
使用腳本部署OpenStack平臺
需要兩台主機,一臺控制節點,一臺計算節點
控制節點:安裝MySQL、Keystone、Glance、Nova、Neutron、Dashboard等服務,主要作為認證、鏡像管理節點,以及提供Nova和Neutron服務的管理節點。提供Dashboard界面服務
計算節點:安裝nova-compute和Neutron服務,Nova服務提供雲主機服務,Neutron提供網路服務
基礎環境配置
基礎配置
兩個節點設置第一張網卡為僅主機模式,第二張網卡為NAT模式,以及配置CPU虛擬化
計算節點至少使用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
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=eno33554960
UUID=69fd9c09-d0ec-496d-a0da-c7fc077b0e7a
DEVICE=eno33554960
ONBOOT=yes
IPADDR=192.168.20.10
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
計算節點ip配置
# hostnamectl set-hostname compute
# 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=604a502b-fe44-4284-8361-27ca70ed1a89
DEVICE=eno16777736
ONBOOT=yes
IPADDR=192.168.10.20
NETMASK=255.255.255.0
GATEWAY=192.168.10.2
# vi /etc/sysconfig/network-scripts/ifcfg-eno33554960
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=eno33554960
UUID=9323fac9-2c37-4604-9dc9-777cbeefdcd6
DEVICE=eno33554960
ONBOOT=yes
IPADDR=192.168.20.20
NETMASK=255.255.255.0
GATEWAY=192.168.20.2
上傳基礎鏡像(控制節點)
將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
gpgcheck=0
enabled=1
compute節點
# rm -rf /etc/yum.repos.d/CentOS-*
# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=ftp://192.168.10.10/centos7.2
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.10.10/iaas/iaas-repo
gpgcheck=0
enabled=1
安裝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”的NDS伺服器,單擊“已創建”按鈕創建網路
選擇外部網路
選擇菜單欄“管理員”→“系統”→“ 網路”命令,在已創建的外部網路中,選擇“操作”下拉菜單中“編輯網路”菜單命令
在彈出的對話框中,勾選“外部網路”覆選框,單擊“保存”按鈕
創建內部網路
創建網路
選擇菜單欄“項目”→“網路”→“網路”命令,右側單擊“創建網路”按鈕,創建虛擬機網路
設置網路
在彈出的對話框中設置網路名稱,然後單擊“前進”按鈕
設置子網
設置子網名稱為“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 <domain>]
[--password <password>]
[--email <email-address>]
[--enable | --disable]
<name>
創建一個名稱為“alice”賬戶,密碼為“mypassword123”,郵箱為“[email protected]”
# source /etc/keystone/admin-openrc.sh
# 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 <domain>]
[--description <description>]
[--enable | --disable]
<project-name>
創建一個名為“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 <name>
創建一個角色“compute-user”
# openstack role create compute-user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | f18f7c0f40a54378aa4c51c3b250e56b |
| name | compute-user |
+-----------+----------------------------------+
綁定用戶和項目許可權(控制節點)
添加的用戶需要分配一定的許可權,這就需要把用戶關聯綁定到對應的項目和角色
綁定用戶和項目許可權的具體格式
$ openstack role add --user <user> --project <project> <role>
給用戶“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
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| email | [email protected] |
| enabled | True |
| id | fd6877910f884ef3b5b619adab16ada9 |
| name | alice |
+-----------+----------------------------------+
項目列表查詢(控制節點)
查詢平臺中所有存在項目列表
# openstack project list
+----------------------------------+---------+
| ID | Name |
+----------------------------------+---------+
| 5a1740c1194d425b844f9df90e88d969 | acme |
| 81945ab408cf4c8e86fadc28a83d2d2d | admin |
| d23d9122a904433b83cabcb96d048614 | service |
| daa94a9af47a4adfbed9a33086874186 | demo |
+----------------------------------+---------+
查詢“acme”項目的詳細信息
# openstack project show acme
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | |
| domain_id | 1b3296609d0b4f82a7734e5439033935 |
| enabled | True |
| id | 5a1740c1194d425b844f9df90e88d969 |
| is_domain | False |
| name | acme |
| parent_id | 1b3296609d0b4f82a7734e5439033935 |
+-------------+----------------------------------+
角色列表查詢(控制節點)
查詢角色列表信息
# openstack role list
+----------------------------------+--------------+
| ID | Name |
+----------------------------------+--------------+
| 1b7c050f80854656a5385cfa8a51f26e | admin |
| 64ed8b55474a49ab90ca2eca5625cbe0 | user |
| f18f7c0f40a54378aa4c51c3b250e56b | compute-user |
+----------------------------------+--------------+
查詢“compute-user”角色的詳細信息
# openstack role show compute-user
+-----------+----------------------------------+
| Field | Value |
+-----------+----------------------------------+
| domain_id | None |
| id | f18f7c0f40a54378aa4c51c3b250e56b |
| name | 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_ |
| | | | | | | id)s |
| 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 | | |