OpenStack Ocata版本中Nova Cells v2的失敗經(jīng)歷

Tips:目前Ocata只支持Single cells,并不支持Muiti-cells强品,所以不要用本文的實例來操作您的環(huán)境!

背景

今年2月份OpenStack基金會就發(fā)布了Ocata版本殊者,由于主打OpenStack的穩(wěn)定性和服務的可擴展性太雨,便決定整套Ocata環(huán)境玩玩。
其中重點關(guān)注現(xiàn)在Nova部署強制使用的Cells v2架構(gòu)茫蛹。

因為之前在Kilo上有玩過 Cells v1操刀,由于其復雜的設計和長期被標注實驗性質(zhì),所以目前這部分關(guān)注點極低婴洼,也沒有多少用戶去了解和關(guān)注這方面骨坑。
造成現(xiàn)在Cells v1版本幾乎處于凍結(jié)狀態(tài)。目前用Cell v1最成功的可能就是CERN(歐洲原子能研究中心)了窃蹋,其5000+計算節(jié)點不可謂不牛逼啊卡啰。
感興趣的朋友可以在官網(wǎng)社區(qū)上看下CERN的分享

簡單看下Cell v1和v2的區(qū)別

Nova Cells v1

Cells v1

Nova Cells v2

Cells v2

這里可以看到相對于v1,v2版本清爽簡單了許多警没。
API節(jié)點甚至都不要MQ組件匈辱,Scheduler在調(diào)度的時候只需要在DB中查出對于的Cell信息就能直接連接過去。
所有的Cell節(jié)點只需要依賴自己的DB和MQ杀迹。
Cell下的Compute節(jié)點只需注冊到所在的Cell節(jié)點下就可以了亡脸。

當然目前v2的架構(gòu)設計得益與Nova數(shù)據(jù)庫的拆分,我們知道從M版開始Nova就開始把API部分拆開創(chuàng)建一個獨立的實例。當時在部署的時候Nova配置文件中會有
[api_database]和[database]兩個域浅碾。

經(jīng)過兩個版本的迭代大州,這次Ocata發(fā)布的時候已經(jīng)強制用戶在部署的創(chuàng)建nova_cell實例了。

根據(jù)Cells v2的設計

API節(jié)點只使用兩個實例垂谢,即nova_apinova_cell0

nova_api實例里面放了全局信息厦画,如下

+------------------------------+
| Tables_in_nova_api           |
+------------------------------+
| aggregate_hosts              |
| aggregate_metadata           |
| aggregates                   |
| allocations                  |
| build_requests               |
| cell_mappings                |
| flavor_extra_specs           |
| flavor_projects              |
| flavors                      |
| host_mappings                |
| instance_group_member        |
| instance_group_policy        |
| instance_groups              |
| instance_mappings            |
| inventories                  |
| key_pairs                    |
| migrate_version              |
| placement_aggregates         |
| project_user_quotas          |
| quota_classes                |
| quota_usages                 |
| quotas                       |
| request_specs                |
| reservations                 |
| resource_classes             |
| resource_provider_aggregates |
| resource_providers           |
+------------------------------+

其中Cells的信息放在cell_mappings表中,Host的信息放在host_mappings表中滥朱,Instances的信息放在instancce_mappings表中根暑。

**1. ** cell_mappings 表 cell 的 Database 和 Mesage Queue 的連接 。 用于和子 cell 通訊
**2. ** host_mappings 是用于 nova-scheduler, 可以確認分配到的機器 徙邻。 這里其實也有一個坑 排嫌, 之前 nova-compute 啟動起來 , 就可以直接使用了 缰犁,cell v2 之后 淳地, 就需要手動運行 nova-manage cell_v2 discover_host , 把 host mapping 到 cell_mappings 表里面 , 那臺計算節(jié)點才會加入到調(diào)度中 帅容。
**3. ** instance_mappings 表里有所有 instance id, 這樣在查詢 instance 時 颇象, 就可以從這個表里查到他所在的 cell, 然后直連 cell 拿到 instance 具體信息

nova_cell實例就和普通nova實例的schema是一樣的。其中有一個nova_cell0的實例是用來保留當 instance 調(diào)度失敗時 丰嘉, instance 的信息不屬于任何一個 cell時夯到,就會放到 cell0 里面

操作

1. 部署API節(jié)點

這里我通過RDO快速部署一個最小的可用環(huán)境。answer-file如下:

[general]
CONFIG_MARIADB_INSTALL=y
CONFIG_GLANCE_INSTALL=y
CONFIG_CINDER_INSTALL=y
CONFIG_NOVA_INSTALL=y
CONFIG_NEUTRON_INSTALL=y
CONFIG_HORIZON_INSTALL=y
CONFIG_CLIENT_INSTALL=y
CONFIG_DEBUG_MODE=y
CONFIG_CONTROLLER_HOST=10.1.1.53
CONFIG_COMPUTE_HOSTS=10.1.1.53
CONFIG_NETWORK_HOSTS=10.1.1.53
CONFIG_STORAGE_HOST=10.1.1.53
CONFIG_USE_EPEL=y
CONFIG_ENABLE_RDO_TESTING=n
CONFIG_AMQP_BACKEND=rabbitmq
CONFIG_AMQP_HOST=10.1.1.53
CONFIG_AMQP_AUTH_USER=amqp_user
CONFIG_MARIADB_HOST=10.1.1.53
CONFIG_MARIADB_USER=root
CONFIG_KEYSTONE_DB_PURGE_ENABLE=True
CONFIG_KEYSTONE_REGION=RegionOne
CONFIG_KEYSTONE_ADMIN_EMAIL=magine@aliyun.com
CONFIG_KEYSTONE_ADMIN_USERNAME=admin
CONFIG_KEYSTONE_API_VERSION=v3
CONFIG_KEYSTONE_IDENTITY_BACKEND=sql
CONFIG_GLANCE_BACKEND=file
CONFIG_CINDER_DB_PURGE_ENABLE=True
CONFIG_CINDER_BACKEND=lvm
CONFIG_NOVA_DB_PURGE_ENABLE=True
CONFIG_NOVA_MANAGE_FLAVORS=y
CONFIG_NOVA_SCHED_CPU_ALLOC_RATIO=16.0
CONFIG_NOVA_SCHED_RAM_ALLOC_RATIO=1.0
CONFIG_NEUTRON_L3_EXT_BRIDGE=br-ex
CONFIG_LBAAS_INSTALL=y
CONFIG_NEUTRON_METERING_AGENT_INSTALL=y
CONFIG_NEUTRON_FWAAS=y
CONFIG_NEUTRON_ML2_TYPE_DRIVERS=vlan,flat
CONFIG_NEUTRON_ML2_TENANT_NETWORK_TYPES=vlan
CONFIG_NEUTRON_ML2_MECHANISM_DRIVERS=openvswitch
CONFIG_NEUTRON_ML2_VLAN_RANGES=physnet1:10:100
CONFIG_NEUTRON_ML2_VNI_RANGES=10:100
CONFIG_NEUTRON_L2_AGENT=openvswitch
CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-em2
CONFIG_NEUTRON_OVS_EXTERNAL_PHYSNET=br-ex:em3
CONFIG_NEUTRON_OVS_VXLAN_UDP_PORT=4789

2. 部署Cell節(jié)點

  • 服務安裝

這里需要mariadb-server饮亏、rabbitmq-server耍贾、openstack-nova-compute和openstack-nova-conductor這幾個服務

$ yum install -y mariadb-server rabbitmq-server openstack-nova-compute openstack-nova-conductor

$ systemctl enable mariadb rabbitmq-server openstack-nova-conductor openstack-nova-compute 

$ systemctl start mariadb rabbitmq-server 
  • 數(shù)據(jù)庫初始化
$ mysql -e 'create database nova_cell1;'
$ mysql -e "GRANT ALL PRIVILEGES ON nova_cell1.* TO 'nova'@'%' IDENTIFIED BY 'magine1989';"
$ mysql -e "GRANT ALL PRIVILEGES ON nova_cell1.* TO 'nova'@'localhost' IDENTIFIED BY 'magine1989';"
$ mysql -e 'FLUSH PRIVILEGES;'
  • nova.conf

這里主要關(guān)注數(shù)據(jù)庫的配置

connection=mysql+pymysql://nova_api:73b652f170d34a69@10.1.1.53/nova_api
connection=mysql+pymysql://nova:magine1989@10.1.1.56/nova
connection=mysql+pymysql://nova_placement:73b652f170d34a69@10.1.1.53/nova_placement
  • 啟動服務
$ systemctl start openstack-nova-conductor openstack-nova-compute 

$ nova-manage db sync

3. Cell v2操作

因為 cell v2 完全靠 database 的操作為建立 , 所以也沒有相關(guān)的 api 接口 路幸。 主要靠 nova-manage cell_v2 命令

添加cell

$ nova-manage cell_v2 create_cell --verbose --name cell1 --database_connection mysql+pymysql://nova:magine1989@10.1.1.56/nova_cell1 --transport-url rabbit://guest:guest@10.1.1.56:5672/ 

查看cell

$ nova-manage cell_v2 list_cells --verbose
+---------+--------------------------------------+--------------------------------------+------------------------------------------------------+
|   Name  |                 UUID                 |            Transport URL             |                 Database Connection                  |
+---------+--------------------------------------+--------------------------------------+------------------------------------------------------+
|  cell1  | 95fa78c1-bb42-4b81-8d37-9d8a23651b1a | rabbit://guest:guest@10.1.1.56:5672/ | mysql+pymysql://nova:magine1989@10.1.1.56/nova_cell1 |
| default | e8969639-bdc3-4b0d-933a-91bbf9759927 | rabbit://guest:guest@10.1.1.53:5672/ | mysql+pymysql://nova:73b652f170d34a69@10.1.1.53/nova |
+---------+--------------------------------------+--------------------------------------+------------------------------------------------------+

發(fā)現(xiàn)主機

$ nova-manage cell_v2 discover_hosts

這個時候我們?nèi)ゲ閿?shù)據(jù)庫的nova_api實例荐开,可以看到cell_mappings表和host_mappings表已經(jīng)更新如下

# cell_mappings
+---------------------+---------------------+----+--------------------------------------+---------+--------------------------------------+------------------------------------------------------+
| created_at          | updated_at          | id | uuid                                 | name    | transport_url                        | database_connection                                  |
+---------------------+---------------------+----+--------------------------------------+---------+--------------------------------------+------------------------------------------------------+
| 2017-04-18 02:10:21 | 2017-04-19 03:36:46 |  2 | e8969639-bdc3-4b0d-933a-91bbf9759927 | default | rabbit://guest:guest@10.1.1.53:5672/ | mysql+pymysql://nova:73b652f170d34a69@10.1.1.53/nova |
| 2017-04-19 08:01:35 | 2017-04-19 08:17:54 | 18 | 95fa78c1-bb42-4b81-8d37-9d8a23651b1a | cell1   | rabbit://guest:guest@10.1.1.56:5672/ | mysql+pymysql://nova:devops@10.1.1.56/nova_cell1     |
+---------------------+---------------------+----+--------------------------------------+---------+--------------------------------------+------------------------------------------------------+

# host_mappings
+---------------------+------------+----+---------+-------------------------------+
| created_at          | updated_at | id | cell_id | host                          |
+---------------------+------------+----+---------+-------------------------------+
| 2017-04-18 06:35:25 | NULL       |  1 |       2 | ocata.dev.com                 |
| 2017-04-19 08:22:21 | NULL       |  3 |      18 | ocata.compute01.dev.com       |
+---------------------+------------+----+---------+-------------------------------+

這里host_mappings的cell_id和cell_mappings的id是關(guān)聯(lián)上的

3. 失敗

講道理,做到這一步后简肴,Nova應該可以發(fā)現(xiàn)注冊進來的計算節(jié)點了晃听。
但是當我在用nova host-list查看host信息卻查不到cell1里面節(jié)點

 $ nova host-list
+---------------+-------------+----------+
| host_name     | service     | zone     |
+---------------+-------------+----------+
| ocata.dev.com | cert        | internal |
| ocata.dev.com | conductor   | internal |
| ocata.dev.com | scheduler   | internal |
| ocata.dev.com | consoleauth | internal |
| ocata.dev.com | compute     | nova     |
+---------------+-------------+----------+

$ nova service-list
+----+------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| Id | Binary           | Host          | Zone     | Status  | State | Updated_at                 | Disabled Reason |
+----+------------------+---------------+----------+---------+-------+----------------------------+-----------------+
| 17 | nova-cert        | ocata.dev.com | internal | enabled | up    | 2017-04-19T08:32:23.000000 | -               |
| 18 | nova-conductor   | ocata.dev.com | internal | enabled | up    | 2017-04-19T08:32:30.000000 | -               |
| 23 | nova-scheduler   | ocata.dev.com | internal | enabled | up    | 2017-04-19T08:32:26.000000 | -               |
| 24 | nova-consoleauth | ocata.dev.com | internal | enabled | up    | 2017-04-19T08:32:30.000000 | -               |
| 25 | nova-compute     | ocata.dev.com | nova     | enabled | up    | 2017-04-19T08:32:29.000000 | -               |
+----+------------------+---------------+----------+---------+-------+----------------------------+-----------------+

 $ nova hypervisor-list
+----+---------------------+-------+---------+
| ID | Hypervisor hostname | State | Status  |
+----+---------------------+-------+---------+
| 1  | ocata.dev.com       | up    | enabled |
+----+---------------------+-------+---------+

結(jié)果

剛開始我一直以為是nova-manage cell_v2的操作問題,當我用各種命令map_cell_and_hosts砰识、update_cell能扒、simple_cell_setup等仍然有問題時,我便開始懷疑Cell v2版本的問題辫狼。
經(jīng)過一段時間上網(wǎng)查資料才知道丫的Ocata版本現(xiàn)在只支持single cells初斑,多Multi-cell還得等今年下半年的Pike。汗 - - !
Ocata新特性原文看這里《53 new things to look for in OpenStack Ocata

另外膨处,這里想吐槽下現(xiàn)在國內(nèi)有些媒體在做新聞翻譯的時候见秤,有些地方還是欠妥砂竖,容易誤導人。
比如:99cloud的《OpenStack Ocata Release Notes

Ocata 版本加入了許多 Cell V2 的功能 鹃答。 但是不是所有的都可以用于生產(chǎn) 乎澄。 現(xiàn)在部署 Nova 需要最少創(chuàng)建一個 Cell。

而原文是

Nova now uses Cells v2 for all deployments; currently implemented as single cells, the next release, Pike, will support multi-cell clouds.

這里就說的很清楚测摔,Cell v2的多節(jié)點部署要到下個發(fā)行版才會被支持置济。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市避咆,隨后出現(xiàn)的幾起案子舟肉,更是在濱河造成了極大的恐慌,老刑警劉巖查库,帶你破解...
    沈念sama閱讀 212,222評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異黄琼,居然都是意外死亡樊销,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,455評論 3 385
  • 文/潘曉璐 我一進店門脏款,熙熙樓的掌柜王于貴愁眉苦臉地迎上來围苫,“玉大人,你說我怎么就攤上這事撤师〖粮” “怎么了?”我有些...
    開封第一講書人閱讀 157,720評論 0 348
  • 文/不壞的土叔 我叫張陵剃盾,是天一觀的道長腺占。 經(jīng)常有香客問我,道長痒谴,這世上最難降的妖魔是什么衰伯? 我笑而不...
    開封第一講書人閱讀 56,568評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮积蔚,結(jié)果婚禮上意鲸,老公的妹妹穿的比我還像新娘。我一直安慰自己尽爆,他們只是感情好怎顾,可當我...
    茶點故事閱讀 65,696評論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著漱贱,像睡著了一般槐雾。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上饱亿,一...
    開封第一講書人閱讀 49,879評論 1 290
  • 那天蚜退,我揣著相機與錄音闰靴,去河邊找鬼。 笑死钻注,一個胖子當著我的面吹牛蚂且,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播幅恋,決...
    沈念sama閱讀 39,028評論 3 409
  • 文/蒼蘭香墨 我猛地睜開眼杏死,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了捆交?” 一聲冷哼從身側(cè)響起淑翼,我...
    開封第一講書人閱讀 37,773評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎品追,沒想到半個月后玄括,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,220評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡肉瓦,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,550評論 2 327
  • 正文 我和宋清朗相戀三年遭京,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片泞莉。...
    茶點故事閱讀 38,697評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡哪雕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出鲫趁,到底是詐尸還是另有隱情斯嚎,我是刑警寧澤,帶...
    沈念sama閱讀 34,360評論 4 332
  • 正文 年R本政府宣布挨厚,位于F島的核電站堡僻,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏幽崩。R本人自食惡果不足惜苦始,卻給世界環(huán)境...
    茶點故事閱讀 40,002評論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望慌申。 院中可真熱鬧陌选,春花似錦、人聲如沸蹄溉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,782評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽柒爵。三九已至役电,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間棉胀,已是汗流浹背法瑟。 一陣腳步聲響...
    開封第一講書人閱讀 32,010評論 1 266
  • 我被黑心中介騙來泰國打工冀膝, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人霎挟。 一個月前我還...
    沈念sama閱讀 46,433評論 2 360
  • 正文 我出身青樓窝剖,卻偏偏與公主長得像,于是被迫代替她去往敵國和親酥夭。 傳聞我的和親對象是個殘疾皇子赐纱,可洞房花燭夜當晚...
    茶點故事閱讀 43,587評論 2 350

推薦閱讀更多精彩內(nèi)容