天天看點

雲計算-OpenStack

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

&gt;createdatabase keystone;

&gt;GRANTALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'f6zx0gURv';

&gt;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

&lt;VirtualHost*:5000&gt;

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

&lt;IfVersion&gt;= 2.4&gt;

ErrorLogFormat "%{cu}t %M"

&lt;/IfVersion&gt;

ErrorLog /var/log/httpd/keystone-error.log

CustomLog /var/log/httpd/keystone-access.log combined

&lt;Directory /usr/bin&gt;

Require all granted

&lt;IfVersion&lt; 2.4&gt;

Order allow,deny

Allow from all

&lt;/Directory&gt;

&lt;/VirtualHost&gt;

&lt;VirtualHost*:35357&gt;

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庫和使用者

&gt;CREATE database glance;

&gt;GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'Zznky4tP0';

&gt;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使用者

&gt;CREATE DATABASE nova;

&gt;GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'RYgv0rg7p';

&gt;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)建立庫、授權賬号

&gt;CREATE DATABASE neutron;

&gt;GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'quidyOC50';

&gt;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

&gt;CREATE DATABASE cinder;

&gt;GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' IDENTIFIED BY 'O3bwbpoZ3';

&gt;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登入:

ssh [email protected]

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,如需轉載請自行聯系原作者

繼續閱讀