使用vagrant和virtualbox搭建openstack集群

本文介紹如何在自己的PC環(huán)境搭建一個(gè)openstack實(shí)驗(yàn)環(huán)境。

1. 實(shí)驗(yàn)環(huán)境

硬件要求:

  • 4核cpu

  • 至少8G內(nèi)存敛瓷,建議16G,(如果使用8G內(nèi)存需要修改Vagrantfile,將os-ctl1的內(nèi)存改為5G野来,os-cpu1的內(nèi)存改為1G)

  • 虛擬化軟件:

  • 實(shí)驗(yàn)虛機(jī):

    • os-ctl1: 192.168.56.15 (控制節(jié)點(diǎn),網(wǎng)絡(luò)節(jié)點(diǎn)踪旷,計(jì)算節(jié)點(diǎn)曼氛,除非針對(duì)該節(jié)點(diǎn)的特定用戶豁辉,否則下文將其稱為Allinone節(jié)點(diǎn)),默認(rèn)配置2個(gè)cpu舀患,8G內(nèi)存徽级。
    • os-cpu1: 192.168.56.16 (計(jì)算節(jié)點(diǎn)),默認(rèn)配置2個(gè)cpu聊浅,1G內(nèi)存餐抢。
    • os-net1: 192.168.56.17 (網(wǎng)絡(luò)節(jié)點(diǎn)),默認(rèn)配置1個(gè)cpu低匙,512M內(nèi)存旷痕。

    為了區(qū)分實(shí)驗(yàn)用的虛機(jī)和實(shí)驗(yàn)過程中openstack創(chuàng)建的虛機(jī),下文將這兩臺(tái)虛機(jī)稱為宿主機(jī)顽冶,而openstack虛機(jī)稱為nova實(shí)例欺抗。

  • 安裝和管理網(wǎng)絡(luò):192.168.56.0/24,該網(wǎng)絡(luò)為VirtualBox的Host-Only網(wǎng)絡(luò)强重,支持物理機(jī)和VirtualBox虛機(jī)間的互相訪問绞呈。

  • Openstack版本:Queens

2. 克隆項(xiàng)目并啟動(dòng)上述虛擬機(jī)

$ git clone https://github.com/lprincewhn/openstack.git
$ cd openstack
$ vagrant up

虛擬機(jī)啟動(dòng)完畢后可使用以下用戶登陸:

  • root/vagrant
  • vagrant/vagrantup

3. 安裝openstack

使用root用戶登陸os-ctl1,使用packstack來部署openstack竿屹。

Step 1 安裝Packstack

# yum install -y centos-release-openstack-queens
# yum install -y openstack-packstack

Packstack最簡(jiǎn)單的安裝方式是直接使用--allinone參數(shù)报强,但是在virtaulbox環(huán)境下,這種安裝方式有兩個(gè)問題:

  1. Packstack默認(rèn)使用設(shè)置了網(wǎng)關(guān)的網(wǎng)口所在網(wǎng)絡(luò)進(jìn)行安裝拱燃,即eth0秉溉,但是virtualbox中這個(gè)網(wǎng)口僅用于訪問外部網(wǎng)絡(luò),無法進(jìn)行虛機(jī)間通信碗誉,因此需要將ip從10.0.2.15修改為192.168.56.15召嘶。
  2. Packstack默認(rèn)創(chuàng)建demo租戶,如果要該demo正常工作哮缺,需要確保相關(guān)配置正確弄跌,如demo鏡像的下載URL,demo所需的網(wǎng)絡(luò)尝苇,為了避免這些配置工作铛只,可以修改配置,使其不創(chuàng)建demo糠溜。

Step 2 生成packsatack answer file

# packstack --allinone --gen-answer-file=allinone

Step 3 修改生成的配置文件

  1. 將其中的ip 10.0.2.15修改為主機(jī)名192.168.56.15
# vi allinone
# grep 192.168.56.15 allinone  
CONFIG_CONTROLLER_HOST=192.168.56.15
CONFIG_COMPUTE_HOSTS=192.168.56.15
CONFIG_NETWORK_HOSTS=192.168.56.15
CONFIG_SSL_CERT_SUBJECT_CN=192.168.56.15
CONFIG_SSL_CERT_SUBJECT_MAIL=admin@192.168.56.15
CONFIG_AMQP_HOST=192.168.56.15
CONFIG_MARIADB_HOST=192.168.56.15
CONFIG_REDIS_HOST=192.168.56.15
  1. 取消安裝demo
# vi allinone
# grep CONFIG_PROVISION_DEMO allinone
CONFIG_PROVISION_DEMO=n

Step 4開始安裝

# packstack --answer-file=allinone

4. 打開Openstack Dashboard

在安裝用戶的所在目錄可以找到admin用戶的密碼淳玩,如:

# cat keystonerc_admin
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin
    export OS_PASSWORD='4be84115c3624a26'
    export OS_AUTH_URL=http://192.168.56.15:5000/v3
    export PS1='[\u@\h \W(keystone_admin)]\$ '

export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_IDENTITY_API_VERSION=3

然后通過URL在瀏覽器中打開dashboard:http://192.168.56.15。

openstack-dashboard.PNG

5. 增加計(jì)算節(jié)點(diǎn)

有一些Openstack操作必須有多個(gè)計(jì)算節(jié)點(diǎn)才能進(jìn)行非竿,如實(shí)例遷移蜕着,跨宿主機(jī)的網(wǎng)絡(luò)通信等,因此本節(jié)將新增一個(gè)計(jì)算節(jié)點(diǎn)os-cpu1红柱。

拷貝一份之前的packstack answer file承匣,然后修改其中的兩個(gè)參數(shù):

  • CONFIG_COMPUTE_HOSTS蓖乘,增加新的計(jì)算節(jié)點(diǎn)IP 192.168.56.16。
  • EXCLUDE_SERVERS韧骗,為了避免影響已安裝的節(jié)點(diǎn)os-ctl1嘉抒,將其IP加入該參數(shù),使得packstack不會(huì)對(duì)該節(jié)點(diǎn)做任何操作袍暴。
# cp allinone addcpu
# diff allinone addcpu  
86c86
< EXCLUDE_SERVERS=
---
> EXCLUDE_SERVERS=192.168.56.15
97c97
< CONFIG_COMPUTE_HOSTS=192.168.56.15
---
> CONFIG_COMPUTE_HOSTS=192.168.56.15,192.168.56.16
# packstack --answer-file=addcpu

這樣安裝第一次必定會(huì)失敗众眨,因?yàn)榘熏F(xiàn)有節(jié)點(diǎn)加入EXCLUDE_SERVERS后,packstack在安裝過程不會(huì)對(duì)其進(jìn)行任何修改容诬,即不會(huì)添加新增節(jié)點(diǎn)訪問現(xiàn)有節(jié)點(diǎn)的iptables規(guī)則。即新增的os-cpu1無法訪問控制節(jié)點(diǎn)上的mysql沿腰,rabbitmq等服務(wù)览徒,因此os-cpu1安裝完成后其服務(wù)無法正常啟動(dòng)。

針對(duì)這個(gè)問題颂龙,需要手動(dòng)添加一些規(guī)則到Allinone節(jié)點(diǎn)的iptables中习蓬。
通過比較兩個(gè)節(jié)點(diǎn)上已經(jīng)安裝的規(guī)則,可以找到需要添加的規(guī)則如下:

# iptables -I INPUT 2 -s 192.168.56.16/32 -p tcp -m multiport --dports 5671,5672 -m comment --comment "001 amqp incoming amqp_192.168.56.16" -j ACCEPT #訪問控制節(jié)點(diǎn)上的rabbitmq-server
# iptables -I INPUT 2 -s 192.168.56.16/32 -p tcp -m multiport --dports 3260 -m comment --comment "001 cinder incoming cinder_192.168.56.16" -j ACCEPT #訪問控制節(jié)點(diǎn)上的cinder服務(wù)
# iptables -I INPUT 2 -s 192.168.56.16/32 -p tcp -m multiport --dports 3306 -m comment --comment "001 mariadb incoming mariadb_192.168.56.16" -j ACCEPT #訪問控制節(jié)點(diǎn)上的mariadb
# iptables -I INPUT 2 -s 192.168.56.16/32 -p udp -m multiport --dports 4789 -m comment --comment "001 neutron tunnel port incoming neutron_tunnel_192.168.56.15_192.168.56.16" -j ACCEPT #訪問網(wǎng)絡(luò)節(jié)點(diǎn)上的neutron tunel
# iptables -I INPUT 2 -s 192.168.56.16/32 -p tcp -m multiport --dports 16509,49152:49215 -m comment --comment "001 nova qemu migration incoming nova_qemu_migration_192.168.56.15_192.168.56.16" -j ACCEPT #計(jì)算節(jié)點(diǎn)間進(jìn)行實(shí)例遷移時(shí)互相訪問
# service iptables save  # 修改完畢后必須保存

重新運(yùn)行packstack:

# packstack --answer-file=addcpu

安裝完成后在Dashboard上已經(jīng)可以看到兩個(gè)計(jì)算節(jié)點(diǎn):


add-compute.PNG

從上面防火墻規(guī)則可以看出措嵌,如果按照packstack安裝時(shí)默認(rèn)的防火墻規(guī)則配置方法躲叼,每增加一個(gè)計(jì)算節(jié)點(diǎn),都要在啟動(dòng)所有節(jié)點(diǎn)(包括控制企巢,網(wǎng)絡(luò)枫慷,計(jì)算節(jié)點(diǎn))上增加針對(duì)新節(jié)點(diǎn)IP的防火墻規(guī)則,配置復(fù)雜度隨著集群規(guī)模的擴(kuò)大以平方速度上升浪规。針對(duì)這個(gè)問題或听,一個(gè)可行的解決方案是:
使用packstack安裝完每個(gè)節(jié)點(diǎn)后,都手動(dòng)需修改這個(gè)節(jié)點(diǎn)的防火墻規(guī)則笋婿,將其針對(duì)具體節(jié)點(diǎn)的ACCEPT規(guī)則合并修改為針對(duì)整個(gè)管理網(wǎng)絡(luò)(即本文中的192.168.56.0/24)的規(guī)則誉裆,如下:

  • 控制節(jié)點(diǎn)
# iptables -I INPUT 2 -s 192.168.56.0/24 -p tcp -m multiport --dports 5671,5672 -m comment --comment "001 amqp incoming amqp_192.168.56.0" -j ACCEPT #訪問控制節(jié)點(diǎn)上的rabbitmq-server
# iptables -I INPUT 2 -s 192.168.56.0/24 -p tcp -m multiport --dports 3260 -m comment --comment "001 cinder incoming cinder_192.168.56.0" -j ACCEPT #訪問控制節(jié)點(diǎn)上的cinder服務(wù)
# iptables -I INPUT 2 -s 192.168.56.0/24 -p tcp -m multiport --dports 3306 -m comment --comment "001 mariadb incoming mariadb_192.168.56.0" -j ACCEPT #訪問控制節(jié)點(diǎn)上的mariadb
  • 網(wǎng)絡(luò)節(jié)點(diǎn)
# iptables -I INPUT 2 -s 192.168.56.0/24 -p udp -m multiport --dports 4789 -m comment --comment "001 neutron tunnel port incoming neutron_tunnel_192.168.56.0" -j ACCEPT #網(wǎng)絡(luò)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)兩兩間的neutron tunel
  • 計(jì)算節(jié)點(diǎn)
# iptables -I INPUT 2 -s 192.168.56.0/24 -p udp -m multiport --dports 4789 -m comment --comment "001 neutron tunnel port incoming neutron_tunnel_192.168.56.0" -j ACCEPT #網(wǎng)絡(luò)節(jié)點(diǎn)和計(jì)算節(jié)點(diǎn)兩兩間的neutron tunel
# iptables -I INPUT 2 -s 192.168.56.0/24 -p tcp -m multiport --dports 16509,49152:49215 -m comment --comment "001 nova qemu migration incoming nova_qemu_migration_192.168.56.0" -j ACCEPT #計(jì)算節(jié)點(diǎn)間進(jìn)行實(shí)例遷移時(shí)互相訪問

5. 增加網(wǎng)絡(luò)節(jié)點(diǎn)

拷貝一份之前的packstack answer file,然后修改其中的兩個(gè)參數(shù):

  • CONFIG_NETWORK_HOSTS缸濒,增加新的計(jì)算節(jié)點(diǎn)IP 192.168.56.17足丢。
  • EXCLUDE_SERVERS,為了避免影響已安裝的節(jié)點(diǎn)os-ctl1和os-cpu1庇配,將其IP加入該參數(shù)斩跌,使得packstack不會(huì)對(duì)這些節(jié)點(diǎn)做任何操作。
# cp addcpu addnet
# diff addcpu addnet         
86c86
< EXCLUDE_SERVERS=192.168.56.15
---
> EXCLUDE_SERVERS=192.168.56.15,192.168.56.16
101c101
< CONFIG_NETWORK_HOSTS=192.168.56.15
---
> CONFIG_NETWORK_HOSTS=192.168.56.15,192.168.56.17
# packstack --answer-file=addnet

如果之前已經(jīng)把現(xiàn)有的兩個(gè)節(jié)點(diǎn)的防火墻策略修改為針對(duì)網(wǎng)絡(luò)放通讨永,則此時(shí)安裝就無需再次修改滔驶,可以直接成功。

6. 刪除計(jì)算節(jié)點(diǎn)和網(wǎng)絡(luò)節(jié)點(diǎn)

Openstack中還沒有提供刪除節(jié)點(diǎn)的接口卿闹,需要到數(shù)據(jù)庫中手動(dòng)清除揭糕。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萝快,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子著角,更是在濱河造成了極大的恐慌揪漩,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件吏口,死亡現(xiàn)場(chǎng)離奇詭異奄容,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)产徊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門昂勒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舟铜,你說我怎么就攤上這事戈盈。” “怎么了谆刨?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵塘娶,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我痊夭,道長(zhǎng)刁岸,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任她我,我火速辦了婚禮虹曙,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸦难。我一直安慰自己根吁,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布合蔽。 她就那樣靜靜地躺著击敌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拴事。 梳的紋絲不亂的頭發(fā)上沃斤,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音刃宵,去河邊找鬼衡瓶。 笑死,一個(gè)胖子當(dāng)著我的面吹牛牲证,可吹牛的內(nèi)容都是我干的哮针。 我是一名探鬼主播,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼十厢!你這毒婦竟也來了等太?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤蛮放,失蹤者是張志新(化名)和其女友劉穎缩抡,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體包颁,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡瞻想,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了娩嚼。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蘑险。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖岳悟,靈堂內(nèi)的尸體忽然破棺而出漠其,到底是詐尸還是另有隱情,我是刑警寧澤竿音,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站拴驮,受9級(jí)特大地震影響春瞬,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜套啤,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一宽气、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潜沦,春花似錦萄涯、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至争占,卻和暖如春燃逻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背臂痕。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工伯襟, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人握童。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓姆怪,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子稽揭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

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