(一) 环境搭建
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算法,实现分布式系统数据的可用性和一致性