新聞中心
前言:openstack真是一個(gè)龐然大物,想要吃透還真不容易,所以在對openstack大概有了一個(gè)了解的時(shí)候,就應(yīng)該是部署,雖然openstack的安裝方式有rdo或者devstack等一鍵安裝工具,但是最好淺嘗輒止,有了大概的使用經(jīng)驗(yàn)之后就應(yīng)該是從頭到尾的安裝一遍了,不然對于那些報(bào)錯(cuò),以及故障的解決一定是不夠氣定神閑的,因此,當(dāng)你有了openstack的基本認(rèn)識(shí)后,開始安裝吧~

注:openstack的官方文檔寫得真的是,好的不要不要的,但是看英文總是感覺有點(diǎn)不溜,因此在官方文檔的基礎(chǔ)上寫得這篇筆記。
下面是小編為你精選的Openstack相關(guān)知識(shí),看看是否有你喜歡的:
首先應(yīng)該是大概的規(guī)劃,需要幾個(gè)節(jié)點(diǎn),選擇什么操作系統(tǒng),網(wǎng)絡(luò)怎么劃分~
下面是我的大概規(guī)劃
節(jié)點(diǎn)數(shù):2 (控制節(jié)點(diǎn),計(jì)算節(jié)點(diǎn))
操作系統(tǒng):CentOS Linux release 7.2.1511 (Core)
網(wǎng)絡(luò)配置:
控制節(jié)點(diǎn): 10.0.0.101 192.168.15.101
結(jié)算節(jié)點(diǎn): 10.0.0.102 192.168.15.102
先決條件:
The following minimum requirements should support a proof-of-concept environment with core services and several CirrOS instances:
Controller Node: 1 processor, 4 GB memory, and 5 GB storage
Compute Node: 1 processor, 2 GB memory, and 10 GB storage
官方建議概念驗(yàn)證的最小硬件需求。
控制節(jié)點(diǎn) 1 處理器,4 GB內(nèi)存,5 GB硬盤
計(jì)算節(jié)點(diǎn) 1 處理器,2 GB內(nèi)存,10 GB硬盤
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure(2) do |config|
config.vm.box = "centos7"
node_servers = { :control => ['10.0.0.101','192.168.15.101'],
:compute => ['10.0.0.102','192.168.15.102']
}
node_servers.each do |node_name,node_ip|
config.vm.define node_name do |node_config|
node_config.vm.host_name = node_name.to_s
node_config.vm.network :private_network,ip: node_ip[0]
node_config.vm.network :private_network,ip: node_ip[1],virtualbox_inet: true
config.vm.boot_timeout = 300
node_config.vm.provider "virtualbox" do |v|
v.memory = 4096
v.cpus = 1
end
end
end
end
通過vagrant up一條命令,稍等一會(huì),兩個(gè)熱騰騰的虛擬機(jī)就出爐了,我們的環(huán)境就OK了~~
環(huán)境如下
操作系統(tǒng):CentOS Linux release 7.2.1511 (Core)
網(wǎng)絡(luò)配置:
控制節(jié)點(diǎn): 10.0.0.101 192.168.15.101
結(jié)算節(jié)點(diǎn): 10.0.0.102 192.168.15.102
注意:上面的config.vm.box = "centos7",首先需要有個(gè)centos7的box
在開始部署前,我們先捋一捋openstack安裝步驟
首先是軟件環(huán)境準(zhǔn)備,我們需要將一些通用的軟件以及源倉庫等進(jìn)行配置,基本如下
NTP服務(wù)器
控制節(jié)點(diǎn),其他節(jié)點(diǎn)
openstack 安裝包倉庫
通用組件:
SQL 數(shù)據(jù)庫 ===> MariaDB
NoSQL 數(shù)據(jù)庫 ==> MongoDB(基本組件不需要,)
消息隊(duì)列 ==> RabbitMQ
Memcached
再就是openstack整個(gè)框架下的各個(gè)組件,基本組件如下
認(rèn)證服務(wù) ===> Keystone
鏡像服務(wù) ===> Glance
計(jì)算資源服務(wù) ===> Nova
網(wǎng)絡(luò)資源服務(wù) ===> Neutron
Dashboard ===> Horizon
塊存儲(chǔ)服務(wù) ===> Cinder
其他存儲(chǔ)服務(wù),如下
文件共享服務(wù) ===> Manila
對象存儲(chǔ)服務(wù) ===> Swift
其他組件,如下
編排服務(wù) ===> Heat
遙測服務(wù) ===> Ceilometer
數(shù)據(jù)庫服務(wù) ===> Trove
環(huán)境準(zhǔn)備
域名解析:
在各個(gè)節(jié)點(diǎn)編輯hosts文件,加入以下配置
10.0.0.101 controller
10.0.0.102 compute
ntp時(shí)間服務(wù)器
控制節(jié)點(diǎn)
1) 安裝chrony軟件包
yum install chrony
2) 編輯配置文件 /etc/chrony.conf,添加以下內(nèi)容,202.108.6.95可根據(jù)自己需求自行更改。
server 202.108.6.95 iburst
allow 10.0.0.0/24
3)加入自啟動(dòng),并啟動(dòng)
# systemctl enable chronyd.service
# systemctl start chronyd.service
其他節(jié)點(diǎn)
1) 安裝chrony軟件包
yum install chrony
2) 編輯配置文件 /etc/chrony.conf,添加以下內(nèi)容
server controller iburst
allow 10.0.0.0/24
3)加入自啟動(dòng),并啟動(dòng)
# systemctl enable chronyd.service
# systemctl start chronyd.service
驗(yàn)證:
控制節(jié)點(diǎn)
chronyc sources
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
=============================================================
^- 192.0.2.11 2 7 12 137 -2814us[-3000us] +/- 43ms
^* 192.0.2.12 2 6 177 46 +17us[ -23us] +/- 68ms
其他節(jié)點(diǎn)
# chronyc sources
210 Number of sources = 1
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^* controller 3 9 377 421 +15us[ -87us] +/- 15ms
openstack 安裝包倉庫
安裝相應(yīng)openstack版本yum源
yum install centos-release-openstack-mitaka
系統(tǒng)更新
yum upgrade
注:如果系統(tǒng)內(nèi)核有更新,需要重啟
安裝openstackclient,openstack-selinux
yum install python-openstackclient
yum install openstack-selinux
注:如果報(bào)什么 Package does not match intended download,則yum clean all或者直接下載rpm包安裝吧。
SQL數(shù)據(jù)庫
安裝
1 yum install mariadb mariadb-server python2-PyMySQL
創(chuàng)建/etc/my.cnf.d/openstack.cnf配置文件,加入以下內(nèi)容
#綁定IP
[mysqld]
bind-address = 10.0.0.11
#設(shè)置字符集等
default-storage-engine = innodb .
innodb_file_per_table
collation-server = utf8_general_ci
character-set-server = utf8
配置啟動(dòng)項(xiàng),啟動(dòng)等
systemctl enable mariadb.service
systemctl start mariadb.service
數(shù)據(jù)庫初始化,創(chuàng)建root密碼等,操作如下
mysql_secure_installation
Enter current password for root (enter for none):[Enter]
Set root password? [Y/n] Y
New password: openstack
Re-enter new password:openstack
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
消息隊(duì)列rabbitmq
安裝
yum install rabbitmq-server
配置啟動(dòng)項(xiàng),啟動(dòng)
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加openstack用戶
rabbitmqctl add_user openstack RABBIT_PASS
設(shè)置openstack用戶的權(quán)限,依次分別為寫,讀,訪問
rabbitmqctl set_permissions openstack ".*"".*"".*"
NoSQL Mongodb
安裝
yum install mongodb-server mongodb
配置/etc/mongod.conf配置文件
bind_ip = 10.0.0.11
#smallfile=true可選
smallfiles = true
配置啟動(dòng)項(xiàng),啟動(dòng)
# systemctl enable mongod.service
# systemctl start mongod.service
Memcached
安裝
# yum install memcached python-memcached
配置啟動(dòng)項(xiàng),啟動(dòng)
# systemctl enable memcached.service
# systemctl start memcached.service
至此,openstack整個(gè)框架的軟件環(huán)境基本搞定,下面就是各組件了。
安裝各組件很有意思,除了keystone基本上是差不多的步驟,唯一的區(qū)別就是創(chuàng)建時(shí)指定的名字不同而已,基本是一般以下步驟。
1)配置數(shù)據(jù)庫
create database xxx
GRANT ALL PRIVILEGES ON keystone.* TO 'xxxx'@'localhost' \
IDENTIFIED BY 'XXXX_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'xxxx'@'%' \
IDENTIFIED BY 'XXXX_DBPASS';
2)安裝
yum install xxx
3)配置文件
配置各項(xiàng)服務(wù)的連接,比如數(shù)據(jù)庫,rabbitmq等
認(rèn)證配置
特定配置
5)數(shù)據(jù)庫同步
創(chuàng)建需要的表
4)加入啟動(dòng)項(xiàng),啟動(dòng)
# systemctl enable openstack-xxx.service
# systemctl start openstack-xxxx.service
5)創(chuàng)建用戶,service,endpoint等
openstack user create xxx
openstack service create xxx
openstack endpoint create xxx
6)驗(yàn)證服務(wù)是否成功
注:配置文件的配置建議首先備份,然后為了省略不必要的篇幅,在此說明配置文件的編輯方式,如下。
[DEFAULT]
...
admin_token = ADMIN_TOKEN
上面的內(nèi)容,指明在[DEFAULT]的段落加入admin_token = ADMIN_TOKEN內(nèi)容。
各組件安裝
認(rèn)證服務(wù) Keystone
配置數(shù)據(jù)庫
$ mysql -u root -p
CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
IDENTIFIED BY 'KEYSTONE_DBPASS';
安裝
# yum install openstack-keystone httpd mod_wsgi
配置文件/etc/keystone/keystone.conf
admin令牌
[DEFAULT]
...
admin_token = ADMIN_TOKEN
數(shù)據(jù)庫
[database]
...
connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone
令牌生成方式
[token]
...
provider = fernet
注:上面的ADMIN_TOKEN可用openssl rand -hex 10命令生成,或者填入一串自定義的字符串
數(shù)據(jù)庫同步
# su -s /bin/sh -c "keystone-manage db_sync" keystone
初始化fernet秘鑰。
# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
配置Apache
編輯/etc/httpd/conf/httpd.conf
更改一下內(nèi)容
ServerName controller
創(chuàng)建/etc/httpd/conf.d/wsgi-keystone.conf配置文件,加入以下內(nèi)容
Listen 5000
Listen 35357
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
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)項(xiàng),啟動(dòng)
# systemctl enable httpd.service
# systemctl start httpd.service
創(chuàng)建service,API endpoint
為了避免不必要的篇幅,將admin_token,endpoint url配置到環(huán)境變量。
$ export OS_TOKEN=ADMIN_TOKEN
$ export OS_URL=http://controller:35357/v3
$ export OS_IDENTITY_API_VERSION=3
創(chuàng)建service
$ openstack service create \
--name keystone --description "OpenStack Identity" identity
創(chuàng)建endpoint,依次有public,internal,admin
$ openstack endpoint create --region RegionOne \
identity public http://controller:5000/v3
$ openstack endpoint create --region RegionOne \
identity internal http://controller:5000/v3
$ openstack endpoint create --region RegionOne \
identity admin http://controller:35357/v3
創(chuàng)建域,項(xiàng)目,用戶,角色 domain,project,user,role
創(chuàng)建domain
openstack domain create --description "Default Domain" default
創(chuàng)建project
openstack user create --domain default \
--password-prompt admin
創(chuàng)建admin role
openstack role create admin
將admin角色加入admin項(xiàng)目中
openstack role add --project admin --user admin admin
創(chuàng)建service項(xiàng)目
openstack project create --domain default \
--description "Service Project" service
創(chuàng)建demo項(xiàng)目
openstack project create --domain default \
--description "Demo Project" demo
創(chuàng)建demo用戶
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)建用戶時(shí)的密碼。
驗(yàn)證admin用戶
unset OS_TOKEN OS_URL
openstack --os-auth-url http://controller:35357/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name admin --os-username admin token issue
Password:
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:14:07.056119Z |
| id | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
| | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
| | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+
驗(yàn)證demo用戶
$ openstack --os-auth-url http://controller:5000/v3 \
--os-project-domain-name default --os-user-domain-name default \
--os-project-name demo --os-username demo token issue
Password:
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:15:39.014479Z |
| id | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
| | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
| | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U |
| project_id | ed0b60bf607743088218b0a533d5943f |
| user_id | 58126687cbcc4888bfa9ab73a2256f27 |
+------------+-----------------------------------------------------------------+
如果有以上格式返回,驗(yàn)證通過
admin,demo用戶的環(huán)境變量腳本
正常情況下,當(dāng)然吧諸如os-xxxx的參數(shù)放在環(huán)境變量中,為了更快的在admin,demo用戶之間切換,創(chuàng)建環(huán)境腳本
創(chuàng)建admin-openrc
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_PASS
export OS_AUTH_URL=http://controller:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
創(chuàng)建demo-openrc
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_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2
在此驗(yàn)證admin
首先 . admin-openrc
$ openstack token issue
+------------+-----------------------------------------------------------------+
| Field | Value |
+------------+-----------------------------------------------------------------+
| expires | 2016-02-12T20:44:35.659723Z |
| id | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
| | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
| | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E |
| project_id | 343d245e850143a096806dfaefa9afdc |
| user_id | ac3377633149401296f6c0d92d79dc16 |
+------------+-----------------------------------------------------------------+
鏡像服務(wù) Glance
配置數(shù)據(jù)庫
$ mysql -u root -p
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
IDENTIFIED BY 'GLANCE_DBPASS';
GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
IDENTIFIED BY 'GLANCE_DBPASS';
創(chuàng)建service,user,role
$ . admin-openrc
$ openstack user create --domain default --password-prompt glance
$ openstack role add --project service --user glance admin
創(chuàng)建endpoint,依次有public,internal,admin
$ openstack service create --name glance \
--description "OpenStack Image" image
$ 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
安裝
# yum install openstack-glance
配置文件/etc/glance/glance-api.conf
數(shù)據(jù)庫
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
keystone認(rèn)證
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
glance存儲(chǔ)
[glance_store]
...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/
配置文件/etc/glance/glance-registry.conf
數(shù)據(jù)庫
[database]
...
connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance
keystone認(rèn)證
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = glance
password = GLANCE_PASS
[paste_deploy]
...
flavor = keystone
同步數(shù)據(jù)庫
# su -s /bin/sh -c "glance-manage db_sync" glance
啟動(dòng)
# systemctl enable openstack-glance-api.service \
openstack-glance-registry.service
# systemctl start openstack-glance-api.service \
openstack-glance-registry.service
驗(yàn)證
$ . admin-openrc
下載cirros鏡像
$ wget
http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
創(chuàng)建鏡像
$ openstack image create "cirros" \
--file cirros-0.3.4-x86_64-disk.img \
--disk-format qcow2 --container-format bare \
--public
如果執(zhí)行以下命令,顯示如下,則成功
$ openstack image list
+--------------------------------------+--------+
| ID | Name |
+--------------------------------------+--------+
| 38047887-61a7-41ea-9b49-27987d5e8bb9 | cirros |
+--------------------------------------+--------+
計(jì)算資源服務(wù) nova
控制節(jié)點(diǎn)
數(shù)據(jù)庫
$ mysql -u root -p
CREATE DATABASE nova_api;
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';
GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';
創(chuàng)建service,user,role
$ . admin-openrc
$ openstack user create --domain default \
--password-prompt nova
$ openstack role add --project service --user nova admin
$ openstack service create --name nova \
--description "OpenStack Compute" compute
創(chuàng)建endpoint,依次有public,internal,admin
$ openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1/%\(tenant_id\)s
$ openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1/%\(tenant_id\)s
安裝
# yum install openstack-nova-api openstack-nova-conductor \
openstack-nova-console openstack-nova-novncproxy \
openstack-nova-scheduler
配置文件/etc/nova/nova.conf
啟用的api
[DEFAULT]
...
enabled_apis = osapi_compute,metadata
[api_database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
數(shù)據(jù)庫
[database]
...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
rabbitmq隊(duì)列
[DEFAULT]
...
rpc_backend = rabbit
[oslo_messaging_rabbit]
...
rabbit_host = controller
rabbit_userid = openstack
rabbit_password = RABBIT_PASS
keystone認(rèn)證
[DEFAULT]
...
auth_strategy = keystone
[keystone_authtoken]
...
auth_uri = http://controller:5000
auth_url = http://controller:35357
memcached_servers = controller:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = nova
password = NOVA_PASS
綁定ip
[DEFAULT]
...
my_ip = 10.0.0.101
支持neutron
[DEFAULT]
...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver
vnc配置
[vnc]
...
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip
glance配置
[glance]
...
api_servers = http://controller:9292
并發(fā)鎖
[oslo_concurrency]
...
lock_path = /var/lib/nova/tmp
同步數(shù)據(jù)庫
# su -s /bin/sh -c "nova-manage api_db sync" nova
# su -s /bin/sh -c "nova-manage db sync" nova
啟動(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
分享文章:在CentOS 7上安裝OpenStack Mitaka版本
本文地址:http://fisionsoft.com.cn/article/cojgpsd.html


咨詢
建站咨詢
