实验环境架构如上图所示,至少需要一个控制节点、一个计算节点、一个网络节点(最好再有一个存储节点)。其中一个小圆点代表该节点的一个网卡,相同颜色的网卡表示属于同一个子网/网段,六边形代表网络/子网,可以看到,控制节点具有一张网卡,计算节点和网络节点都具有三张网卡,而存储节点具有两张网卡(均是下限)。并且由网络节点连接到外部互联网。
其具体网段分配如下图:
图中又增添了两个对象存储模块,因而共存在4个网络/子网/网段,分别是管理网络、隧道网络、外部网络和存储网络。
由于我们并没有那么多的计算机节点用于实验,因而后续实验选择在虚拟机上完成实现。
教程中所使用的虚拟机软件为Vmware Workstation 10,我这里用的是Vmware Workstation 14 Pro。所选择使用的操作系统为ubuntu 14.04_02 LTS 这里保持一致即可。
我是很早前就安装好了VMware,关于下载安装教程可以参考这个《最新超详细VMware虚拟机下载与安装》
下载:https://man.linuxde.net/download/Ubuntu_14_04 选择Ubuntu 14.04.2 LTS映像下载即可。
关于安装可以按照这篇《VMware下Ubuntu Server 14.04安装教程(最详细)》
其中需要注意的几点为:
关于SecureCRT可以参考这篇博文《SecureCRT绿色破解版(解压即可使用、无需积分)》
由于教程中所使用的VMware版本为10,其NAT的设置与后续版本好像有所不同,因而需要我们将自己安装的高版本的VMware网络配置信息进行修改,具体方法如下:
首先在编辑中打开虚拟网络编辑器,
然后选择更改设置,将VMnet8的子网地址更改为10.0.0.0.
然后点击NAT设置,
设置网关地址为10.0.0.2
点击确认,然后应用即可。
依照教程,我们需要将三台主机的主机名分别命名为controller、compute1、network。其可以通过以下几个步骤完成:
首先在VMware中启动这三台虚拟机,使用root用户登录并使用ifconfig命令查看与记录本机ip。
使用secureCRT分别连接到这三台虚拟机上,ip即为上面所记录的,以controller节点为例:
可以看到其ip为10.0.0.11,然后使用secureCRT进行连接。
首次连接时需要进行新建操作。
修改/etc/hostname文件中的内容即可更改主机名。命令为:
vi /etc/hostname
直接将文本内容修改为要修改后的名字即可,例如controller节点的内容(就一行内容)即:
其他计算节点、网络节点的配置相同。
配置网卡需要使用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
然后保存重启虚拟机即可。
为了我们方便书写命令,需要对三台机器的/etc/hosts文件进行修改。
其命令为
vi /etc/hosts
首先将第二行内容注释掉,比如对于计算节点的虚拟机,注释掉第二行即:
10.0.0.11 controller
10.0.0.21 network
10.0.0.31 compute1
三个节点都是如此的配置步骤,之后保存文件重启虚拟机即可。
使用ifconfig检查主机网络配置,重点检查各个网卡的ip地址是否按1.2中网段划分配置正确
使用如下命令进行测试:
ping ubuntu-cloud.archive.canonical.com
如果可以ping通即测试通过。
在三台主机上分别使用如下命令进行检测:
ping controller
ping network
ping compute1
如果一切测试正常,则表示主机环境一切配置正确,如异常请仔细检查是否每一步都按照以上步骤进行。
其工作原理如下图:
apt-get:用于管理软件包,包括安装、卸载、升级等操作;
apt-cache:用于查询软件包信息;
apt-show-versions:用于显示系统中软件包版本信息;
apt-get upgrade:更新软件包,在修改/etc/apt/sources.list或/etc/apt/preferences之后运行该命令
apt-get dist-upgrade:将系统升级到新版本。
NTP(Network Time Protocol,网络时间协议)是用来使网络中的各个计算机保持时间同步的一种协议。NTP客户端可以和NTP服务器的计算机时间保持一致
云计算环境可以使用多个主机节点进行分布式安装,要求各节点的时间保持一致。
在配置时间同步时,我们需要先完成配置controller的时间同步,剩下两台虚拟机的时间同步直接与controller同步即可。按以下步骤进行:
apt-get install 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地址
restrict -4 default kod notrap nomodify
restrict -6 default kod notrap nomodify
server controller ibrust
ntpq -c peers
ntpq -c assoc
检查结果如下:
在进行环境搭建时,我们一般选择将内网(即我们要配置的云主机群)内的某个节点设置为Repository,而由这个节点再去与互联网进行通信从远程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
之后重启计算机。
注意:三台主机都需要这样配置!
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中编程实现对数据库的操作。
使用命令
apt-get install mariadb-server python-mysqldb
进行安装
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
其设置含义为:
完成后重启数据库 service mysql restart
mysql_secure_installation
依次为root用户设置密码、 删除匿名账号、 取消root用户远程登录、 删除test库和对test库的访问权限、刷新授权表使修改生效
我这里由于root密码在安装时已经设置好了,就没有更改root密码