Openstack是目前比較流行的一個實作雲計算平台的項目,本文通過雲計算概述、Openstack簡介、Openstack核心子產品、Openstack實戰部署這幾個方面來介紹Openstack。
一、雲計算概述
1.1、 雲計算是一個資源池,它為我們提供了諸如水、電、瓦斯一樣的基礎服務。
1.2 、雲計算是一種按使用量付費的模式,這種模式可以快速、高效地提供網絡,伺服器,存儲,應用軟體,服務等,我們不必關心如何實作,是以隻需投入很少的管理工作,隻需和服務供應商進行很少的互動。
1.3、雲計算從廣義上可以分為如下幾種模式:IaaS(基礎設施即服務)、PaaS(平台即服務)、SaaS(軟體即服務)
1)IaaS:Amazon、阿裡雲、騰訊雲提供的雲主機即IaaS,我們拿到的是一台機器,可以自定義作業系統。
2)PaaS:面向開發者,直接給使用者提供一個平台來運作使用者的程式,早期的idc服務商賣的主機、新浪的sae、阿裡雲的雲資料庫等。
3)SaaS:賣的是服務,比如騰訊企業郵箱、印象筆記等
二、Openstack簡介
2.2、由NASA(美國國家航空航天局)和Rackspace合作研發并發起的,以Apache許可證授權的自由軟體和開放源代碼項目,用python語言開發,可以實作私有雲或者公有雲。
2.3、主要有三個最基礎元件:計算服務、網絡服務、存儲服務。
<a href="http://s1.51cto.com/wyfs02/M01/86/48/wKioL1e64NahhzF4AAA5j5ct8m8583.png" target="_blank"></a>
<a href="http://s1.51cto.com/wyfs02/M01/86/48/wKiom1e64jODdHl5AADQrAB9Xao652.png" target="_blank"></a>
三、Openstack核心子產品
3.1、6個核心服務
1)nova:計算中心,對比阿裡雲的ESC,支援kvm,xen等虛拟化技術
2)keystone:認證中心
3)neutron:網絡服務中心
4)swift:對象存儲服務,存儲圖檔,附件等檔案,對比騰訊雲的COS
5)cinder:塊存儲服務,對比雲盤
6)glance:鏡像管理中心
<a href="http://s1.51cto.com/wyfs02/M01/86/48/wKioL1e65HXzx1jkAABJtM7zRqc281.png" target="_blank"></a>
3.2、其他可選元件
<a href="http://s3.51cto.com/wyfs02/M01/86/48/wKiom1e65GLAU_7qAACvvFz7oFo044.png" target="_blank"></a>
1)HORIZON:控制台
2)CEILOMETER:提供監控和資料采集
3)HEAT:自動化部署
4)TROVE:資料庫應用服務
5)SAHARA:大資料處理
6)IRONIC:實體機管理服務
7)ZAQAR:消息服務
8)MANILA:檔案共享服務
9)DESIGNATE:DNS服務
10)BARBICAN:key管理中心
11)MAGNUM:容器
12)MURANO:應用目錄
13)CONGRESS:政策即服務
四、Openstack實戰部署
4.1、前期準備
1)實驗環境:至少兩台機器
2)在RHEL7/CentOS7上安裝openstack libertyl
3)兩台虛拟機,安裝centos7系統(準備兩個網卡,一個NAT,另一個僅主機)
4)nat網卡設定ip,可以聯網,僅主機的網卡隻要我們windows可以通就行,主要是用于xshell遠端連接配接
5)關閉selinuxl、關閉iptables
systemctl stop firewalld
systemctl disable firewalld
6)關閉NetworkManager
systemctl stop NetworkManager
systemctl disable NetworkManager
7)centos7配置iptables
8)定義密碼,在部署openstack過程中會在多個地方使用到密碼,為了友善管理和安全設定,我們需要提前先定義好密碼,使用指令mkpasswd -s 0 生成随機字元串
賬号
描述
密碼
Database password
Root password for the database
tn1Pi6Ytm
ADMIN_PASS
Password of user admin
3qiVpzU2x
CEILOMETER_DBPASS
Database password for the Telemetry service
Czn3bF1hm
CEILOMETER_PASS
Password of Telemetry service userceilometer
abquh12GU
CINDER_DBPASS
Database password for the Block Storageservice
O3bwbpoZ3
CINDER_PASS
Password of Block Storage service usercinder
hf8LX9bow
DASH_DBPASS
Database password for the dashboard
5qBZxnn1g
DEMO_PASS
Password of user demo
9TtbgaA1q
GLANCE_DBPASS
Database password for Image service
Zznky4tP0
GLANCE_PASS
Password of Image service user glance
Wuyaf4cV6
HEAT_DBPASS
Database password for the Orchestrationservice
b7Fk5wjLg
HEAT_DOMAIN_PASS
Password of Orchestration domain
7Gotb3eoH
HEAT_PASS
Password of Orchestration service userheat
eqQ2jLgz0
KEYSTONE_DBPASS
Database password of Identity service
f6zx0gURv
NEUTRON_DBPASS
Database password for the Networking service
quidyOC50
NEUTRON_PASS
Password of Networking service userneutron
mdcGVl29i
NOVA_DBPASS
Database password for Compute service
RYgv0rg7p
NOVA_PASS
Password of Compute service user nova
hsSNsqc43
RABBIT_PASS
Password of user guest of RabbitMQ
o3NXovnz5
SWIFT_PASS
Password of Object Storage service userswift
6ci5xWOdk
METADATA_SECRET
m8uhmQTu2
9)設定主機名
兩台機器都設定hostname
hostnamectl set-hostname controller
hostnamectl set-hostname compute
編輯/etc/hosts:
192.168.16.111 controller
192.168.16.112 compute
10)同步時間
controller上:
yum install -y chrony
vim /etc/chrony.conf //增加或更改
allow 192.168.16.0/24
儲存後,執行
systemctl enable chronyd.service
systemctl start chronyd.service
compute上:
yum install -y chrony
server controller iburst
4.2、安裝openstack
1)安裝openstack的yum源(兩個機器上都操作)
yum install -y centos-release-openstack-liberty
2)更新所有的包(兩個機器上都操作)
yum upgrade //結束後重新開機系統
3)安裝openstack 用戶端和openstack-selinux
yum install -y python-openstackclient openstack-selinux
以下 4.3-4.12 步驟若無特殊說明則預設表示在 controller 機器上執行操作
4.3、安裝sql服務
1)安裝
yum install -y mariadb mariadb-server MySQL-python
2)編輯配置檔案
vim /etc/my.cnf.d/mariadb_openstack.cnf //加入下面内容
[mysqld]
bind-address= 192.168.16.111
default-storage-engine= innodb
innodb_file_per_table
collation-server= utf8_general_ci
init-connect= 'SET NAMES utf8'
character-set-server= utf8
3)啟動mariadb:
systemctl enable mariadb.service
systemctl start mariadb.service
4)安全配置,設定root密碼
mysql_secure_installation
設定root密碼為:tn1Pi6Ytm
4.4、安裝nosql
1)nosql資料庫被Telemetry service用到,在這裡我們安裝的是mongodb
yum install -y mongodb-server mongodb
vim /etc/mongod.conf //更改如下配置
bind_ip= 192.168.16.111
smallfiles= true
3)啟動服務
systemctl enable mongod.service
systemctl start mongod.service
4.5、安裝消息隊列
1)rabbitmq消息隊列服務在openstack中起到非常關鍵的作用,它好比是一個交通樞紐,各個元件之間的通信由它來完成。
yum install -y rabbitmq-server
2)啟動rabbitmq-server服務
systemctl enable rabbitmq-server
systemctl start rabbitmq-server
3)添加openstack使用者
rabbitmqctl add_user openstack o3NXovnz5 //使用者名為openstack,密碼為o3NXovnz5
4)為openstack使用者授權
rabbitmqctl set_permissions openstack ".*" ".*" ".*"
允許openstack使用者可以配置,可以寫,可以讀
4.6、增加identity
1、keystone介紹
1)identity即keystone,它是openstack的驗證中心,所有的服務都由它來認證。
2)在keyston中有以下角色:tenants(租戶或項目)、使用者、角色、服務目錄和端點
3)如果把飯店比作為Tenant,住宿的人就是User,飯店可以提供多種諸如住宿、娛樂、飲食等多種服務(Service),具體來說,住宿是一種具體的服務(Endpoint)。就住宿而言,有普通間和總統套房,如果你的VIP等級(Role)高,你可以享受到豪華的總統套房。入住前,我們需要拿身份證開房(Credential),認證身份證不是冒牌貨後(Authenticaiton),會給你一個房卡(Token),然後你拿着房卡,就可以進入房間和享受各種服務。
4)以建立一個虛拟機(server)為例,keystone在openstack的通路流程大緻如下:
a、使用者Alice通過自己的戶名和密碼向keystone申請token,keystone認證使用者名和密碼後,傳回token1
b、Alice通過token1發送keystone查詢他所擁有的租戶,keystone驗證token1成功後,傳回Alice的所有Tenant
c、Alice選擇一個租戶,通過使用者名和密碼申請token,keystone認證使用者名、密碼、tenant後,傳回token2。(其實1、2步僅僅是為了查詢tenant,如果已經知道tenant,可以忽略1、2步)
d、Alice通過token2發送建立server的請求,keystone驗證token2(包括該token是否有效,是否有權限建立虛拟機等)成功後,然後再把請求下發到nova,最終建立虛拟機
2、前期準備
1)登陸mysql,建立資料庫
mysql -uroot -ptn1Pi6Ytm
>createdatabase keystone;
>GRANTALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'f6zx0gURv';
>GRANTALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'f6zx0gURv';
說明:建立一個keystone庫,并且授權給keystone使用者所有權限,密碼為f6zx0gURv
2)安裝相關的包
yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached
3)啟動memcached服務
systemctl enable memcached.service
systemctl start memcached.service
3、編輯配置檔案
編輯keystone配置檔案
vim /etc/keystone/keystone.conf //修改或增加配置如下
[DEFAULT]
admin_token= 3qiVpzU2x
verbose= true
[database]
connection= mysql://keystone:f6zx0gURv@controller/keystone
[memcache]
servers= localhost:11211
[token]
provider= uuid
driver= memcache
[revoke]
driver= sql
4、導入資料
1)導入keystone相關的資料
su -s /bin/sh -c "keystone-manage db_sync" keystone
注意:這裡會有個提示 Nohandlers could be found for logger "oslo_config.cfg" 忽略它,不影響
2)檢查有沒有正常導入資料:
mysql -ukeystone -pf6zx0gURv -hcontroller -t keystone -e "show tables"
看是否有列出表來,如果是空,說明沒有成功導入資料
5、配置httpd
1)先編輯apache配置檔案
vim /etc/httpd/conf/httpd.conf //增加或更改
ServerName controller
vim /etc/httpd/conf.d/wsgi-keystone.conf //内容如下
Listen5000
Listen35357
<VirtualHost*:5000>
WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-public
WSGIScriptAlias / /usr/bin/keystone-wsgi-public
WSGIApplicationGroup %{GLOBAL}
WSGIPassAuthorization On
<IfVersion>= 2.4>
ErrorLogFormat "%{cu}t %M"
</IfVersion>
ErrorLog /var/log/httpd/keystone-error.log
CustomLog /var/log/httpd/keystone-access.log combined
<Directory /usr/bin>
Require all granted
<IfVersion< 2.4>
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
<VirtualHost*:35357>
WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
WSGIProcessGroup keystone-admin
WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
Allowf rom all
3)啟動apache
systemctl enable httpd.service
systemctl start httpd.service
6、建立服務執行個體
1)設定環境變量:
export OS_TOKEN=3qiVpzU2x
export OS_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
2)建立服務執行個體
openstack service create --name keystone--description "OpenStack Identity" identity
3)建立端點
openstack endpoint create --region RegionOne identity public http://controller:5000/v2.0
openstack endpoint create --region RegionOne identity internal http://controller:5000/v2.0
openstack endpoint create --region RegionOne identity admin http://controller:35357/v2.0
4)建立admin 租戶
openstack project create --domain default --description "Admin Project" admin
5)建立admin使用者 (密碼為3qiVpzU2x)
openstack user create --domain default --password-prompt admin
6)建立admin角色
openstack role create admin
7)添加admin角色到admin租戶和使用者
openstack role add --project admin --user admin admin
8)建立service 租戶
openstack project create --domain default --description "Service Project" service
9)建立demo租戶
openstack project create --domain default --description "Demo Project" demo
10)建立demo使用者 (密碼9TtbgaA1q)
openstack user create --domain default --password-prompt demo
11)建立角色user
openstack role create user
12)添加user角色到demo租戶和demo使用者
openstack role add --project demo --user demo user
7、驗證操作
驗證admin使用者和demo使用者是否能正常登陸
1)首先做一個安全設定:
vim /usr/share/keystone/keystone-dist-paste.ini
搜尋admin_token_auth,從[pipeline:public_api],[pipeline:admin_api]和[pipeline:api_v3]中,把admin_token_auth去掉
例如:
pipeline= sizelimit url_normalize request_id build_auth_context token_auth admin_token_auth json_body ec2_extension user_crud_extension public_service
改為:
pipeline= sizelimit url_normalize request_id build_auth_context token_auth json_body ec2_extension user_crud_extension public_service
2)取消環境變量OS_TOKEN和OS_URL
unset OS_TOKEN OS_URL
3)然後再登陸admin和demo使用者
openstack --os-auth-url http://controller:35357/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name admin --os-username admin --os-auth-type password token issue
openstack --os-auth-url http://controller:5000/v3 --os-project-domain-id default --os-user-domain-id default --os-project-name demo --os-username demo --os-auth-type password token issue
4)建立兩個openstack用戶端腳本
vim admin-openrc.sh //内容
export OS_PROJECT_DOMAIN_ID=default
export OS_USER_DOMAIN_ID=default
export OS_PROJECT_NAME=admin
export OS_TENANT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=3qiVpzU2x
export OS_AUTH_URL=http://controller:35357/v3
執行腳本
source admin-openrc.sh
申請認證令牌
openstack token issue
vim demo-openrc.sh //内容
export OS_PROJECT_NAME=demo
export OS_TENANT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=9TtbgaA1q
export OS_AUTH_URL=http://controller:5000/v3
source demo-openrc.sh
4.7、增加image
1、前期準備
image又叫做glance,是用來管理鏡像的一個元件,我們用鏡像來安裝作業系統。glance支援讓使用者自己管理自定義鏡像。
1)建立glance庫和使用者
>CREATE database glance;
>GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'Zznky4tP0';
>GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'Zznky4tP0';
2)執行 admin-openrc.sh 腳本
3)建立glance使用者(密碼為hf8LX9bow)
openstack user create --domain default --password-prompt glance
4)把admin角色添加到glance使用者和service租戶
openstack role add --project service --user glance admin
5)建立glance服務實體
openstack service create --name glance --description "OpenStack Image service" image
6)建立image服務api 端點
openstack endpoint create --region RegionOne image public http://controller:9292
openstack endpoint create --region RegionOne image internal http://controller:9292
openstack endpoint create --region RegionOne image admin http://controller:9292
2、安裝和配置
1)安裝包
yum install -y openstack-glance python-glance python-glanceclient
vim /etc/glance/glance-api.conf //更改或增加
connection= mysql://glance:Zznky4tP0@controller/glance
[keystone_authtoken]
auth_uri= http://controller:5000
auth_url= http://controller:35357
auth_plugin= password
project_domain_id= default
user_domain_id= default
project_name= service
username= glance
password= hf8LX9bow
[paste_deploy]
flavor= keystone
[glance_store]
default_store= file
filesystem_store_datadir= /var/lib/glance/images/
notificaction_driver= noop
verbose=True
vim /etc/glance/glance-registry.conf //更改或增加
3)同步glance資料庫資料
su -s /bin/sh -c "glance-manage db_sync" glance
4)啟動服務
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
3、驗證操作
1)添加環境變量
echo"export OS_IMAGE_API_VERSION=2" | tee -a admin-openrc.sh demo-openrc.sh
2)執行admin-openrc.sh
3)下載下傳鏡像
wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
4)把剛剛下載下傳的鏡像上傳到鏡像服務中心
glance image-create --name "cirros" \
--file cirros-0.3.4-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--visibility public --progress
然後我們可以在 /var/lib/glance/images/目錄下看到一個檔案,這個就是剛剛上傳的鏡像,你會發現這個檔案的名字和id是一緻的。使用指令:
glance image-list //可以檢視鏡像清單
4.8、增加compute
1)compute又叫nova,是OpenStack中的計算組織控制器。OpenStack中執行個體(instances)生命周期的所有活動都由Nova處理。這樣使得Nova成為一個負責管理計算資源、網絡、認證、所需可擴充性的平台。但是,Nova自身并沒有提供任何虛拟化能力,相反它使用libvirtAPI來與被支援的Hypervisors(kvm、xen、vmware等)互動。
2)建立nova庫,并建立nova使用者
>CREATE DATABASE nova;
>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'RYgv0rg7p';
>GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'RYgv0rg7p';
3)初始化環境變量
4)建立nova使用者,密碼為hsSNsqc43
openstack user create --domain default--password-prompt nova
5)添加admin角色到nova使用者
openstack role add --project service --usernova admin
6)建立nova服務執行個體
openstack service create--name nova --description"OpenStack Compute" compute
7)建立api端點
openstack endpoint create --region RegionOne compute public http://controller:8774/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute internal http://controller:8774/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne compute admin http://controller:8774/v2/%\(tenant_id\)s
2、安裝包并配置(controller上操作)
yum install -y openstack-nova-api openstack-nova-cert openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler python-novaclient
vim /etc/nova/nova.conf //更改或增加配置
connection= mysql://nova:RYgv0rg7p@controller/nova
rpc_backend=rabbit
my_ip=192.168.16.111
auth_strategy=keystone
network_api_class= nova.network.neutronv2.api.API
security_group_api= neutron
linuxnet_interface_driver= nova.network.linux_net.NeutronLinuxBridgeInterfaceDriver
firewall_driver= nova.virt.firewall.NoopFirewallDriver
enabled_apis=osapi_compute,metadata
verbose=true
username= nova
password= hsSNsqc43
[oslo_messaging_rabbit]
rabbit_host= controller
rabbit_userid= openstack
rabbit_password= o3NXovnz5
[vnc]
vncserver_listen= $my_ip
vncserver_proxyclient_address= $my_ip
[glance]
host= controller
[oslo_concurrency]
lock_path= /var/lib/nova/tmp
3)同步資料建立nova庫
su -s /bin/sh -c "nova-manage db sync" nova
systemctl enable openstack-nova-api.service \
openstack-nova-cert.service openstack-nova-consoleauth.service \
openstack-nova-scheduler.service openstack-nova-conductor.service \
openstack-nova-novncproxy.service
systemctlstart openstack-nova-api.service \
3、安裝包并配置(compute上操作)
1)安裝nova-compute包
yum install -y openstack-nova-compute sysfsutils
vim /etc/nova/nova.conf //更改或增加如下配置
rpc_backend= rabbit
auth_strategy= keystone
my_ip= 192.168.16.112
enabled= True
vncserver_listen= 0.0.0.0
novncproxy_base_url= http://controller:6080/vnc_auto.html
3)開啟支援虛拟化
使用如下指令檢查你的機器cpu是否支援虛拟化
egrep -c '(vmx|svm)' /proc/cpuinfo
如果得到的數字大于0,說明是支援的,否則說明不支援,若為0,需要編輯如下配置檔案
vim /etc/nova/nova.conf //編輯
[libvirt]
virt_type= qemu
systemctl enable libvirtd.service openstack-nova-compute.service
systemctl start libvirtd.service openstack-nova-compute.service
4、驗證操作
1)執行腳本
2)列出服務元件
nova service-list
共有5個:nova-consoleauth、nova-conductor、nova-scheduler、nova-cert、nova-compute
3)列出api端點,一共有9組:nova三組,glance三組,keystone三組
nova endpoints
注意:如果有提示:WARNING:nova has no endpoint in ! Available endpoints for this service
可以忽略掉,也可以編輯 admin-openrc.sh 增加一行 export OS_REGION_NAME=RegionOne
4)列出鏡像
nova image-list
4.9、增加networking
1)Networking又叫做Neutron,是Openstack必不可少的元件,它其實是網絡虛拟化的實作工具,可以讓我們模拟出路由器、交換機、網卡等網絡裝置。關于Neutron的電書:
Neutron支援兩種網絡模式,第一種是非常簡單的網絡架構,它僅支援是讓執行個體連接配接外網,不支援自定義網絡、路由器以及浮動ip。隻有管理者或者授權的使用者有權限去管理網絡。第二種網絡功能比較強大,支援自定義網絡管理,支援自建路由器并且也支援浮動ip。即使沒有授權的使用者也可以管理網絡,支援使用者自己配置和管理。
2)建立庫、授權賬号
>CREATE DATABASE neutron;
>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'quidyOC50';
>GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'quidyOC50';
3)執行腳本
4)建立neutron使用者(密碼為mdcGVl29i)
openstack user create --domain default --password-prompt neutron
5)把admin角色添加到neutron使用者裡
openstack role add --project service --userneutron admin
6)建立neutron執行個體
openstack service create --name neutron --description "OpenStack Networking" network
7)建立networking服務api終端
openstack endpoint create --region RegionOne network public http://controller:9696
openstack endpoint create --region RegionOne network internal http://controller:9696
openstack endpoint create --region RegionOne network admin http://controller:9696
2、配置
1)安裝元件
yum install -y openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge python-neutronclient ebtables ipset
2)配置服務端元件
vim /etc/neutron/neutron.conf //更改或增加
core_plugin= ml2
service_plugins=
notify_nova_on_port_status_changes= True
notify_nova_on_port_data_changes= True
nova_url= http://controller:8774/v2
verbose= True
connection= mysql://neutron:quidyOC50@controller/neutron
username= neutron
password= mdcGVl29i
[nova]
region_name= RegionOne
lock_path= /var/lib/neutron/tmpl
3)配置ml2 插件
vim /etc/neutron/plugins/ml2/ml2_conf.ini //更改或增加
[ml2]
type_drivers= flat,vlan
tenant_network_types=
mechanism_drivers= linuxbridge
extension_drivers= port_security
[ml2_type_flat]
flat_networks= public
[securitygroup]
enable_ipset= True
4)編輯linux橋接agent
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini //增加或更改
[linux_bridge]
physical_interface_mappings= public:eno16777736
[vxlan]
enable_vxlan= False
[agent]
prevent_arp_spoofing= True
enable_security_group= True
firewall_driver= neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
5)配置dhcp agent
vim /etc/neutron/dhcp_agent.ini //增加或更改
interface_driver= neutron.agent.linux.interface.BridgeInterfaceDriver
dhcp_driver= neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata= True
3、配置中繼資料agent
編輯配置檔案
vim /etc/neutron/metadata_agent.ini //更改或增加
auth_region= RegionOne
nova_metadata_ip= controller
metadata_proxy_shared_secret= m8uhmQTu2
說明:需要删除掉配置檔案裡原有的 auth_url auth_region admin_tenant_name admin_user admin_password
4、compute使用網絡(controller上操作)
vim /etc/nova/nova.conf //更改或添加
[neutron]
url= http://controller:9696
service_metadata_proxy= True
5、啟動服務
1)建立ml2插件配置檔案建立軟連接配接
ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
2)生成資料
su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
--config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
3)重新開機compute api服務
systemctl restart openstack-nova-api.service
systemctl enable neutron-server.service \
neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
neutron-metadata-agent.servicelsystemctlstart neutron-server.service \
neutron-metadata-agent.servicelsystemctlenable neutron-l3-agent.service
systemctl start neutron-l3-agent.service
6、配置compute節點(compute上操作)
yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables ipset
2)配置普通元件
vim /etc/neutron/neutron.conf //更改或增加
lock_path= /var/lib/neutron/tmp
3)配置linux橋接agent
vim /etc/neutron/plugins/ml2/linuxbridge_agent.ini
physical_interface_mappings =public:eno16777736
enable_vxlan = False
prevent_arp_spoofing = True
enable_security_group = True
firewall_driver =neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
4)配置compute使用網絡
vim /etc/nova/nova.conf //更改或增加
5)啟動服務
systemctl restart openstack-nova-compute.service
systemctl enable neutron-linuxbridge-agent.service
systemctl start neutron-linuxbridge-agent.service
7、驗證配置
1)執行環境變量腳本
2)列出所有的擴充
neutron ext-list
3)列出所有agent
neutron agent-list //agenttype如下:
Linuxbridge agent
DHCP agent
Metadata agent
必須要有4個,否則說明上面的某個步驟配置有問題。
4.10、增加dashboard
1、horizon
1)安裝包
yum install -y openstack-dashboard
vim /etc/openstack-dashboard/local_settings //更改或增加
OPENSTACK_HOST= "controller"
ALLOWED_HOSTS= ['*', ]
CACHES= {
'default':{
'BACKEND':'django.core.cache.backends.locmem.LocMemCache',
'LOCATION':'127.0.0.1:11211',
} }
OPENSTACK_KEYSTONE_DEFAULT_ROLE= "user"
OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT= True
OPENSTACK_API_VERSIONS= {
"identity":3,
"volume":2,
}
TIME_ZONE= "Asia/Chongqing"
3)重新開機服務
systemctl restart httpd.service memcached.service
4.11、增加block storage
blockstorage又叫做cinder,用來給openstack提供存儲服務,比如我們在阿裡雲購買一台雲主機,同時想購買容量大的磁盤,通常叫做雲盤,這個雲盤就是blockstorage。
1)建立庫并授權cinder使用者
mysql -uroot -ptn1Pi6Ytml
>CREATE DATABASE cinder;
>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'O3bwbpoZ3';
>GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' IDENTIFIED BY 'O3bwbpoZ3';
2)執行初始化腳本
3)建立cinder使用者 (密碼為hf8LX9bow)
openstack user create --domain default --password-prompt cinder
4)添加admin角色
openstack role add --project service --user cinder admin
5)建立cinder和cinderv2 執行個體
openstack service create --name cinder \
--description "OpenStack Block Storage" volume
openstack service create --name cinderv2 \
--description "OpenStack Block Storage" volumev2
6)建立塊存儲服務api終端
openstack endpoint create --region RegionOne volume public http://controller:8776/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne volume internal http://controller:8776/v1/%\(tenant_id\)s
openstack endpoint create --region RegionOne volume admin http://controller:8776/v1/%\(tenant_id\)s
openstackendpoint create --region RegionOne volumev2 public http://controller:8776/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne volumev2 internal http://controller:8776/v2/%\(tenant_id\)s
openstack endpoint create --region RegionOne volumev2 admin http://controller:8776/v2/%\(tenant_id\)s
1)安裝包
yum install -y openstack-cinder python-cinderclient
vim /etc/cinder/cinder.conf //更改或增加
connection= mysql://cinder:O3bwbpoZ3@controller/cinder
my_ip= 192.168.16.111
username= cinder
lock_path= /var/lib/cinder/tmp
3)同步資料
su -s /bin/sh -c "cinder-manage db sync" cinder
4)配置compute使用塊存儲
vim /etc/nova/nova.conf
[cinder]
os_region_name=RegionOne
systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service
3、配置storage節點(compute上操作)
我們理應需要再準備一台單獨的機器來做storage服務的,但是為了節省資源,我們就那compute節點和storage節點共用。這裡需要為compute(storage)節點再增加一塊磁盤(/dev/sdb)作為存儲磁盤。
1)安裝lvm
yum install -y lvm2
2)啟動服務
systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service
3)建立實體卷
pvcreate /dev/sdb
4)建立卷組
vgcreate cinder-volumes /dev/sdb
5)編輯配置檔案
vim /etc/lvm/lvm.conf
devices{
filter = [ "a/sdb/","r/.*/"]
說明:如果還有第三塊磁盤,應該再加上
filter= [ "a/sda/", "a/sdb/", "r/.*/"]
6)安裝包
yum install -y openstack-cinder targetclipython-oslo-policy
7)編輯配置檔案
vim /etc/cinder/cinder.conf
my_ip= 192.168.16.112
enabled_backends= lvm
glance_host= controller
[lvm]
volume_driver= cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group= cinder-volume
liscsi_protocol= iscsi
iscsi_helper= lioadm
4、啟動和驗證
1)啟動服務(compute上操作)
systemctl enable openstack-cinder-volume.service target.service
systemctl start openstack-cinder-volume.service target.service
2)驗證操作(controller上操作)
執行初始化腳本
列出服務
cinder service-list
4.12、運作執行個體
1、建立公網網絡
1)執行初始化腳本
2)建立網絡
neutron net-create public--shared --provider:physical_network public \
--provider:network_type flat
3)建立子網
neutron subnet-create public 192.168.16.0/24 --name public \
--allocation-pool start=192.168.16.10,end=192.168.16.30 \
--dns-nameserver 119.29.29.29 --gateway 192.168.16.2l
說明:這裡的公網,實際上是虛拟機用的那個網段,我們暫時把它作為公網,在這裡因為涉及到dhcp服務,會和區域網路内的路由器上的dhcp服務産生沖突,是以需要先把路由器上的dhcp服務關掉。
2、建立key
2)生成密鑰
ssh-keygen-q -N ""
nova keypair-add --pub-key ~/.ssh/id_rsa.pub mykey
3)驗證密鑰
nova keypair-list
4)增加安全組規則
nova secgroup-add-rule default icmp -1 -1 0.0.0.0/0
5)允許ssh 通路
nova secgroup-add-rule default tcp 22 22 0.0.0.0/0
3、配置執行個體選項
2)列出執行個體類型
nova flavor-list
3)列出所有鏡像
4)列出可用網絡
neutron net-list
5)列出安全組
nova secgroup-list
6)運作執行個體
nova boot --flavor m1.tiny --image cirros --nic net-id=PUBLIC_NET_ID \
--security-group default --key-name mykeypublic-instance
說明:這裡的PUBLIC_NET_ID需要替換為可用網絡裡面public網絡的id
7)檢測執行個體狀态
nova list
4、連接配接執行個體
1)使用vnc連接配接(使用下面指令可以列出vnc的連接配接)
nova get-vnc-console public-instance novnc
2)驗證網絡(在執行個體裡面)
ping -c 4 192.168.16.2
3)遠端連接配接執行個體
首先用 nova list 檢視執行個體的ip(假如為192.168.16.33)
驗證ip:
ping -c4 192.168.16.33
遠端ssh登入:
5、增加雲盤
1)先執行初始化腳本
2)建立一個2G的雲盤,名字為volume1
cinder create --display-name volume1 2
3)列出所有雲盤
cinder list
4)把雲盤挂到執行個體中
nova volume-attach INSTANCE_NAME VOLUME_ID
說明:INSTACE_NAME可以用nova list檢視,VOLUME_ID就是用cinder list檢視到的雲盤id
5)列出已經挂上的雲盤
nova volume-list
6)登陸到執行個體檢視雲盤
sudo fdisk -l
本文轉自M四月天 51CTO部落格,原文連結:http://blog.51cto.com/msiyuetian/1841292,如需轉載請自行聯系原作者