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命令后显示为空的状况。
相关文章
相关标签/搜索