OpenStack介紹
創(chuàng)新互聯(lián)專注于天全網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供天全營(yíng)銷(xiāo)型網(wǎng)站建設(shè),天全網(wǎng)站制作、天全網(wǎng)頁(yè)設(shè)計(jì)、天全網(wǎng)站官網(wǎng)定制、小程序開(kāi)發(fā)服務(wù),打造天全網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供天全網(wǎng)站排名全網(wǎng)營(yíng)銷(xiāo)落地服務(wù)。
openstack是一個(gè)云平臺(tái)管理項(xiàng)目,我們可以使用openstack來(lái)管理我們的資源池,在這個(gè)資源池中包含了很多的子項(xiàng)目。openstack是有多個(gè)不同的模塊組成,不同的功能有相對(duì)應(yīng)得不同模塊負(fù)責(zé)。openstack三大核心分別是 計(jì)算、網(wǎng)絡(luò)、存儲(chǔ)。通過(guò)調(diào)用不同模塊的API來(lái)對(duì)外提供交互。
openstack 的版本發(fā)布很快,從最初的A版到現(xiàn)在的N版,官方一般會(huì)每隔六個(gè)月發(fā)布一個(gè)新的版本。
openstack每個(gè)服務(wù)都有對(duì)應(yīng)的項(xiàng)目名稱,不同的項(xiàng)目就相當(dāng)于一個(gè)提供單獨(dú)服務(wù)的模塊,具體的對(duì)應(yīng)關(guān)系如下:
Horizon (Dashboard): Openstack的web管理服務(wù)。
Nova (Compute): 通虛擬化技術(shù),提供的計(jì)算資源池。
Neutron (Networking): 虛擬機(jī)的網(wǎng)絡(luò)資源管理。
存儲(chǔ)服務(wù)(Storage):
Swift (Object Storage): 對(duì)象存儲(chǔ),適合于 “一次寫(xiě)入,多次讀取”。
Cinder (Block Storage): 塊存儲(chǔ),提供存儲(chǔ)資源池。
共享服務(wù)(Share Service):
Keystone (Identify service):認(rèn)證管理。
Glance (Image service): 提供虛擬鏡像的注冊(cè)和存儲(chǔ)管理。
Ceilometer (Telemetry): 提供監(jiān)控和數(shù)據(jù)采集、計(jì)量服務(wù)。
高層服務(wù) (Higher-level service):
Heat (Orchestration): 自動(dòng)化部署的組件。
Trove(Database Service): 提供數(shù)據(jù)庫(kù)應(yīng)用服務(wù)。
基礎(chǔ)服務(wù)配置安裝
準(zhǔn)備工作:
兩臺(tái)CentOS7的機(jī)器,分別命名為node1和node2,如果沒(méi)有內(nèi)部DNS需要綁定hosts.
CS7修改主機(jī)名示例:
# hostnamectl set-hostname node1 # hostnamectl status # cat /etc/hostname node1
安裝yum源:
rpm -ivh http://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm
安裝openstack倉(cāng)庫(kù):
yum install -y centos-release-openstack-mitaka
安裝管理包和客戶端:
yum install -y python-openstackclient yum install -y openstack-selinux
控制節(jié)點(diǎn)上安裝以下服務(wù):
yum install -y mariadb mariadb-server python2-PyMySQL yum install -y rabbitmq-server yum install -y openstack-keystone httpd mod_wsgi memcached python-memcached yum install -y openstack-glance yum install -y openstack-nova-api openstack-nova-cert \ openstack-nova-conductor openstack-nova-console \ openstack-nova-novncproxy openstack-nova-scheduler yum install -y openstack-neutron openstack-neutron-ml2 \ openstack-neutron-linuxbridge ebtables
計(jì)算節(jié)點(diǎn)安裝nova和neutron:
yum install -y openstack-nova-compute sysfsutils yum install -y openstack-neutron openstack-neutron-linuxbridge ebtables
除了Horizon,openstack的其他組件都需要連接數(shù)據(jù)庫(kù)。
除了Horizon和keystone,其他組件都需要連接RabbitMQ(消息隊(duì)列,通信樞紐).
OpenStack數(shù)據(jù)庫(kù)配置
創(chuàng)建/etc/my.cnf.d/openstack.cnf,并添加如下配置:
[mysqld] bind-address = 172.16.10.50 default-storage-engine = innodb innodb_file_per_table #獨(dú)享表空間 max_connections = 4096 collation-server = utf8_general_ci character-set-server = utf8
啟動(dòng)數(shù)據(jù)庫(kù):
# systemctl enable mariadb.service # systemctl start mariadb.service
為了保證數(shù)據(jù)庫(kù)服務(wù)的安全性,運(yùn)行``mysql_secure_installation``腳本。特別需要說(shuō)明的是,為數(shù)據(jù)庫(kù)的root用戶設(shè)置一個(gè)適當(dāng)?shù)拿艽a。
# mysql_secure_installation
創(chuàng)建庫(kù),并授權(quán):
> create database keystone; > grant all on keystone.* to 'keystone'@'localhost' identified by 'keystone'; > grant all on keystone.* to 'keystone'@'%' identified by 'keystone'; > create database glance; > grant all on glance.* to 'glance'@'localhost' identified by 'glance'; > grant all on glance.* to 'glance'@'%' identified by 'glance'; > create database nova; > grant all on nova.* to 'nova'@'localhost' identified by 'nova'; > grant all on nova.* to 'nova'@'%' identified by 'nova'; > create database nova_api; > grant all on nova_api.* to 'nova'@'localhost' identified by 'nova'; > grant all on nova_api.* to 'nova'@'%' identified by 'nova'; > create database neutron; > grant all on neutron.* to 'neutron'@'localhost' identified by 'neutron'; > grant all on neutron.* to 'neutron'@'%' identified by 'neutron';
MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | glance | | information_schema | | keystone | | mysql | | neutron | | nova | | nova_api | | performance_schema | +--------------------+ 8 rows in set (0.00 sec)
控制節(jié)點(diǎn)安裝RabbitMQ,并授權(quán)用戶:
yum install -y rabbitmq-server systemctl enable rabbitmq-server.service systemctl start rabbitmq-server.service rabbitmqctl add_user openstack openstack rabbitmqctl set_permissions openstack ".*" ".*" ".*"
打開(kāi)監(jiān)控插件:
rabbitmq-plugins enable rabbitmq_management
此時(shí)可以查看RabbitMQ的服務(wù)端口是否開(kāi)啟:
# netstat -lntup|grep 15672 tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 30174/beam
可以直接訪問(wèn)web界面進(jìn)行查看:http://localhost_ip:15672/
RabbitMQ的服務(wù)是5672端口:
# netstat -lntup|grep 5672 tcp 0 0 0.0.0.0:15672 0.0.0.0:* LISTEN 30174/beam tcp 0 0 0.0.0.0:25672 0.0.0.0:* LISTEN 30174/beam tcp6 0 0 :::5672 :::* LISTEN 30174/beam
所有主機(jī)同步時(shí)間
yum install ntpdate -y ntpdate time1.aliyun.com timedatectl set-timezone Asia/Shanghai
在生產(chǎn)環(huán)境中,一定要保證服務(wù)器時(shí)間一致,否則會(huì)出現(xiàn)創(chuàng)建不了虛擬機(jī)的情況,在同步過(guò)程中也會(huì)出現(xiàn)各種問(wèn)題。
OpenStack認(rèn)證管理-Keystone
Keystone主要提供用戶認(rèn)證和服務(wù)目錄的功能。openstack的服務(wù)授權(quán)都需要在keystone上完成,keystone通過(guò)給授權(quán)的用戶提供一個(gè)具有時(shí)間有效期的token,在用戶token過(guò)期之后需要重新授權(quán)。服務(wù)目錄則包含了所有服務(wù)項(xiàng)和與之相關(guān)的API端點(diǎn)。
用戶認(rèn)證:User, Project,Token,Role.
這里的Role就類似一個(gè)具有相同權(quán)限的用戶組,Keystone通過(guò)這些機(jī)制來(lái)進(jìn)行認(rèn)證授權(quán)操作。
服務(wù)目錄:service,endpoint.
service 服務(wù),如 Nova, Glance,Swift. 一個(gè)服務(wù)可以確認(rèn)當(dāng)前用戶是否具有訪問(wèn)資源的權(quán)限。
endpoint其實(shí)是一個(gè)url,每個(gè)url都對(duì)應(yīng)一個(gè)服務(wù)的實(shí)例的訪問(wèn)地址,并且具有public、private和admin這三種權(quán)限。public url可以被全局訪問(wèn),private url只能被局域網(wǎng)訪問(wèn),admin url被從常規(guī)的訪問(wèn)中分離。
Keystone的部署
Keystone使用memcatch來(lái)管理認(rèn)證的token,之所以選擇使用memcache而不是使用mysql的原因是存放在memcache中的token可以設(shè)置過(guò)期時(shí)間,到期之后會(huì)自動(dòng)清理,防止在mysql中因?yàn)殚L(zhǎng)期使用而出現(xiàn)表過(guò)大難以維護(hù)的問(wèn)題。
生成一個(gè)token隨機(jī)值
# openssl rand -hex 10 48d263aed5f11b0bc02f
修改keystone的配置文件
在/etc/keystone/keystone.conf文件中配置以下各項(xiàng)
在[DEFAULT]部分,定義初始管理令牌的值
使用前面步驟生成的隨機(jī)數(shù)替換``ADMIN_TOKEN`` 值。
# grep "admin_token" /etc/keystone/keystone.conf admin_token = 48d263aed5f11b0bc02f
在 [database] 部分,配置數(shù)據(jù)庫(kù)訪問(wèn):
connection = mysql+pymysql://keystone:keystone@172.16.10.50/keystone
在``[token]``部分,配置Fernet UUID令牌的提供者,并修改token的存儲(chǔ)方式為memcache。
provider = fernet driver = memcache
在[memcache]部分,修改提供memcache服務(wù)的主機(jī)ip:
servers = 172.16.10.50:11211
修改完成后,keystone的配置就完成了。
[root@node1 ~]# grep '^[a-z]' /etc/keystone/keystone.conf admin_token = 48d263aed5f11b0bc02f connection = mysql+pymysql://keystone:keystone@172.16.10.50/keystone servers = 172.16.10.50:11211 provider = fernet driver = memcache
初始化身份認(rèn)證服務(wù)的數(shù)據(jù)庫(kù),進(jìn)行數(shù)據(jù)庫(kù)同步:
# su -s /bin/sh -c "keystone-manage db_sync" keystone
驗(yàn)證是否同步成功:
# mysql -h 172.16.10.50 -ukeystone -pkeystone -e "use keystone; show tables;"
初始化Fernet keys,此命令執(zhí)行后會(huì)在/etc/keystone下創(chuàng)建一個(gè)fernet-keys目錄:
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
啟動(dòng)memcached:
systemctl enable memcached systemctl start memcached
配置Apache HTTP服務(wù)器
編輯``/etc/httpd/conf/httpd.conf`` 文件,配置``ServerName`` 選項(xiàng)為控制節(jié)點(diǎn):
ServerName 172.16.10.50:80
用下面的內(nèi)容創(chuàng)建文件 /etc/httpd/conf.d/wsgi-keystone.conf
Listen 5000 Listen 35357WSGIDaemonProcess 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 ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined Require all granted WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP} WSGIProcessGroup keystone-admin WSGIScriptAlias / /usr/bin/keystone-wsgi-admin WSGIApplicationGroup %{GLOBAL} WSGIPassAuthorization On ErrorLogFormat "%{cu}t %M" ErrorLog /var/log/httpd/keystone-error.log CustomLog /var/log/httpd/keystone-access.log combined Require all granted
啟動(dòng)Apache :
# systemctl enable httpd.service # systemctl start httpd.service
查看對(duì)應(yīng)的5000端口和35357端口是否啟用。
同時(shí)查看/var/log/keystone/keystone.log 是否有報(bào)錯(cuò)信息,如果有報(bào)錯(cuò)信息需要開(kāi)啟keystone的debug模式進(jìn)行排錯(cuò):
vim /etc/keystone/keystone.conf #debug = false #將此項(xiàng)改為true,再查看日志。
設(shè)置認(rèn)證
配置認(rèn)證令牌,直接在命令行執(zhí)行:
export OS_TOKEN=48d263aed5f11b0bc02f
配置端點(diǎn)URL:
export OS_URL=http://172.16.10.50:35357/v3
配置認(rèn)證 API 版本:
export OS_IDENTITY_API_VERSION=3
創(chuàng)建域、項(xiàng)目、用戶和角色
創(chuàng)建域``default``:
# openstack domain create --description "Default Domain" default +-------------+----------------------------------+ | Field | Value | +-------------+----------------------------------+ | description | Default Domain | | enabled | True | | id | 5ab6cfb424ee4c99b0fea0cbec19e3b3 | | name | default | +-------------+----------------------------------+
在環(huán)境中,為進(jìn)行管理操作,創(chuàng)建管理的項(xiàng)目、用戶和角色:
創(chuàng)建 admin 項(xiàng)目:
openstack project create --domain default \ --description "Admin Project" admin
創(chuàng)建 admin 用戶,并設(shè)置密碼:
openstack user create --domain default \ --password-prompt admin
創(chuàng)建 admin 角色:
openstack role create admin
添加``admin`` 角色到 admin 項(xiàng)目和用戶上:
openstack role add --project admin --user admin admin
上面命令的含義為:將admin用戶添加到admin的項(xiàng)目,并授權(quán)為admin角色
創(chuàng)建一個(gè)demo的項(xiàng)目:
創(chuàng)建``demo`` 項(xiàng)目:(當(dāng)為這個(gè)項(xiàng)目創(chuàng)建額外用戶時(shí),不要重復(fù)這一步。)
openstack project create --domain default \ --description "Demo Project" demo
創(chuàng)建``demo`` 用戶并設(shè)置密碼:
openstack user create --domain default \ --password-prompt demo
創(chuàng)建 user 角色:
openstack role create user
添加 user``角色到 ``demo 項(xiàng)目和用戶角色:
openstack role add --project demo --user demo user
創(chuàng)建service項(xiàng)目
使用一個(gè)你添加到你的環(huán)境中每個(gè)服務(wù)包含獨(dú)有用戶的service 項(xiàng)目。
創(chuàng)建``service``項(xiàng)目:
openstack project create --domain default \ --description "Service Project" service
創(chuàng)建glance用戶:
openstack user create --domain default --password-prompt glance
添加glance 用戶到 service 項(xiàng)目和admin角色:
openstack role add --project service --user glance admin
創(chuàng)建nova用戶:
openstack user create --domain default --password-prompt nova
添加nova用戶到service項(xiàng)目和admin角色:
openstack role add --project service --user nova admin
創(chuàng)建neutron用戶:
openstack user create --domain default --password-prompt neutron
添加neutron用戶到service項(xiàng)目和admin角色:
openstack role add --project service --user neutron admin
服務(wù)注冊(cè)
openstack service create --name keystone --description "OpenStack Identity" identity
創(chuàng)建public的endpoint,并指定url, 注意IP和端口:
openstack endpoint create --region RegionOne identity public http://172.16.10.50:5000/v3
創(chuàng)建internal類型的endpoint:
openstack endpoint create --region RegionOne identity internal http://172.16.10.50:5000/v3
創(chuàng)建admin類型的endpoint,指定admin的管理端口:
openstack endpoint create --region RegionOne identity admin http://172.16.10.50:35357/v3
提示:由于內(nèi)部是相互對(duì)應(yīng)的,如果某一條創(chuàng)建錯(cuò)誤,需要將對(duì)應(yīng)的三條全部刪除,重新創(chuàng)建。
刪除方式:(service、user、project等都可以用這種方式刪除)
openstack endpoint list #查看對(duì)應(yīng)的記錄ID號(hào) openstack endpoint delete ab66752a92334e31a08aa65d6fb5fdfc #刪除ID
這些記錄實(shí)質(zhì)上都在mysql的keystone.endpoint表中,也可以直接修改表。
驗(yàn)證操作
在安裝其它服務(wù)前,要先對(duì)之前的操作進(jìn)行驗(yàn)證。
先重置``OS_TOKEN``和``OS_URL`` 環(huán)境變量:
unset OS_TOKEN OS_URL
使用 admin 用戶,請(qǐng)求認(rèn)證令牌進(jìn)行測(cè)試:
openstack --os-auth-url http://172.16.10.50:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name admin --os-username admin token issue
使用demo項(xiàng)目的demo用戶,請(qǐng)求認(rèn)證令牌測(cè)試:
openstack --os-auth-url http://172.16.10.50:35357/v3 \ --os-project-domain-name default --os-user-domain-name default \ --os-project-name demo --os-username demo token issue
如果出現(xiàn) (HTTP 401)則說(shuō)明是密碼輸入錯(cuò)誤。
創(chuàng)建環(huán)境變量腳本
在上面的測(cè)試中,使用了指定參數(shù)的方式來(lái)進(jìn)行連接的驗(yàn)證,但是輸入內(nèi)容比較長(zhǎng),在實(shí)際的生產(chǎn)操作中我們可以定義一個(gè)環(huán)境變量的腳本,來(lái)省去指定參數(shù)的操作。
創(chuàng)建 admin 和 ``demo``項(xiàng)目和用戶創(chuàng)建客戶端環(huán)境變量腳本。接下來(lái)的部分會(huì)引用這些腳本,為客戶端操作加載合適的的憑證。
編輯文件 admin-openstack.sh 并添加如下內(nèi)容(注意指定密碼和URL):
export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=admin export OS_USERNAME=admin export OS_PASSWORD=admin export OS_AUTH_URL=http://172.16.10.50:35357/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
同理,添加demo的環(huán)境配置文件demo-openstack.sh:
export OS_PROJECT_DOMAIN_NAME=default export OS_USER_DOMAIN_NAME=default export OS_PROJECT_NAME=demo export OS_USERNAME=demo export OS_PASSWORD=demo export OS_AUTH_URL=http://172.16.10.50:5000/v3 export OS_IDENTITY_API_VERSION=3 export OS_IMAGE_API_VERSION=2
對(duì)腳本添加執(zhí)行權(quán)限后,每次執(zhí)行openstack相關(guān)的命令一定要先source執(zhí)行此腳本,否則會(huì)不成功。
對(duì)環(huán)境變量腳本進(jìn)行驗(yàn)證:
source admin-openstack.sh
嘗試直接獲取token,看是否成功
openstack token issue
Openstack鏡像管理-Glance
Glance由Glance-api和Glance-Registry以及p_w_picpath Storage三個(gè)組件組成。
Glance-api: 接受云系統(tǒng)鏡像的創(chuàng)建、刪除和讀取請(qǐng)求。通過(guò)接收REST API的請(qǐng)求,調(diào)用其他模塊來(lái)完成鏡像的查找,獲取、上傳、刪除等操作。默認(rèn)的監(jiān)聽(tīng)端口為9292.
Glance-Registry:云鏡像的注冊(cè)服務(wù)。與mysql進(jìn)行數(shù)據(jù)交互,用于存儲(chǔ)和獲取鏡像的元數(shù)據(jù)。Glance數(shù)據(jù)庫(kù)中有兩張表,一張是p_w_picpath表,另一張是p_w_picpath property表。p_w_picpath表保存了鏡像格式、大小等信息,p_w_picpath property表則主要保存鏡像的定制化信息。glance-registry監(jiān)聽(tīng)的端口為9191.
Image storage: 是一個(gè)存儲(chǔ)的接口層,嚴(yán)格來(lái)說(shuō)它并不是屬于glance,只是給glance提供調(diào)用的一個(gè)接口。通過(guò)這個(gè)接口,glance可以獲取鏡像。p_w_picpath storage支持的存儲(chǔ)有Amazon的S3、Openstack本身的Swift,還有如 ceph,sheepdog,GlusterFS等分布式存儲(chǔ),p_w_picpath storage是鏡像保存和獲取的接口,由于僅僅是一個(gè)接口層,具體的實(shí)現(xiàn)需要外部存儲(chǔ)的支持。
Glance的部署
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/glance-install.html#prerequisites
安裝glance服務(wù)并配置數(shù)據(jù)庫(kù)
前面已經(jīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行了相關(guān)操作,這里需要編輯配置文件/etc/glance/glance-api.conf 并完成如下動(dòng)作:
在 [database] 部分,配置數(shù)據(jù)庫(kù)訪問(wèn):(第二個(gè)glance為密碼)
connection = mysql+pymysql://glance:glance@172.16.10.50/glance
在/etc/glance/glance-registry.conf 的配置文件中[database] 也配置上此參數(shù)
connection = mysql+pymysql://glance:glance@172.16.10.50/glance
同步數(shù)據(jù)庫(kù),此處會(huì)有一個(gè)警告:
su -s /bin/sh -c "glance-manage db_sync" glance
驗(yàn)證數(shù)據(jù)庫(kù)是否同步成功:
# mysql -h 172.16.10.50 -uglance -pglance -e "use glance;show tables;"
設(shè)置keystone
在/etc/glance/glance-api.conf中設(shè)置keystone的配置,分別在下面的兩個(gè)模塊中
添加如下配置信息:
[keystone_authtoken] ... auth_uri = http://172.16.10.50:5000 auth_url = http://172.16.10.50:35357 memcached_servers = 172.16.10.50:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] ... flavor = keystone
在/etc/glance/glance-registry.conf 中設(shè)置相同的配置:
[keystone_authtoken] ... auth_uri = http://172.16.10.50:5000 auth_url = http://172.16.10.50:35357 memcached_servers = 172.16.10.50:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = glance [paste_deploy] ... flavor = keystone
配置鏡像存儲(chǔ)
修改/etc/glance/glance-api.conf的配置:
在 [glance_store] 部分,配置本地文件系統(tǒng)存儲(chǔ)和鏡像文件位置:
[glance_store] stores = file,http default_store = file filesystem_store_datadir = /var/lib/glance/p_w_picpaths
啟動(dòng)服務(wù):
systemctl enable openstack-glance-api.service openstack-glance-registry.service
systemctl start openstack-glance-api.service openstack-glance-registry.service
查看啟動(dòng)后9292和9191端口是否開(kāi)啟。
在keystone上做服務(wù)注冊(cè)
創(chuàng)建glance服務(wù)實(shí)體,首先加載admin環(huán)境變量
# source admin-openstack.sh
# openstack service create --name glance \ --description "OpenStack Image" p_w_picpath
創(chuàng)建鏡像服務(wù)的 API 端點(diǎn):
# openstack endpoint create --region RegionOne \ p_w_picpath public http://172.16.10.50:9292
# openstack endpoint create --region RegionOne \ p_w_picpath internal http://172.16.10.50:9292
# openstack endpoint create --region RegionOne \ p_w_picpath admin http://172.16.10.50:9292
驗(yàn)證配置是否成功:
# glance p_w_picpath-list +----+------+ | ID | Name | +----+------+ +----+------+
驗(yàn)證操作
獲得 admin 憑證來(lái)獲取只有管理員能執(zhí)行的命令的訪問(wèn)權(quán)限:
# source admin-openstack.sh
下載源鏡像:
# wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
上傳鏡像到鏡像服務(wù)并設(shè)置公共可見(jiàn),這樣所有的項(xiàng)目都可以訪問(wèn)它:
# openstack p_w_picpath create "cirros" --file cirros-0.3.4-x86_64-disk.img \ --disk-format qcow2 --container-format bare --public
驗(yàn)證是否上傳成功:
# openstack p_w_picpath list +--------------------------------------+--------+--------+ | ID | Name | Status | +--------------------------------------+--------+--------+ | 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | active | +--------------------------------------+--------+--------+
上傳成功后在/var/lib/glance/p_w_picpaths/下可以看到這個(gè)鏡像,以鏡像ID命名:
[root@node1 ~]# cd /var/lib/glance/p_w_picpaths/ [root@node1 p_w_picpaths]# ll total 12980 -rw-r-----. 1 glance glance 13287936 Oct 26 16:00 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd
OpenStack計(jì)算服務(wù)-Nova
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-controller-install.html
在openstack的創(chuàng)建中,我們一般將Nova的計(jì)算節(jié)點(diǎn)組件放在需要?jiǎng)?chuàng)建虛擬機(jī)的主機(jī)上,而除了計(jì)算節(jié)點(diǎn)之外的其他Nova組件安裝在控制節(jié)點(diǎn)上,計(jì)算節(jié)點(diǎn)只負(fù)責(zé)創(chuàng)建虛擬機(jī)。
Nova的服務(wù)組件:
API:負(fù)責(zé)接收和響應(yīng)外部請(qǐng)求。API接收的請(qǐng)求將會(huì)放到消息隊(duì)列(rabbitMQ)中。是外部訪問(wèn)nova的唯一途徑。
Cert:負(fù)責(zé)身份認(rèn)證EC2.
Scheduler:用于云主機(jī)調(diào)度。決策虛擬機(jī)創(chuàng)建在哪個(gè)主機(jī)(計(jì)算節(jié)點(diǎn))上
Conductor: 計(jì)算節(jié)點(diǎn)訪問(wèn)數(shù)據(jù)庫(kù)的中間件。
Consoleauth:用于控制臺(tái)的授權(quán)驗(yàn)證
Novncproxy: VNC代理
配置數(shù)據(jù)庫(kù)
編輯``/etc/nova/nova.conf``文件并完成下面的操作:
在``[api_database]``和``[database]``部分,配置數(shù)據(jù)庫(kù)的連接:
[api_database] ... connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api [database] ... connection = mysql+pymysql://nova:nova@172.16.10.50/nova
同步Compute 數(shù)據(jù)庫(kù):
su -s /bin/sh -c "nova-manage api_db sync" nova su -s /bin/sh -c "nova-manage db sync" nova
查看數(shù)據(jù)庫(kù)同步是否成功:
mysql -h 172.16.10.50 -unova -pnova -e "use nova;show tables;" mysql -h 172.16.10.50 -unova -pnova -e "use nova_api;show tables;"
配置keystone
編輯``/etc/nova/nova.conf``文件并完成下面的操作:
編輯“[keystone_authtoken]” 部分,添加如下內(nèi)容:
[keystone_authtoken] ... auth_uri = http://172.16.10.50:5000 auth_url = http://172.16.10.50:35357 memcached_servers = 172.16.10.50:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = nova
在[DEFAULT]中打開(kāi)注釋:
[DEFAULT] ... auth_strategy = keystone
配置RabbitMQ
修改nova.conf文件:
[DEFAULT] ... rpc_backend=rabbit rabbit_host=172.16.10.50 rabbit_port=5672 rabbit_userid=openstack rabbit_password=openstack
配置nova服務(wù)參數(shù)
編輯``/etc/nova/nova.conf``文件
在``[DEFAULT]``部分,只啟用計(jì)算和元數(shù)據(jù)API:
enabled_apis=osapi_compute,metadata
在 [DEFAULT] 部分,使能 Networking 服務(wù):(此處的設(shè)置需要修改默認(rèn)參數(shù)Noop)
use_neutron = True firewall_driver = nova.virt.firewall.NoopFirewallDriver
在``[vnc]``部分,配置VNC代理使用控制節(jié)點(diǎn)的管理接口IP地址 :
vncserver_listen=172.16.10.50 vncserver_proxyclient_address=172.16.10.50
在 [glance] 區(qū)域,配置鏡像服務(wù) API 的位置:
api_servers= http://172.16.10.50:9292
在 [oslo_concurrency] 部分,配置鎖路徑:
lock_path=/var/lib/nova/tmp
啟動(dòng) Compute 服務(wù)并將其設(shè)置為隨系統(tǒng)啟動(dòng):
systemctl enable openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
systemctl start openstack-nova-api.service \ openstack-nova-consoleauth.service openstack-nova-scheduler.service \ openstack-nova-conductor.service openstack-nova-novncproxy.service
注冊(cè)nova服務(wù)
創(chuàng)建 nova 服務(wù)實(shí)體:
# source admin-openstack.sh # openstack service create --name nova \ --description "OpenStack Compute" compute
創(chuàng)建 Compute 服務(wù) API 端點(diǎn),nova api的端口為8774 :
# openstack endpoint create --region RegionOne \ compute public http://172.16.10.50:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne \ compute internal http://172.16.10.50:8774/v2.1/%\(tenant_id\)s
# openstack endpoint create --region RegionOne \ compute admin http://172.16.10.50:8774/v2.1/%\(tenant_id\)s
查看注冊(cè)是否成功:
# openstack host list +-----------+-------------+----------+ | Host Name | Service | Zone | +-----------+-------------+----------+ | node1 | conductor | internal | | node1 | consoleauth | internal | | node1 | scheduler | internal | +-----------+-------------+----------+
Nova計(jì)算節(jié)點(diǎn)的部署
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/nova-compute-install.html
計(jì)算節(jié)點(diǎn)是真正運(yùn)行虛擬機(jī)的節(jié)點(diǎn),其硬件配置決定了可以運(yùn)行多少虛擬機(jī)。并且這些節(jié)點(diǎn)需要支持CPU虛擬化。
確定CPU是否支持虛擬機(jī)的硬件加速:(結(jié)果不為0,表示支持)
egrep -c '(vmx|svm)' /proc/cpuinfo
此處的計(jì)算節(jié)點(diǎn)已經(jīng)在前面安裝了對(duì)應(yīng)的服務(wù)。
修改計(jì)算節(jié)點(diǎn)nova配置:(由于和控制節(jié)點(diǎn)的大部分配置類似,直接從控制節(jié)點(diǎn)scp配置文件到本地修改,并修改用戶權(quán)限)
# scp 172.16.10.50:/etc/nova/nova.conf ./nova1.conf # chown root:nova nova1.conf # mv nova.conf nova.conf-bak # mv nova1.conf nova.conf
修改配置文件:
刪除[database]中connection的配置參數(shù)。
#connection = mysql+pymysql://nova:nova@172.16.10.50/nova #connection = mysql+pymysql://nova:nova@172.16.10.50/nova_api
在``[vnc]``部分,啟用并配置遠(yuǎn)程控制臺(tái)訪問(wèn):
打開(kāi)注釋:
enabled=true novncproxy_base_url=http://172.16.10.50:6080/vnc_auto.html vncserver_listen=0.0.0.0 vncserver_proxyclient_address=172.16.10.51 #修改為本地主機(jī)ip
打開(kāi)默認(rèn)的KVM虛擬化:
virt_type=kvm
啟動(dòng)計(jì)算服務(wù)及其依賴,并將其配置為隨系統(tǒng)自動(dòng)啟動(dòng):
systemctl enable libvirtd.service openstack-nova-compute.service systemctl start libvirtd.service openstack-nova-compute.service
驗(yàn)證操作是否正常:
在控制節(jié)點(diǎn)查看:
# source admin-openstack.sh # openstack host list +-----------+-------------+----------+ | Host Name | Service | Zone | +-----------+-------------+----------+ | node1 | conductor | internal | | node1 | consoleauth | internal | | node1 | scheduler | internal | | node2 | compute | nova | +-----------+-------------+----------+ # nova p_w_picpath-list +--------------------------------------+--------+--------+--------+ | ID | Name | Status | Server | +--------------------------------------+--------+--------+--------+ | 82c3ba8f-4930-4e32-bd1b-34881f5eb4cd | cirros | ACTIVE | | +--------------------------------------+--------+--------+--------+
出現(xiàn)上面的結(jié)果,證明計(jì)算節(jié)點(diǎn)的安裝正常。
OpenStack網(wǎng)絡(luò)服務(wù)-Neutron
Neutron由一個(gè)Neutron Server提供服務(wù),主要包含一些二層的插件,如Linux Bridge,openvSwitch,DHCP-Agent, L3-Agent ,LBAAS-Agent 和其他組件等。模擬了實(shí)際物理網(wǎng)絡(luò)中的服務(wù)和協(xié)議。
安裝部署
http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/neutron-controller-install-option1.html
Neutron有兩種網(wǎng)絡(luò)架構(gòu),單一扁平網(wǎng)絡(luò)和負(fù)雜的多網(wǎng)段網(wǎng)絡(luò),這里以單一扁平網(wǎng)絡(luò)為例。
安裝部署需要在控制節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)上安裝對(duì)應(yīng)的服務(wù),之前已經(jīng)安裝,此處跳過(guò)此步驟。
數(shù)據(jù)庫(kù)配置
編輯``/etc/neutron/neutron.conf`` 文件并在控制節(jié)點(diǎn)完成如下操作:
在 [database] 部分,配置數(shù)據(jù)庫(kù)訪問(wèn):
connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron
配置Keystone
在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置認(rèn)證服務(wù)訪問(wèn):
[DEFAULT] auth_strategy = keystone
[keystone_authtoken] auth_uri = http://172.16.10.50:5000 auth_url = http://172.16.10.50:35357 memcached_servers = 172.16.10.50:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = neutron
配置RabbitMQ
在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息隊(duì)列的連接:
[DEFAULT] ... rpc_backend = rabbit
# 修改注釋 [oslo_messaging_rabbit] rabbit_host = 172.16.10.50 rabbit_userid = openstack rabbit_password = openstack
neutron的其他配置
在``[DEFAULT]``部分,啟用ML2插件并禁用其他插件:
core_plugin = ml2 service_plugins =
配置nova
在``[DEFAULT]``和``[nova]``部分,配置網(wǎng)絡(luò)服務(wù)來(lái)通知計(jì)算節(jié)點(diǎn)的網(wǎng)絡(luò)拓?fù)渥兓?/p>
notify_nova_on_port_status_changes = true notify_nova_on_port_data_changes = true
[nova] auth_url = http://172.16.10.50:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = nova password = nova
在 [oslo_concurrency] 部分,配置鎖路徑:
lock_path = /var/lib/neutron/tmp
ML2插件使用Linuxbridge機(jī)制來(lái)為實(shí)例創(chuàng)建layer-2虛擬網(wǎng)絡(luò)基礎(chǔ)設(shè)施.
編輯``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:
在``[ml2]``部分,啟用flat和VLAN網(wǎng)絡(luò):
type_drivers = flat,vlan,gre,vxlan,geneve
在``[ml2]``部分,禁用私有網(wǎng)絡(luò):
tenant_network_types =
在``[ml2]``部分,啟用Linuxbridge機(jī)制:
mechanism_drivers = linuxbridge,openvswitch
在``[ml2]`` 部分,啟用端口安全擴(kuò)展驅(qū)動(dòng):
extension_drivers = port_security
在``[ml2_type_flat]``部分,配置公共虛擬網(wǎng)絡(luò)為flat網(wǎng)絡(luò)
[ml2_type_flat] flat_networks = public
在 ``[securitygroup]``部分,啟用 ipset 增加安全組規(guī)則的高效性:
enable_ipset = true
配置Linuxbridge代理
Linuxbridge代理為實(shí)例建立layer-2虛擬網(wǎng)絡(luò)并且處理安全組規(guī)則。
編輯``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
在``[linux_bridge]``部分,將公共虛擬網(wǎng)絡(luò)和公共物理網(wǎng)絡(luò)接口對(duì)應(yīng)起來(lái):
physical_interface_mappings = public:eth0
在``[vxlan]``部分,禁止VXLAN覆蓋網(wǎng)絡(luò):
enable_vxlan = False
在 ``[securitygroup]``部分,啟用安全組并配置 Linuxbridge iptables firewall driver:
enable_security_group = true firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
配置DHCP代理
編輯``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
在``[DEFAULT]``部分,配置Linuxbridge驅(qū)動(dòng)接口,DHCP驅(qū)動(dòng)并啟用隔離元數(shù)據(jù),這樣在公共網(wǎng)絡(luò)上的實(shí)例就可以通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)元數(shù)據(jù):
interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True
配置元數(shù)據(jù)代理
編輯``/etc/neutron/metadata_agent.ini``文件并完成以下操作:
在``[DEFAULT]`` 部分,配置元數(shù)據(jù)主機(jī)以及共享密碼:
nova_metadata_ip = 172.16.10.50 metadata_proxy_shared_secret = trying
為nova配置網(wǎng)絡(luò)服務(wù)
編輯``/etc/nova/nova.conf``文件并完成以下操作:
在``[neutron]``部分,配置訪問(wèn)參數(shù),啟用元數(shù)據(jù)代理并設(shè)置密碼:
[neutron] ... url = http://172.16.10.50:9696 auth_url = http://172.16.10.50:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron
service_metadata_proxy=true metadata_proxy_shared_secret = trying
完成安裝
網(wǎng)絡(luò)服務(wù)初始化腳本需要一個(gè)軟鏈接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``。
# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
同步數(shù)據(jù)庫(kù):
# 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
重啟計(jì)算API 服務(wù):
systemctl restart openstack-nova-api.service
當(dāng)系統(tǒng)啟動(dòng)時(shí),啟動(dòng) Networking 服務(wù)并配置它啟動(dòng)
systemctl enable neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
systemctl start neutron-server.service \ neutron-linuxbridge-agent.service neutron-dhcp-agent.service \ neutron-metadata-agent.service
在keystone上完成注冊(cè)
# source admin-openstack.sh # openstack service create --name neutron --description "OpenStack Networking" network # openstack endpoint create --region RegionOne \ network public http://172.16.10.50:9696 # openstack endpoint create --region RegionOne \ network internal http://172.16.10.50:9696 # openstack endpoint create --region RegionOne \ network admin http://172.16.10.50:9696
驗(yàn)證neutron是否驗(yàn)證成功:
# neutron agent-list +------------------+------------------+-------+-------------------+-------+----------------+-------------------+ | id | agent_type | host | availability_zone | alive | admin_state_up | binary | +------------------+------------------+-------+-------------------+-------+----------------+-------------------+ | 172afad4-755b-47 | Linux bridge | node1 | | :-) | True | neutron- | | a1-81e8-d38056e2 | agent | | | | | linuxbridge-agent | | 441e | | | | | | | | 7f568fdf-192f-45 | Metadata agent | node1 | | :-) | True | neutron-metadata- | | bd-8436-b48ecb5d | | | | | | agent | | 7480 | | | | | | | | fda9f554-952a-4b | DHCP agent | node1 | nova | :-) | True | neutron-dhcp- | | 7e-8509-f2641a65 | | | | | | agent | | 95c9 | | | | | | | +------------------+------------------+-------+-------------------+-------+----------------+-------------------+
在計(jì)算節(jié)點(diǎn)上安裝Neutron
計(jì)算節(jié)點(diǎn)的配置和控制節(jié)點(diǎn)的配置文件是類似的,我們可以將控制節(jié)點(diǎn)的文件直接復(fù)制到計(jì)算節(jié)點(diǎn)進(jìn)行修改。
# scp /etc/neutron/neutron.conf 172.16.10.51:/etc/neutron/ # scp /etc/neutron/plugins/ml2/linuxbridge_agent.ini 172.16.10.51:/etc/neutron/plugins/ml2/ # chown root.neutron /etc/neutron/plugins/ml2/linuxbridge_agent.ini #scp后的文件
刪除neutron.conf上[database]的配置部分,刪除所有``connection`` 項(xiàng),因?yàn)橛?jì)算節(jié)點(diǎn)不直接訪問(wèn)數(shù)據(jù)庫(kù)。
# connection = mysql+pymysql://neutron:neutron@172.16.10.50/neutron
同時(shí)刪除[nova]部分的配置:
[nova] ... #auth_url = http://172.16.10.50:35357 #auth_type = password #project_domain_name = default #user_domain_name = default #region_name = RegionOne #project_name = service #username = nova #password = nova
注釋掉核心plugin的選項(xiàng):
#core_plugin = ml2 #service_plugins =
注釋掉nova端口通知的選項(xiàng):
#notify_nova_on_port_status_changes = true #notify_nova_on_port_data_changes = true
查看計(jì)算節(jié)點(diǎn)/etc/neutron/plugins/ml2/linuxbridge_agent.ini的配置信息:
[root@node2 ~]# grep '^[a-z]' /etc/neutron/plugins/ml2/linuxbridge_agent.ini physical_interface_mappings = public:eth0 firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver enable_security_group = True enable_vxlan = False
修改計(jì)算節(jié)點(diǎn)上nova的配置文件/etc/nova/nova.conf,和控制節(jié)點(diǎn)的一致:
[neutron] url = http://172.16.10.50:9696 auth_url = http://172.16.10.50:35357 auth_type = password project_domain_name = default user_domain_name = default region_name = RegionOne project_name = service username = neutron password = neutron
重啟計(jì)算節(jié)點(diǎn)Nova-compute
# systemctl restart openstack-nova-compute
啟動(dòng)neutron-linuxbridge-agent:
# systemctl enable neutron-linuxbridge-agent.service # systemctl start neutron-linuxbridge-agent.service
在控制節(jié)點(diǎn)上驗(yàn)證是否成功:
[root@node1 ~]# neutron agent-list +--------------------------------------+--------------------+-------+-------------------+-------+----------------+---------------------------+ | id | agent_type | host | availability_zone | alive | admin_state_up | binary
網(wǎng)頁(yè)名稱:OpenStack搭建(一)
文章位置:http://weahome.cn/article/ipjeoo.html