(一) 环境搭建

1.虚拟机设置

两台虚拟机,一台是Controller节点,另一台是Compute节点,都采用minimal安装。

root密码都为:password
通过命令ip addr 得到ip:

注意:在需要配置文件修改的地方,我都将地址改为了Controller节点的IP地址。

Controller:192.168.112.146
Compute:192.168.112.145

2.yum源设置为阿里云

yum install -y wget
cd /etc/yum.repos.d/  # 进入到yum源的配置文件中
rm -rf *  # 清空所有的yum源文件
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
yum clean all # 清理yum缓存
yum makecache # 缓存软件包信息(提高搜索/安装软件的速度)
yum update
yum upgrade

3.配置ntp时间同步(两个节点都需要)

安装时间同步服务

yum install chrony -y

在时间同步服务的配置文件中添加子网段

vim /etc/chrony.conf
# 增加如下内容
allow 192.168.112.0/24

设置时间同步服务自启动

systemctl restart chronyd.service #重启时间同步服务
systemctl enable chronyd.service #设置时间同步服务开机自启动

4.关闭防火墙selinux(两个节点都需要)

关闭防火墙,关闭开机自启动防火墙

systemctl stop firewalld
systemctl disable firewalld

永久关闭 selinux 重启生效

vi /etc/selinux/config
#将 SELINUX=enforcing 改为 SELINUX=disabled

注意:

# 如果后面启动wsgi服务会报错:“(13)Permission denied: AH00072: make_sock: could not bind to address [::]:5001”
# 执行如下命令:
setenforce 0

5.安装Train版的yum源(两个节点都需要)

yum install centos-release-openstack-train -y

(二)Controller节点配置

1.安装客户端【controller节点】

yum install python-openstackclient -y

2.安装数据库【controller节点】

注意,在需要配置文件修改的地方,我都将地址改为了Controller节点的IP地址。

yum install mariadb mariadb-server python2-PyMySQL

设置配置文件

cat > /etc/my.cnf.d/openstack.cnf << EOF

[mysqld]
bind-address = 192.168.112.146
default-storage-engine = innodb  #默认存储引擎
innodb_file_per_table = on  #每张表独立表空间文件
max_connections = 4096  #最大连接数
collation-server = utf8_general_ci  #默认字符集
character-set-server = utf8
EOF

设置mysql服务自启动

systemctl enable mariadb.service  #开机自启动mysql
systemctl start mariadb.service   #开启mysql服务
mysql_secure_installation    # mysql初始化

后面的操作就是

回车--->n--->一路y
第一个回车是因为首次登陆,询问当前的密码,因为没有设置密码则直接按回车。

n代表没有设置密码。

3.安装消息队列服务【controller节点】

安装rabbitmq服务器

yum install rabbitmq-server -y

配置rabbitmq服务自启动

systemctl enable rabbitmq-server.service #设置rabbitmq开机自启动
systemctl start rabbitmq-server.service #开启rabbitmq服务

创建用户 openstack

rabbitmqctl add_user openstack RABBIT_PASS
# 输出:Creating user "openstack"

授予权限

rabbitmqctl set_permissions openstack ".*" ".*" ".*"
# 输出:Setting permissions for user "openstack" in vhost "/"

通过netstat查询rabbitmq服务启动与否,可是Centos7中默认没有安装netstat,因此首先查询出netstat在本机中的包为net-tools,然后使用 yum-y install net-tools 安装即可。

通过netstat查询rabbitmq服务启动与否

netstat -tnlup

出现了5672端口和25672端口,则说明rabbbitmq安装成功。

4.安装memcache【controller节点】

安装memcache服务

yum install -y memcached python-memcached
sed -i '/OPTIONS/c\OPTIONS="-l 0.0.0.0"' /etc/sysconfig/memcached

配置memcached服务自启动

systemctl enable memcached.service #设置开机自启动
systemctl start memcached.service #开启服务

安装和启动好之后,同样使用 netstat -tnlup 查看端口情况,看到11211端口有程序在侦听则表示memcache安装成功

5.安装etcd【controller节点】

注意,在需要配置文件修改的地方,我都将地址改为了Controller节点的IP地址。

安装etcd服务

yum install -y etcd

配置etcd的配置文件,注意IP地址都是Controller节点的IP地址:

cp -a /etc/etcd/etcd.conf{,.bak}
cat > /etc/etcd/etcd.conf <<EOF
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://192.168.112.146:2380"
ETCD_LISTEN_CLIENT_URLS="http://192.168.112.146:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.112.146:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://192.168.112.146:2379"
ETCD_INITIAL_CLUSTER="controller=http://192.168.112.146:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
EOF

注意,配置文件中不应该有其他的#注释,会导致文件解析失败。一行设置一个变量,一行多个会失败。

配置etcd服务开机自启动

systemctl enable etcd #开机自启动
systemctl start etcd #启动服务

安装和启动好之后,同样使用 netstat -tnlup 查看端口情况,看到2379和2380端口有程序在侦听则表示etcd安装成功

6.etcd介绍

etcd是CoreOS团队于2013年6月发起的开源项目,它的目标是构建一个高可用的分布式键值(key-value)数据库。etcd内部采用raft协议作为一致性算法,etcd基于Go语言实现。

etcd作为服务发现系统,有以下的特点:
(1)简单:安装配置简单,而且提供了HTTP API进行交互,使用也很简单

(2)安全:支持SSL证书验证

(3)快速:根据官方提供的benchmark数据,单实例支持每秒2k+读操作

(4)可靠:采用raft算法,实现分布式系统数据的可用性和一致性