官方推荐的各个节点的最低配置以下:html
实际操做发现,以Ubuntu14.04LTS虚拟机为例,controller节点按8G存储空间设置后到后期仍然会出现磁盘空间不足的状况,因此推荐按12G容量来给定磁盘空间。node
因为本文采用的是虚拟机安装,能够先配置一个虚拟机的模版,把一些统一的修改方案作好,节省一些工做量,具体内容以下:python
# vi /etc/hosts
文件,添加以下代码: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>安装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-upgrade
mysql
# apt-get install ntp
sql
上图为本文所用的基本网络架构图,因为以前试验使用官方文档的网络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)网络:服务器
controller节点虚拟机网络设置,设置->网络:网络
启动虚拟机后,配置其网络,经过更改# 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
auto eth1
iface eth1 inet dhcp</pre>
配置命名的解决方案,更改# vi /etc/hostname
文件,将主机名改成controller,更改# vi /etc/hosts
文件,添加如下代码:
<pre>10.10.10.10 controller
</pre>
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
以后重启系统激活配置。
compute节点虚拟机网络设置,设置->网络:
启动虚拟机后,配置其网络,经过更改# 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
auto eth1
iface eth1 inet static
address 10.20.20.11 netmask 255.255.255.0
auto eth2
iface eth2 inet dhcp</pre>
配置命名的解决方案,更改# vi /etc/hostname
文件,将主机名改成compute,更改# vi /etc/hosts
文件,添加如下代码:
<pre>10.10.10.10 controller
</pre>
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
以后重启系统激活配置。
network节点虚拟机网络设置,设置->网络:
启动虚拟机后,配置其网络,经过更改# 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
auto eth1
iface eth1 inet static
address 10.20.20.12 netmask 255.255.255.0
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up down ip link set dev $IFACE down
auto eth3
iface eth3 inet dhcp</pre>
配置命名的解决方案,更改# vi /etc/hostname
文件,将主机名改成network,更改# vi /etc/hosts
文件,添加如下代码:
<pre>10.10.10.10 controller
</pre>
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
以后重启系统激活配置。
各个节点之间能相互ping通,能ping外网,以controller节点为例:
$ 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>$ 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>$ 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>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.)
安装NTP# apt-get install ntp
配置NTP
# vi /etc/ntp.conf
,添加以下代码:server NTP_SERVER iburst
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
</pre>/var/lib/ntp/ntp.conf.dhcp
文件存在,则删除之。# service ntp restart
安装NTP# apt-get install ntp
配置NTP
# vi /etc/ntp.conf
,添加以下代码:server controller iburst
</pre>其余server所有都注释掉。若是/var/lib/ntp/ntp.conf.dhcp
文件存在,则删除之。
# service ntp restart
在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地址。
在controller节点上运行以下命令:
<pre># ntpq -c assoc
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。
在其余节点上运行以下命令:
<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节点的主机名。
在其余节点上运行以下命令:
<pre>ntpq -c assoc
1 57512 9024 yes yes none reject reachable 2</pre>
这里condition栏按照官方文档应该是sys.peer,这里显示为reject不知道缘由为什么,参考如下两篇文章,其也显示为reject,OpenStack入门教程 -Part2- 配置 OpenStack 实验环境,openstack【Kilo】入门 【准备篇】二:NTP安装。
方法如本文开头备注所写。
数据库通常都安装在controller节点上,本文采用MySQL。
# apt-get install mariadb-server python-mysqldb
在安装过程当中会要求建立和输入root账号的密码。
# vi /etc/mysql/my.cnf
:在[mysqld]
部分,把bind-address
对应的IP地址替换为controller的management网络的接口IP。
<pre>[mysqld]
</pre>
...
bind-address = 10.10.10.10
继续在[mysqld]
部分添加以下代码:
<pre>[mysqld]
</pre>
...
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
# service mysql restart
# mysql_secure_installation
在设置的步骤中,能够不用重置root密码,其余按提示设置便可。
本文选用RabbitMQ做为消息队列服务器。
安装RabbitMQ:# apt-get install rabbitmq-server
安装过程当中RabbitMQ会自动创造一个名为guest的帐户,密码也为guest。为了方便,在本文中使用guest这个帐户,可使用如下命令修改密码,将其中RABBIT_PASS替换为合适的密码:
<pre># rabbitmqctl change_password guest RABBIT_PASS
</pre>
Changing password for user "guest" ...
...done.
对于3.3.0以上版本的,须要开启远程访问,具体操做以下:
检查RabbitMQ版本
<pre># rabbitmqctl status | grep rabbit
</pre>
Status of node 'rabbit@controller' ...
{running_applications,[{rabbit,"RabbitMQ","3.4.2"},
检查/etc/rabbitmq/rabbitmq.config
文件,确保loopback_users对应空列表
<pre>[{rabbit, [{loopback_users, []}]}].
</pre>
若是文件不存在则新建一个,将上述代码写入其中。
重启服务# service rabbitmq-server restart
至此,OpenStack的基础环境配置完成。
/etc/network/interfaces
中,设置了内网网络的网关也会致使不能链接外网。/etc/rabbitmq/rabbitmq.config
文件按高于3.3.0版本的要求设置好,否则在之后neturon安装过程当中可能会出现,安装完成后输入# neutron agent-list
命令后显示为空的状况。