OpenStack安装流程(juno版)- 基础环境配置

安装前备注

官方推荐的各个节点的最低配置如下:

  • 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容量来给定磁盘空间。

由于本文采用的是虚拟机安装,可以先配置一个虚拟机的模版,把一些统一的修改方案做好,节省一些工作量,具体内容如下:

  1. 更改# vi /etc/hosts文件,添加如下代码:
    <pre>10.10.10.10 controller<br />10.10.10.11 compute<br />10.10.10.12 network<br />10.10.10.13 block<br />10.10.10.14 object1<br />10.10.10.15 object2</pre>
  2. 安装最新的OpenStack发布包,执行如下命令:

安装Ubuntu Cloud archive keyring和repository
# apt-get install ubuntu-cloud-keyring
# echo "deb <a target="_blank" href="https://www.ancii.com/link/v1/rtOeUeF4KHu5YzrOI30z3dkyupCVTOMkrUISBYm6-rtNfmAV-boljP5sZqL1ZNJIlaBRAFbxx5cB3OO1RFCXBg/" rel="nofollow" title="http://ubuntu-cloud.archive.c...">http://ubuntu-cloud.archive.c...</a> trusty-updates/juno main" > /etc/apt/sources.list.d/cloudarchive-juno.list
更新所有安装包
# apt-get update && apt-get dist-upgrade

  1. 安装NTP

# apt-get install ntp

网络配置

OpenStack安装流程(juno版)- 基础环境配置
上图为本文所用的基本网络架构图,由于之前试验使用官方文档的网络IP配置会导致连接不上外网(具体原因不明,个人感觉是因为IP的网段和使用虚拟机的主机的网段处于同一网段中而冲突,后用Ubuntu server版测试,还是网关问题,注释掉设置文件中eth0的网关后即可以联网),故IP的设定参考OPENSTACK JUNO: INSTALLATION USING VIRTUALBOX & UBUNTU 14.10 ( BASIC ENVIRONMENT ) - 1文章中的IP设定,下文将详细给出。

具体IP配置方案如下:

网络使用的网段
The management network10.10.10.1
The tunnel network10.20.20.1
The external network192.168.100.1

management network里各个节点的IP设定如下:

节点使用IP
controller10.10.10.10
compute10.10.10.11
network10.10.10.12
block10.10.10.13
object110.10.10.14
object210.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<br />auto eth0<br />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<br />10.10.10.11 compute<br />10.10.10.12 network<br />10.10.10.13 block<br />10.10.10.14 object1<br />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<br />auto eth0<br />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<br />10.10.10.11 compute<br />10.10.10.12 network<br />10.10.10.13 block<br />10.10.10.14 object1<br />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<br />auto eth0<br />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<br />10.10.10.11 compute<br />10.10.10.12 network<br />10.10.10.13 block<br />10.10.10.14 object1<br />10.10.10.15 object2</pre>

之后重启系统激活配置。

验证节点之间的连通性

各个节点之间能相互ping通,能ping外网,以controller节点为例:

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

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

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

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

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

    --- network ping statistics ---<br />4 packets transmitted, 4 received, 0% packet loss, time 3003ms<br />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<br />restrict -4 default kod notrap nomodify<br />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]<br /> ...<br /> bind-address = 10.10.10.10</pre>
继续在[mysqld]部分添加如下代码:
<pre>[mysqld]<br /> ...<br /> default-storage-engine = innodb<br /> innodb_file_per_table<br /> collation-server = utf8_general_ci<br /> init-connect = 'SET NAMES utf8'<br /> 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<br />Changing password for user "guest" ...<br />...done.</pre>

对于3.3.0以上版本的,需要开启远程访问,具体操作如下:

检查RabbitMQ版本
<pre># rabbitmqctl status | grep rabbit<br />Status of node 'rabbit@controller' ...<br />{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命令后显示为空的情况。

相关推荐