配置OpenStack实验环境
1. 实验环境架构
实验环境架构如上图所示,至少需要一个控制节点、一个计算节点、一个网络节点(最好再有一个存储节点)。其中一个小圆点代表该节点的一个网卡,相同颜色的网卡表示属于同一个子网/网段,六边形代表网络/子网,可以看到,控制节点具有一张网卡,计算节点和网络节点都具有三张网卡,而存储节点具有两张网卡(均是下限)。并且由网络节点连接到外部互联网。
其具体网段分配如下图:
图中又增添了两个对象存储模块,因而共存在4个网络/子网/网段,分别是管理网络、隧道网络、外部网络和存储网络。
由于我们并没有那么多的计算机节点用于实验,因而后续实验选择在虚拟机上完成实现。
教程中所使用的虚拟机软件为Vmware Workstation 10,我这里用的是Vmware Workstation 14 Pro。所选择使用的操作系统为ubuntu 14.04_02 LTS 这里保持一致即可。
2. 检查和配置主机环境
2.1 相关软件及虚拟机的安装
2.1.1 VMware的安装
我是很早前就安装好了VMware,关于下载安装教程可以参考这个《最新超详细VMware虚拟机下载与安装》
2.1.2 Ubuntu 14.02_02 LTS Server的安装
下载:https://man.linuxde.net/download/Ubuntu_14_04 选择Ubuntu 14.04.2 LTS映像下载即可。
关于安装可以按照这篇《VMware下Ubuntu Server 14.04安装教程(最详细)》
其中需要注意的几点为:
- 语言强烈推荐选英文(English)(博文的3-3、3-5-2部分),因为选中文可能会遇到一些莫名其妙的错误
- ssh服务建议在安装系统时就选择直接装上(博文的3-12部分)
- 最后的更改网卡名称步骤不需要
- 在创建各个节点时,对于计算节点和网络节点要配置3个网卡
2.1.3 SecureCRT的安装
关于SecureCRT可以参考这篇博文《SecureCRT绿色破解版(解压即可使用、无需积分)》
2.2 实验环境配置
2.2.1 VMware的NAT配置
由于教程中所使用的VMware版本为10,其NAT的设置与后续版本好像有所不同,因而需要我们将自己安装的高版本的VMware网络配置信息进行修改,具体方法如下:
首先在编辑中打开虚拟网络编辑器,
然后选择更改设置,将VMnet8的子网地址更改为10.0.0.0.
然后点击NAT设置,
设置网关地址为10.0.0.2
点击确认,然后应用即可。
2.2.2 主机名的配置
依照教程,我们需要将三台主机的主机名分别命名为controller、compute1、network。其可以通过以下几个步骤完成:
-
首先在VMware中启动这三台虚拟机,使用root用户登录并使用ifconfig命令查看与记录本机ip。
-
使用secureCRT分别连接到这三台虚拟机上,ip即为上面所记录的,以controller节点为例:
可以看到其ip为10.0.0.11,然后使用secureCRT进行连接。
首次连接时需要进行新建操作。 -
修改/etc/hostname文件中的内容即可更改主机名。命令为:
vi /etc/hostname
直接将文本内容修改为要修改后的名字即可,例如controller节点的内容(就一行内容)即:
其他计算节点、网络节点的配置相同。
2.2.3 主机网卡的配置
配置网卡需要使用root命令对/etc/network/interfaces文件进行编辑。命令为:
vi /etc/network/interfaces
按照2.1中的网段分配方案,controller节点只有一个网卡,且其ip为10.0.0.11,使用vi命令对/etc/network/interfaces进行编辑。
首先需要将原来的配置信息注释掉,
#auto eth0
#iface eth0 inet dhcp
然后在后面插入我们对网卡的配置信息:
auto eth0
iface eth0 inet static
address 10.0.0.11
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
然后保存重启虚拟机即可。
network节点具有三张网卡,所以一定确保虚拟机设置里是有至少三张网卡的。使用vi命令对/etc/network/interfaces进行编辑。
首先需要将原来的配置信息注释掉,
#auto eth0
#iface eth0 inet dhcp
然后加入我们的配置信息:
auto eth0
iface eth0 inet static
address 10.0.0.21
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
auto eth1
iface eth1 inet static
address 10.0.1.21
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
auto eth2
iface eth2 inet manual
up ip link set dev $IFACE up
down ip link set dev $IFACE down
然后保存重启虚拟机即可。
compute1节点同样具有三张网卡,所以一定确保虚拟机设置里是有至少三张网卡的。使用vi命令对/etc/network/interfaces进行编辑。
首先需要将原来的配置信息注释掉,
#auto eth0
#iface eth0 inet dhcp
然后加入我们的配置信息:
auto eth0
iface eth0 inet static
address 10.0.0.31
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
auto eth1
iface eth1 inet static
address 10.0.1.31
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
auto eth2
iface eth2 inet static
address 10.0.2.31
gateway 10.0.0.2
netmask 255.255.255.0
dns-nameservers 10.0.0.2
然后保存重启虚拟机即可。
2.2.4 修改IP地址与主机名信息对应
为了我们方便书写命令,需要对三台机器的/etc/hosts文件进行修改。
其命令为
vi /etc/hosts
首先将第二行内容注释掉,比如对于计算节点的虚拟机,注释掉第二行即:
之后在文件尾部添加以下内容:
10.0.0.11 controller
10.0.0.21 network
10.0.0.31 compute1
三个节点都是如此的配置步骤,之后保存文件重启虚拟机即可。
2.3 主机环境检查测试
2.3.1 主机网络配置检查
使用ifconfig检查主机网络配置,重点检查各个网卡的ip地址是否按1.2中网段划分配置正确
2.3.2 外网连通性测试
使用如下命令进行测试:
ping ubuntu-cloud.archive.canonical.com
如果可以ping通即测试通过。
2.3.3 检查三台主机间的网络联通性
在三台主机上分别使用如下命令进行检测:
ping controller
ping network
ping compute1
如果一切测试正常,则表示主机环境一切配置正确,如异常请仔细检查是否每一步都按照以上步骤进行。
3. 安装时间同步服务
3.1 APT工具简介
- APT (Advanced Package Tool)是一款适用于Unix和Linux系统的应用程序管理器
- APT成名的原因之一在于其出色的解决了软件的依赖关系
- 主要用于自动从互联网的软件仓库中搜索、安装、升级、卸载软件或操作系统
- 适用于deb包管理式的操作系统,比如ubuntu
- /etc/apt/sources.list存放的是软件源站点, 当执行软件包安装命令时,Ubuntu 就去这些站点下载软件包到本地并执行安装
其工作原理如下图:
其常用命令有以下几个:
apt-get:用于管理软件包,包括安装、卸载、升级等操作;
apt-cache:用于查询软件包信息;
apt-show-versions:用于显示系统中软件包版本信息;
apt-get upgrade:更新软件包,在修改/etc/apt/sources.list或/etc/apt/preferences之后运行该命令
apt-get dist-upgrade:将系统升级到新版本。
3.2 安装时间同步服务NTP
3.2.1 NTP简介
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机保持时间同步的一种协议。NTP客户端可以和NTP服务器的计算机时间保持一致
云计算环境可以使用多个主机节点进行分布式安装,要求各节点的时间保持一致。
3.2.2 NTP的安装
在配置时间同步时,我们需要先完成配置controller的时间同步,剩下两台虚拟机的时间同步直接与controller同步即可。按以下步骤进行:
- 首先在controller节点上安装NTP,使用命令:
apt-get install ntp
- 删除/var/lib/ntp/ntp.conf.dhcp 文件(rm /var/lib/ntp/ntp.conf.dhcp ),否则会使用此文件内的配置。若文件不存在,则默认已经删除了,无需再管。
- 修改controller 中的 /etc/ntp.conf文件 (vi /etc/ntp.conf 打开文件,要记得获取root权限)
打开文件后,要先把它文件中本来存在的server的四个连续语句删除掉(形如:server [IP or hostname] [prefer], server 是用来設定上级 NTP服务器),然后添加进去下面三句,第一个为时间同步的网址。同时再接着往下拉。
server ntp.sjtu.edu.cn
server NTP_SERVER1 iburst
server NTP_SERVER2 iburst
之后再接着往下编辑,添加以下四条语句:
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
restrict 10.0.0.21 mask 255.255.255.0 nomodify
restrict 10.0.0.31 mask 255.255.255.0 nomodify
这里的两个IP地址即为compute1节点和network节点的IP地址
- 接着配置其他两台虚拟机的NTP服务,同样是先安装NTP,然后对/etc/ntp.conf文件进行修改,其修改内容如下:
删除它文件中本来存在的server的四个连续语句,然后添以下三条语句:
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
server controller ibrust
- 重启NTP以及客户端同步 service ntp restart 或者 /etc/init.d/ntp restart
- 校验时间同步的安装
在终端使用如下命令进行NTP的校验:
ntpq -c peers
ntpq -c assoc
检查结果如下:
4. 配置OpenStack安装包源
在进行环境搭建时,我们一般选择将内网(即我们要配置的云主机群)内的某个节点设置为Repository,而由这个节点再去与互联网进行通信从远程Repository中进行软件的下载。而内网内的其他主机则可以直接从该节点处下载升级程序等(即将该节点视为其远程仓库),这样可以确保内网内软件版本环境等的一致性,也在一定程度上提高了安全性。
- 首先要配置互联网软件包源(安装Ubuntu Cloud archive keyring 和repository),使用命令:
apt-get install ubuntu-cloud-keyring
和
echo "deb http://ubuntu-cloud.archive.canonical.com/ubuntu trusty-updates/kilo main" > /etc/apt/sources.list.d/cloudarchive-kilo.list
- 升级系统
apt-get update && apt-get dist-upgrade
之后重启计算机。
注意:三台主机都需要这样配置!
5. 安装数据库Mariadb
5.1 Mariadb简介
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。
在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
同时,Python是一种面向对象、解释型计算机程序设计语言,其语法简洁而清晰,具有丰富和强大的类库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。
MySQLdb是python对mysql数据库进行操作的模块(客户端),借助该库,我们可以很方便的在Python中编程实现对数据库的操作。
5.2 安装与配置Mariadb
5.2.1 安装Mariadb
使用命令
apt-get install mariadb-server python-mysqldb
进行安装
5.2.2 配置Mariadb
- 首先要创建和编辑/etc/mysql/conf.d/mysqld_openstack.cnf
使用命令
vi /etc/mysql/conf.d/mysqld_openstack.cnf
接着在其中写入配置信息
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table
collation-server = utf8_general_ci
init-connect = 'SET NAMES utf8'
character-set-server = utf8
其设置含义为:
- bind-address设置允许远程访问数据库的主机地址
- default-storage-engine数据库使用的存储引擎
- innodb_file_per_table参数修改InnoDB为独立表空间模式
- character-set-server指定数据库使用的字符集
- init-connect指定客户端连接时运行的命令
- collation-server指定数据库的字符排序和校验方式
- utf8_general_ci性能优于utf8_unicode_ci
完成后重启数据库 service mysql restart
- 使用mysql_secure_installation命令为数据库增强安全性
输入命令
mysql_secure_installation
依次为root用户设置密码、 删除匿名账号、 取消root用户远程登录、 删除test库和对test库的访问权限、刷新授权表使修改生效
我这里由于root密码在安装时已经设置好了,就没有更改root密码
6. 安装消息队列服务RabbitMQ
6.1 MQ与OpenStack
6.1.1 MQ简介
- MQ全称为Message Queue
- 消息队列(MQ)是一种应用程序对应用程序的通信方法。
- 应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们。
- 队列的使用除去了接收和发送应用程序同时执行的要求。
6.1.2 OpenStack与MQ的联系
- OpenStack使用消息队列在不同的服务之间协调操作和状态信息
- OpenStack支持多种消息服务软件:RabbitMQ, Qpid, and ZeroMQ.
- MQ服务将运行于Controller Node节点
- RabbitMQ是流行的开源消息队列系统