1. 程式人生 > >快速入門Openstack,無腦多節點部署Mitaka(7)--cinder部署

快速入門Openstack,無腦多節點部署Mitaka(7)--cinder部署

什麼是Cinder?

1.簡介

Cinder從Openstack的Folsom版本(2012年9月釋出)開始出現,用以替代Nova-Volume服務,Cinder為Openstack提供了管理卷(volunme)的基礎設施。
Cinder是受請求得到、自助化訪問的塊儲存服務,即Cinder有兩個顯著地特點,第一,必須使用者提出請求,才能得到該服務;第二,使用者可以自定義的半自動化服務。Cinder實現LVM(邏輯卷管理),用以呈現儲存資源給能夠被Nova呼叫的端使用者。簡而言之,Cinder虛擬化塊儲存裝置池,提供端使用者自助服務的API用以請求和使用這些塊資源,並且不用瞭解儲存的位置或裝置資訊。

2.虛擬機器對儲存的要求

下面是我們建立虛擬機器例項時需要呼叫儲存服務的流程:

這裡寫圖片描述

3.相關元件

1.cinder-api:
Accepts API requests, and routes them to the cinder-volume for action.
2.cinder-volume:
Interacts directly with the Block Storage service, and processes such as the cinder-scheduler. It also interacts with these processes through a message queue. The cinder-volume service responds to read and write requests sent to the Block Storage service to maintain state. It can interact with a variety of storage providers through a driver architecture.
3.cinder-scheduler daemon:
Selects the optimal storage provider node on which to create the volume. A similar component to the nova-scheduler.
4.cinder-backup daemon:
The cinder-backup service provides backing up volumes of any type to a backup storage provider. Like the cinder-volume service, it can interact with a variety of storage providers through a driver architecture.
5.Messaging queue:
Routes information between the Block Storage processes.
懶得翻譯了,反正感覺也沒有什麼人在看,就當做是自己的筆記了….
簡要說下三個主要組成部分:
–cinder-api 元件負責向外提供Cinder REST API
–cinder-scheduler 元件負責分配儲存資源
–cinder-volume 元件負責封裝driver,不同的driver負責控制不同的後端儲存

cinder-controller部署

注意:以下操作是在controller節點上執行。因為跟之前安裝的服務都是大同小異,我只對不同部分做介紹,如果有不明白的,可以留言問我,或者翻翻之前的部落格。

1.建立資料庫

建立cinder資料庫和cinder管理員:
command:

mysql -u root -p123456
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
  IDENTIFIED BY '123456';
GRANT ALL PRIVILEGES
ON cinder.* TO 'cinder'@'%' \ IDENTIFIED BY '123456';
exit

outPut:

[[email protected] ~]# mysql -u root -p123456
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 365
Server version: 10.1.12-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE cinder;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'localhost' \
    ->   IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO 'cinder'@'%' \
    ->   IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> exit
Bye

2.建立cinder使用者

在openstack中建立cinder使用者,並設定為service tenant的管理員:

[[email protected] ~]# source ~/admin-openrc
[[email protected] ~]# openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | 098b1a4d36d241ed87e979ec86d32722 |
| enabled   | True                             |
| id        | 897788ab549f4490aa6cf6e93efb3b09 |
| name      | cinder                           |
+-----------+----------------------------------+
[[email protected] ~]# openstack role add --project service --user cinder admin
[[email protected] ~]# 

3.建立API埠

建立cinder and cinderv2 service entities,並建立相對應埠

[[email protected] ~]# openstack service create --name cinder \
>   --description "OpenStack Block Storage" volume
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | ac05b107e8744008878aedc102bfbe0b |
| name        | cinder                           |
| type        | volume                           |
+-------------+----------------------------------+
[[email protected] ~]# openstack service create --name cinderv2 \
>   --description "OpenStack Block Storage" volumev2
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | OpenStack Block Storage          |
| enabled     | True                             |
| id          | ebe25d2e0527457ba8ce2f117b0225fd |
| name        | cinderv2                         |
| type        | volumev2                         |
+-------------+----------------------------------+
[[email protected] ~]# 
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volume public http://controller.example.com:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | b96b9d92e36d41f0a921b9b59292eb0e                    |
| interface    | public                                              |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ac05b107e8744008878aedc102bfbe0b                    |
| service_name | cinder                                              |
| service_type | volume                                              |
| url          | http://controller.example.com:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volume internal http://controller.example.com:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | 89940a77b9034b4a9a0d7685d3021e3c                    |
| interface    | internal                                            |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ac05b107e8744008878aedc102bfbe0b                    |
| service_name | cinder                                              |
| service_type | volume                                              |
| url          | http://controller.example.com:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volume admin http://controller.example.com:8776/v1/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | 6cda84d1a57247699d304b0eeeb916a9                    |
| interface    | admin                                               |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ac05b107e8744008878aedc102bfbe0b                    |
| service_name | cinder                                              |
| service_type | volume                                              |
| url          | http://controller.example.com:8776/v1/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volumev2 public http://controller.example.com:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | f20f4a5536eb491d9cd1101066745ea9                    |
| interface    | public                                              |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ebe25d2e0527457ba8ce2f117b0225fd                    |
| service_name | cinderv2                                            |
| service_type | volumev2                                            |
| url          | http://controller.example.com:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volumev2 internal http://controller.example.com:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | b24401cc22c34943b5b4819bbc3988ad                    |
| interface    | internal                                            |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ebe25d2e0527457ba8ce2f117b0225fd                    |
| service_name | cinderv2                                            |
| service_type | volumev2                                            |
| url          | http://controller.example.com:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# openstack endpoint create --region RegionOne \
>   volumev2 admin http://controller.example.com:8776/v2/%\(tenant_id\)s
+--------------+-----------------------------------------------------+
| Field        | Value                                               |
+--------------+-----------------------------------------------------+
| enabled      | True                                                |
| id           | eeb0c5598c8c4a63860fb432f56a2be7                    |
| interface    | admin                                               |
| region       | RegionOne                                           |
| region_id    | RegionOne                                           |
| service_id   | ebe25d2e0527457ba8ce2f117b0225fd                    |
| service_name | cinderv2                                            |
| service_type | volumev2                                            |
| url          | http://controller.example.com:8776/v2/%(tenant_id)s |
+--------------+-----------------------------------------------------+
[[email protected] ~]# 

4.安裝相關元件

1.安裝

yum install openstack-cinder -y

2.修改配置檔案
cp -p /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
vim /etc/cinder/cinder.conf

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.0.17
[oslo_messaging_rabbit]
...
rabbit_host = controller.example.com
rabbit_userid = openstack
rabbit_password = henry
[database]
...
connection = mysql+pymysql://cinder:123456@controller.example.com/cinder
[keystone_authtoken]
...
auth_uri = http://controller.example.com:5000
auth_url = http://controller.example.com:35357
memcached_servers = controller.example.com:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = 123456
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

5.同步資料庫

su -s /bin/sh -c "cinder-manage db sync" cinder

忽略掉有關棄用的輸出

6.配置計算節點去使用Cinder

vim /etc/nova/nova.conf

[cinder]
os_region_name = RegionOne

7.相關服務

1.重啟openstack-nova-api.service

systemctl restart openstack-nova-api.service

2.啟動openstack-cinder-api和openstack-cinder-scheduler,並設定為開機自啟

systemctl enable openstack-cinder-api.service openstack-cinder-scheduler.service
systemctl start openstack-cinder-api.service openstack-cinder-scheduler.service

controller-block配置

注意,以下操作均在storage節點中執行

1.安裝lvm2元件

yum install lvm2 -y

2.啟動服務並設定為開機自啟

systemctl enable lvm2-lvmetad.service
systemctl start lvm2-lvmetad.service

3.建立卷組

/dev/vdb是我額外新增的一塊新的硬碟,不是作業系統盤。
1.建立物理卷:

[root@storage ~]# pvcreate /dev/vdb
  Physical volume "/dev/vdb" successfully created
[root@storage ~]# 

2.建立cinder-volumes卷組:

[root@storage ~]# vgcreate cinder-volumes /dev/vdb
  Volume group "cinder-volumes" successfully created
[root@storage ~]# 

3.編輯/etc/lvm/lvm.conf檔案
新增過濾規則,允許訪問/dev/vdb,拒絕其他裝置。
vim /etc/lvm/lvm.conf

devices {
...
filter = [ "a/vdb/", "r/.*/"]

4.安裝其他元件

1.安裝openstack-cinder和targetcli

yum install openstack-cinder targetcli -y 

2.編輯/etc/cinder/cinder.conf
cp -p /etc/cinder/cinder.conf /etc/cinder/cinder.conf.bak
vim /etc/cinder/cinder.conf

[DEFAULT]
...
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.0.19
enabled_backends = lvm
glance_api_servers = http://controller.example.com:9292
[oslo_messaging_rabbit]
...
rabbit_host = controller.example.com
rabbit_userid = openstack
rabbit_password = henry
[database]
...
connection = mysql+pymysql://cinder:123456@controller.example.com/cinder
[keystone_authtoken]
...
auth_uri = http://controller.example.com:5000
auth_url = http://controller.example.com:35357
memcached_servers = controller.example.com:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = 123456
[lvm]   #原檔案沒有該模組,手動新增至尾行
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
[oslo_concurrency]
...
lock_path = /var/lib/cinder/tmp

總覽:

[[email protected] ~]# cat /etc/cinder/cinder.conf | grep -v ^# | grep -v ^$
[DEFAULT]
rpc_backend = rabbit
auth_strategy = keystone
my_ip = 192.168.0.19
enabled_backends = lvm
glance_api_servers = http://controller.example.com:9292
[BACKEND]
[BRCD_FABRIC_EXAMPLE]
[CISCO_FABRIC_EXAMPLE]
[COORDINATION]
[FC-ZONE-MANAGER]
[KEYMGR]
[cors]
[cors.subdomain]
[database]
connection = mysql+pymysql://cinder:[email protected]/cinder
[keystone_authtoken]
auth_uri = http://controller.example.com:5000
auth_url = http://controller.example.com:35357
memcached_servers = controller.example.com:11211
auth_type = password
project_domain_name = default
user_domain_name = default
project_name = service
username = cinder
password = 123456
[matchmaker_redis]
[oslo_concurrency]
lock_path = /var/lib/cinder/tmp
[oslo_messaging_amqp]
[oslo_messaging_notifications]
[oslo_messaging_rabbit]
rabbit_host = controller.example.com
rabbit_userid = openstack
rabbit_password = henry
[oslo_middleware]
[oslo_policy]
[oslo_reports]
[oslo_versionedobjects]
[ssl]
[lvm]
volume_driver = cinder.volume.drivers.lvm.LVMVolumeDriver
volume_group = cinder-volumes
iscsi_protocol = iscsi
iscsi_helper = lioadm
[[email protected] ~]# 

5.啟動相關服務

啟動相關服務並設定為開機自啟

systemctl enable openstack-cinder-volume.service target.service
systemctl start openstack-cinder-volume.service target.service

哈哈,雲主機被黑了,還被植入了後門程式,懶得弄了,所以直接關機了。因為沒有打快照,所以部署教程就到此結束了。其實到這裡大家可以建立個虛擬機器玩玩了。

相關推薦

快速入門Openstack節點部署Mitaka1--前期環境搭建準備

序言 openstack是什麼?官方的解釋:OpenStack is a cloud operating system that controls large pools of compute, storage, and networking reso

快速入門Openstack節點部署Mitaka5--Nova部署

什麼是Nova? 簡介 Nova是openstack中用來提供高可擴充套件、按需、自服務的計算資源服務的一個專案。Nova是openstack最老牌的專案,最初剛釋出的時候集成了很多的功能,既包括計算,也包括網路和儲存。後來隨著openstack

快速入門Openstack節點部署Mitaka7--cinder部署

什麼是Cinder? 1.簡介 Cinder從Openstack的Folsom版本(2012年9月釋出)開始出現,用以替代Nova-Volume服務,Cinder為Openstack提供了管理卷(volunme)的基礎設施。 Cinder是受請求得到、

『中級篇』docker-swarm創建一個節點集群43

fine containe 創建 lock tis -cp -a lang virt >原創文章,歡迎轉載。轉載請註明:轉載自IT人故事會,謝謝!>原文鏈接地址:『中級篇』docker-swarm創建一個多節點集群(43) docker Swarm是Docker

C++快速入門---傳值、傳值和傳引用6

C++快速入門---傳值、傳值和傳引用(6)     傳值 #include <iostream> void changeAge(int age, int newAge); // 如果想要實現計劃功能,需要怎麼改? main() { int a

GAN應用之資料生成監督深度學習新方法3

3.1 從GAN到Conditional GAN GAN的生成式模型可以擬合真實分佈,所以它可以用於偽造資料。DCGAN是第一個用全卷積網路做資料生成的,下面是它的基本結構和生成的資料。 輸入100維的噪聲,輸出64*64的影象,從mnist的訓練結果來看,

Java執行緒程式設計-7-使用執行緒池實現執行緒的複用和一些坑的避免

原文出自 : https://blog.csdn.net/xlgen157387/article/details/78253096 執行緒複用:執行緒池 首先舉個例子: 假設這裡有一個系統,大概每秒需要處理5萬條資料,這5萬條資料為一個批次,而這沒秒傳送的5萬條資料

執行緒學習7

java主流鎖體系和分類: 1、樂觀鎖,悲觀鎖 悲觀鎖: 悲觀認為自己在使用資料的時候一定有別的執行緒來修改資料,在

如何快速入門python這篇文章幫你指明方向零基礎的福音

一個 交流群 企業 小項目 調用 不錯 數據類型 數據 入門 這是曾經在悟空問答回答的一個問題,後來效果還不錯,所以發出來,裏面結合了當年的學習經驗和一些行業老師的建議,希望幫助更多有興趣的人。(第三點福利) Python語言這幾年大火,在世界編程語言排行中Python也位

Go語言實現區塊鏈與加密貨幣-Part3交易優化單機模擬節點通訊

交易(二) 在這個系列文章的一開始,我們就提到了,區塊鏈是一個分散式資料庫。不過在之前的文章中,我們選擇性地跳過了“分散式”這個部分,而是將注意力都放到了“資料庫”部分。到目前為止,我們幾乎已經實現了一個區塊鏈資料庫的所有元素。今天,我們將會分析之前跳過的一些機制。而在本篇文章中,我們將

某高校計算機程式設計教授教你如何快速入門python一文帶你進入程式設計

如何快速入門Python 學習任何一門語言都是從入門(1年左右),通過不間斷練習達到熟練水準(3到5年),少數人最終能精通語言,成為執牛耳者,他們是金字塔的最頂層。雖然萬事開頭難,但好的開始是成功的一半,今天這篇文章就來談談如何開始入門 Python。只要方向對了,就不怕路遠。 設定目標

mongodb 中的 map reduce 的快速入門例子簡單操作和理解。

先看下mongodb官方給出的例子的圖。 個人理解的解釋: 這個圖,有四列資料。 第一列:原始資料。通常對應的mongodb裡面的一個表collection。 第二列:經過某些條件過濾過的資料,這個圖裡面就是按{"status":"A"}過濾資料。這個過濾的條件對應上面程式

快速入門CSS知識重點內容小結

盒子模型 把html頁面的元素看作一個矩形的盒子,相當於一個承裝內容的容器。每個矩形都由四個部分組成:填充層(內容) ,內邊框(padding) ,邊框(border) ,外邊框(margin)組成。 box-sizing取值: content-box(預設值)----wei

為了快速入門threejs學學threejs三大元件。

<!DOCTYPE html> <html>     <head>         <meta charset="UTF-8">    &nb

React + Webpack入口打包配置基礎配置快速打包優化打包速度

1. 安裝編譯外掛 編譯 jsx、es6、scss 等資源 ● 使用 bael 和 babel-loader 編譯 jsx、es6 ● 安裝外掛: babel-preset-es2015 用於解析 es6 ● 安裝外掛:babel-preset-react 用於

aelf開發進展更新:經濟系統適配升級改進已完成側鏈節點調試正按計劃推進

mark blog 測試 watermark 多節點 進行 細節 ffffff 影響 截至目前,經濟系統適配改進之後的共識模塊開發已完成,瀏覽器插件第二版已按計劃完成更新,經濟系統回歸已完成80%。以下是詳細開發進展。 上周開發進展 ? Release-v0.7.0 [驗

git零基礎快速入門實戰重點講解在實際生產中整合idea對版本、分支的管理等

html lan 幫助 rec 工具 log .com 咖啡館 ise 1、git簡單描述   git是重要的版本管理工具,幾乎每個碼農都有自己的git賬號管理自己的代碼,同時很多公司也是用git管理公司的代碼,   因此掌握git在實際生產中的常規使用非常重要。 2

十分鐘快速入門 Python看完即會不用收藏!

win 等待 變量命名 json stdin 要求 收藏 初始化 mage 本文以 Eric Matthes 的《Python編程:從入門到實踐》為基礎,以有一定其他語言經驗的程序員視角,對書中內容提煉總結,化繁為簡,將這本書的精髓融合成一篇10分鐘能讀完的文章。 讀完本篇

吾生也有涯吾知也涯_追隨老男孩3

目錄 絕對路徑 9.png images import 二進制 sys.path get on() 1 、模塊初識   模塊分2種:標準庫:直接導入,不需要安裝的庫(getpass/os等),第三方庫:需要下載、安裝的庫;   sys模塊:   >>> i

吾生也有涯吾知也涯_追隨老男孩4

數據運算 運算 .com log 數據 什麽 字符 技術 條件 1、數據運算符 2、三元運算符   result = 值1 if 條件 else 值2    3、bytes       msg = ‘我愛北京天安門‘ encoding =‘utf-8‘指