OpenStack安裝流程(juno版)- 基礎環境配置

安裝前備註

官方推薦的各個節點的最低配置以下:html

  • Controller Node: 1 processor, 2 GB memory, and 5 GB storage
  • Network Node: 1 processor, 512 MB memory, and 5 GB storage
  • Compute Node: 1 processor, 2 GB memory, and 10 GB storage

實際操做發現,以Ubuntu14.04LTS虛擬機爲例,controller節點按8G存儲空間設置後到後期仍然會出現磁盤空間不足的狀況,因此推薦按12G容量來給定磁盤空間。node

因爲本文采用的是虛擬機安裝,能夠先配置一個虛擬機的模版,把一些統一的修改方案作好,節省一些工做量,具體內容以下:python

  1. 更改# vi /etc/hosts文件,添加以下代碼:
    <pre>10.10.10.10 controller
    10.10.10.11 compute
    10.10.10.12 network
    10.10.10.13 block
    10.10.10.14 object1
    10.10.10.15 object2
    </pre>
  2. 安裝最新的OpenStack發佈包,執行以下命令:

安裝Ubuntu Cloud archive keyring和repository
# apt-get install ubuntu-cloud-keyring
# echo "deb http://ubuntu-cloud.archive.c... trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list
更新全部安裝包
# apt-get update && apt-get dist-upgrademysql

  1. 安裝NTP

# apt-get install ntpsql

網絡配置

網絡基本架構圖
上圖爲本文所用的基本網絡架構圖,因爲以前試驗使用官方文檔的網絡IP配置會致使鏈接不上外網(具體緣由不明,我的感受是由於IP的網段和使用虛擬機的主機的網段處於同一網段中而衝突,後用Ubuntu server版測試,仍是網關問題,註釋掉設置文件中eth0的網關後便可以聯網),故IP的設定參考OPENSTACK JUNO: INSTALLATION USING VIRTUALBOX & UBUNTU 14.10 ( BASIC ENVIRONMENT ) - 1文章中的IP設定,下文將詳細給出。數據庫

具體IP配置方案以下:ubuntu

網絡 使用的網段
The management network 10.10.10.1
The tunnel network 10.20.20.1
The external network 192.168.100.1

management network裏各個節點的IP設定以下:安全

節點 使用IP
controller 10.10.10.10
compute 10.10.10.11
network 10.10.10.12
block 10.10.10.13
object1 10.10.10.14
object2 10.10.10.15

在進行各個節點具體操做以前,先設定虛擬機網絡的虛擬網絡,進入VirtualBox->全局設定->網絡->僅主機(Host-Only)網絡:服務器

  1. 添加網絡VirtualBox Host-Only Ethernet Adapter #2,主機虛擬網絡界面中設置IPv4地址爲10.10.10.1,IPv4網絡掩碼爲255.255.255.0,DHCP服務器選項不啓用;
  2. 添加網絡VirtualBox Host-Only Ethernet Adapter #3,主機虛擬網絡界面中設置IPv4地址爲10.20.20.1,IPv4網絡掩碼爲255.255.255.0,DHCP服務器選項不啓用;
  3. 添加網絡VirtualBox Host-Only Ethernet Adapter #4,主機虛擬網絡界面中設置IPv4地址爲192.168.100.1,IPv4網絡掩碼爲255.255.255.0,DHCP服務器選項不啓用;

controller節點上的網絡配置

controller節點虛擬機網絡設置,設置->網絡:網絡

  1. 網卡1,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #2,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  2. 網卡2,鏈接方式->網絡地址轉換(NAT),控制芯片->準虛擬化網絡(virtio-net),接入網線->勾選。

啓動虛擬機後,配置其網絡,經過更改# vi /etc/network/interfaces文件,添加以下代碼:
<pre># The management network interface
auto eth0
iface eth0 inet static

address 10.10.10.10
netmask 255.255.255.0

The NAT network

auto eth1
iface eth1 inet dhcp</pre>

配置命名的解決方案,更改# vi /etc/hostname文件,將主機名改成controller,更改# vi /etc/hosts文件,添加如下代碼:
<pre>10.10.10.10 controller
10.10.10.11 compute
10.10.10.12 network
10.10.10.13 block
10.10.10.14 object1
10.10.10.15 object2
</pre>

以後重啓系統激活配置。

compute節點上的網絡配置

compute節點虛擬機網絡設置,設置->網絡:

  1. 網卡1,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #2,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  2. 網卡2,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #3,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  3. 網卡3,鏈接方式->網絡地址轉換(NAT),控制芯片->準虛擬化網絡(virtio-net),接入網線->勾選。

啓動虛擬機後,配置其網絡,經過更改# vi /etc/network/interfaces文件,添加以下代碼:
<pre># The management network interface
auto eth0
iface eth0 inet static

address 10.10.10.11
netmask 255.255.255.0

The tunnel network interface

auto eth1
iface eth1 inet static

address 10.20.20.11
netmask 255.255.255.0

The NAT network

auto eth2
iface eth2 inet dhcp</pre>

配置命名的解決方案,更改# vi /etc/hostname文件,將主機名改成compute,更改# vi /etc/hosts文件,添加如下代碼:
<pre>10.10.10.10 controller
10.10.10.11 compute
10.10.10.12 network
10.10.10.13 block
10.10.10.14 object1
10.10.10.15 object2
</pre>

以後重啓系統激活配置。

network節點上的網絡配置

network節點虛擬機網絡設置,設置->網絡:

  1. 網卡1,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #2,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  2. 網卡2,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #3,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  3. 網卡3,鏈接方式->僅主機(Host-Only)適配器,界面名稱->VirtualBox Host-Only Ethernet Adapter #4,控制芯片->準虛擬化網絡(virtio-net),混雜模式->所有容許,接入網線->勾選;
  4. 網卡4,鏈接方式->網絡地址轉換(NAT),控制芯片->準虛擬化網絡(virtio-net),接入網線->勾選。

啓動虛擬機後,配置其網絡,經過更改# vi /etc/network/interfaces文件,添加以下代碼:
<pre># The management network interface
auto eth0
iface eth0 inet static

address 10.10.10.12
netmask 255.255.255.0

The tunnel network interface

auto eth1
iface eth1 inet static

address 10.20.20.12
netmask 255.255.255.0

The external network interface

auto eth2
iface eth2 inet manual

up ip link set dev $IFACE up
down ip link set dev $IFACE down

The NAT network

auto eth3
iface eth3 inet dhcp</pre>

配置命名的解決方案,更改# vi /etc/hostname文件,將主機名改成network,更改# vi /etc/hosts文件,添加如下代碼:
<pre>10.10.10.10 controller
10.10.10.11 compute
10.10.10.12 network
10.10.10.13 block
10.10.10.14 object1
10.10.10.15 object2
</pre>

以後重啓系統激活配置。

驗證節點之間的連通性

各個節點之間能相互ping通,能ping外網,以controller節點爲例:

  1. ping外網
    <pre>$ ping -c 4 www.baidu.com
    PING www.a.shifen.com (14.215.177.37) 56(84) bytes of data.
    64 bytes from 14.215.177.37: icmp_seq=1 ttl=54 time=6.16 ms
    64 bytes from 14.215.177.37: icmp_seq=2 ttl=54 time=6.42 ms
    64 bytes from 14.215.177.37: icmp_seq=3 ttl=54 time=6.12 ms
    64 bytes from 14.215.177.37: icmp_seq=4 ttl=54 time=5.84 ms

    --- www.a.shifen.com ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3005ms
    rtt min/avg/max/mdev = 5.841/6.140/6.429/0.229 ms

    </pre>
  2. ping compute節點
    <pre>$ ping -c 4 compute
    PING compute (10.10.10.11) 56(84) bytes of data.
    64 bytes from compute (10.10.10.11): icmp_seq=1 ttl=64 time=1.35 ms
    64 bytes from compute (10.10.10.11): icmp_seq=2 ttl=64 time=0.936 ms
    64 bytes from compute (10.10.10.11): icmp_seq=3 ttl=64 time=0.843 ms
    64 bytes from compute (10.10.10.11): icmp_seq=4 ttl=64 time=1.09 ms

    --- compute ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3002ms
    rtt min/avg/max/mdev = 0.843/1.055/1.352/0.194 ms

    </pre>
  3. ping network節點
    <pre>$ ping -c 4 network
    PING network (10.10.10.12) 56(84) bytes of data.
    64 bytes from network (10.10.10.12): icmp_seq=1 ttl=64 time=0.975 ms
    64 bytes from network (10.10.10.12): icmp_seq=2 ttl=64 time=0.530 ms
    64 bytes from network (10.10.10.12): icmp_seq=3 ttl=64 time=1.05 ms
    64 bytes from network (10.10.10.12): icmp_seq=4 ttl=64 time=0.815 ms

    --- network ping statistics ---
    4 packets transmitted, 4 received, 0% packet loss, time 3003ms
    rtt min/avg/max/mdev = 0.530/0.844/1.056/0.200 ms

    </pre>

Network Time Protocol(NTP)

NTP是用來同步各個節點之間的服務(service)的,推薦讓controller節點參照一些更精確的服務器來同步,而其餘節點參照controller節點來同步。(We recommend that you configure the controller node to reference more accurate (lower stratum) servers and other nodes to reference the controller node.)

controller節點上NTP的配置

安裝NTP
# apt-get install ntp

配置NTP

  1. 修改配置文件# vi /etc/ntp.conf,添加以下代碼:
    <pre>server NTP_SERVER iburst
    restrict -4 default kod notrap nomodify
    restrict -6 default kod notrap nomodify
    </pre>
    NTP_SERVER這裏被代替爲controller,也可設置爲其餘主機名或服務器,在配置文件中其餘參照的server不須要使用的話也能夠註釋掉,restrict選項中移除nopeer和noquery選項。若是/var/lib/ntp/ntp.conf.dhcp文件存在,則刪除之。
  2. 重啓NTP服務:# service ntp restart

其餘節點上NTP的配置

安裝NTP
# apt-get install ntp

配置NTP

  1. 修改配置文件# vi /etc/ntp.conf,添加以下代碼:
    <pre>server controller iburst</pre>

其餘server所有都註釋掉。若是/var/lib/ntp/ntp.conf.dhcp文件存在,則刪除之。

  1. 重啓NTP服務:# service ntp restart

驗證

  1. 在controller節點上運行以下命令:
    <pre># ntpq -c peers

    remote           refid      st t when poll reach   delay   offset  jitter

    ==============================================================================
    localhost .STEP. 16 l - 64 0 0.000 0.000 0.000
    91.189.89.199 193.79.237.14 2 u 67 64 16 273.049 -69.706 53.406</pre>

remote這欄中能看到主機名或者多個NTP服務器的IP地址。

  1. 在controller節點上運行以下命令:
    <pre># ntpq -c assoc

    ind assid status conf reach auth condition last_event cnt

    1 21224 8011 yes no none reject mobilize 1
    2 21225 965a yes yes none sys.peer sys_peer 5</pre>

condition這欄中至少有一個server含有sys.peer。

  1. 在其餘節點上運行以下命令:
    <pre>ntpq -c peers

    remote           refid      st t when poll reach   delay   offset  jitter

    ==============================================================================
    controller 91.189.89.199 3 u 23 64 0 0.000 0.000 0.000</pre>

remote這欄中顯示controller節點的主機名。

  1. 在其餘節點上運行以下命令:
    <pre>ntpq -c assoc

    ind assid status conf reach auth condition last_event cnt

    1 57512 9024 yes yes none reject reachable 2</pre>

這裏condition欄按照官方文檔應該是sys.peer,這裏顯示爲reject不知道緣由爲什麼,參考如下兩篇文章,其也顯示爲reject,OpenStack入門教程 -Part2- 配置 OpenStack 實驗環境openstack【Kilo】入門 【準備篇】二:NTP安裝

OpenStack安裝包

方法如本文開頭備註所寫。

數據庫配置

數據庫通常都安裝在controller節點上,本文采用MySQL。

  1. 安裝數據庫

# apt-get install mariadb-server python-mysqldb
在安裝過程當中會要求建立和輸入root賬號的密碼。

  1. 修改數據庫的配置文件,# vi /etc/mysql/my.cnf

[mysqld]部分,把bind-address對應的IP地址替換爲controller的management網絡的接口IP。
<pre>[mysqld]
...
bind-address = 10.10.10.10
</pre>
繼續在[mysqld]部分添加以下代碼:
<pre>[mysqld]
...
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
</pre>

  1. 重啓數據庫服務:

# service mysql restart

  1. 設置數據庫安全參數

# mysql_secure_installation
在設置的步驟中,能夠不用重置root密碼,其餘按提示設置便可。

消息服務(Messaging server)

本文選用RabbitMQ做爲消息隊列服務器。

安裝RabbitMQ:
# apt-get install rabbitmq-server
安裝過程當中RabbitMQ會自動創造一個名爲guest的帳戶,密碼也爲guest。爲了方便,在本文中使用guest這個帳戶,可使用如下命令修改密碼,將其中RABBIT_PASS替換爲合適的密碼:
<pre># rabbitmqctl change_password guest RABBIT_PASS
Changing password for user "guest" ...
...done.
</pre>

對於3.3.0以上版本的,須要開啓遠程訪問,具體操做以下:

檢查RabbitMQ版本
<pre># rabbitmqctl status | grep rabbit
Status of node 'rabbit@controller' ...
{running_applications,[{rabbit,"RabbitMQ","3.4.2"},
</pre>

檢查/etc/rabbitmq/rabbitmq.config文件,確保loopback_users對應空列表
<pre>[{rabbit, [{loopback_users, []}]}].</pre>
若是文件不存在則新建一個,將上述代碼寫入其中。

重啓服務
# service rabbitmq-server restart

至此,OpenStack的基礎環境配置完成。

安裝時出現的問題及解決方法

  • 安裝OpenStack的repository時,使用sudo安裝的話,到最後會有幾個文件由於權限問題裝不了,需轉成root用戶才能完整安裝。
  • 在配置虛擬機網絡時,虛擬網卡最後選用用virtio-net,不然會遇到設置好網絡後沒法鏈接外網的狀況。還有就是若是在網絡配置文件/etc/network/interfaces中,設置了內網網絡的網關也會致使不能鏈接外網。
  • RabbitMQ版本即便沒有高於3.3.0,最好也仍是將/etc/rabbitmq/rabbitmq.config文件按高於3.3.0版本的要求設置好,否則在之後neturon安裝過程當中可能會出現,安裝完成後輸入# neutron agent-list命令後顯示爲空的狀況。
相關文章
相關標籤/搜索