准备三台虚拟机
修改host文件
vi /etc/hosts
1、NetworkManager服务
所有节点,因为NetworkManager服务与Neutron服务网络冲突,所以禁用NetworkManager服务,启用传统network服务进行网络管理。
systemctl disable NetworkManager
systemctl stop NetworkManager
systemctl enable network
systemctl start network
修改ens33网络
配置防火墙
所有节点,禁用防火墙服务。
#systemctl disable firewalld
#systemctl stop firewalld
2、关闭SeLinux
所有节点,关闭SeLinux。
配置yum仓库
1、基础软件仓库
所有节点,首先删除或备份系统中原有repo文件,然后下载阿里云或网易centos镜像到本地,以163源为例。
rm -f /etc/yum.repos.d/*
wget -O /etc/yum.repos.d/centos7.repo http://mirrors.163.com/.help/CentOS7-Base-163.repo
2、OpenStack软件仓库
新增一个openstack.repo文件,在该文件内部添加queens版本源及kvm源
由于OpenStack从Pike版本开始,openstack-nova-compute组件的安装依赖的qemu-kvm版本不能低于2.9.0,而CentOS7现有的软件库不能提供qemu-kvm较新版本的安装。所以此处需新增kvm软件库来提供支持。
#vi /etc/yum.repos.d/openstack.repo
[queens]
name=queens
baseurl=http://mirrors.163.com/centos/7/cloud/x86_64/openstack-queens/
enabled=1
gpgcheck=0
[kvm]
name=kvm
baseurl=http://mirrors.163.com/centos/7/virt/x86_64/kvm-common/
enabled=1
gpgcheck=0
3、生成yum缓存
# yum clean all
# yum makecache
此步骤可在controller上操作,compute和cinder可使用scp命令将repo文件复制到本地,命令如
#scp root@172.16.70.101:/etc/yum.repos.d/* /etc/yum.repos.d/
配置ntp服务器
整个OpenStack环境中所有节点的时间必须是同步的。通常选择一个控制节点作为其他节点的时间服务器。
1、控制节点
(1)安装软件包:
yum install chrony
(2)修改配置文件:
vim /etc/chrony.conf
server ntp1.aliyun.com iburst
//屏蔽原有4行server,添加阿里时钟服务器
(3)重启服务并加入开机启动项:
systemctl enable chronyd.service
systemctl start chronyd.service
(4)查看时间同步状态:
chronyc sources
//MS列中包含^*的行,指明NTP服务当前同步的服务器。
2、其它所有节点操作
(1)安装软件包: yum install chrony
(2)修改配置文件,使计算节点同步到控制节点上:
vim /etc/chrony.conf
server 172.16.70.101 iburst
(3)重启服务并加入开机启动项:
systemctl enable chronyd.service
systemctl start chronyd.service
(4)查看时间同步状态:
chronyc sources
//MS列中包含^*的行,指明NTP服务当前同步的服务器。
2、其它所有节点操作
(1)安装软件包:
yum install chrony
(2)修改配置文件,使计算节点同步到控制节点上:
vim /etc/chrony.conf
server 172.16.70.101 iburst
(3)重启服务并加入开机启动项:
systemctl enable chronyd.service && systemctl start chronyd.service
(4)查看时间同步状态:
chronyc sources
//MS列中包含^*的行,指明NTP服务当前同步的服务器。
其它软件包
(所有节点均需操作)
1、安装 OpenStack 客户端:
yum install python-openstackclient
2、RHEL和 CentOS 默认启用 SELinux 。安装 openstack-selinux 包实现对OpenStack服务的安全策略进行自动管理:(如果关闭了selinux,可省略该步骤)
yum install openstack-selinux
生产中,我们尽量关闭selinux,如果不关闭selinux,这个服务会帮我们把openstack的selinux配置好。
3、升级所有软件包
yum upgrade
//如果更新了一个新内核,重启主机来使用新内核。
**
大多数OpenStack服务使用SQL数据库来存储信息,数据库通常在控制器节点上运行。安装OpenStack,系统需为每个项目创建一个单独的数据库。本次搭建使用MariaDB数据库, OpenStack服务还支持其他SQL数据库,包括 PostgreSQL等。
**
(controller节点下操作)
1、安装软件包
yum install mariadb mariadb-server python2-PyMySQL
2、修改mariadb配置文件。
新增/etc/my.cnf.d/openstack.cnf 配置文件,添加以下内容,bind-address设置为控制节点的管理IP地址,以使其他节点能够通过管理网络进行访问。
vi /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 172.16.70.101
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
3、启动数据库服务并设置服务开机启动。
systemctl enable mariadb.service && systemctl start mariadb.service
4、运行mysql_secure_installation 脚本初始化数据库服务,并为数据库root帐户设置密码(这里设为123456)。
mysql_secure_installation
安装RabbitMQ消息队列
OpenStack使用消息队列(Message queue)来协调服务之间的操作和状态信息,消息队列服务通常在控制节点上运行,OpenStack支持多种消息队列服务,包括RabbitMQ, Qpid和ZeroMQ。
消息队列是一种应用程序对应用程序的通信方法。应用程序之间无须专用连接,通过读写出入队列的消息即可以进行相互通信。
(controller节点下操作)
1、安装软件包:yum install -y rabbitmq-server
2、启动消息队列服务并将其配置为随系统启动:
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
3、添加 openstack 用户,并设置密码,此处为123456
rabbitmqctl add_user openstack 123456
4、给openstack
用户配置写和读权限。
rabbitmqctl set_permissions openstack “." ".” “.*”
5、查看rabbitmq状态
rabbitmq_management插件,通过该插件可以启动web界面对rabbitmq进行管理。
rabbitmq-plugins list
rabbitmq-plugins enable rabbitmq_management
lsof -i:15672 //显示打开的15672端口
物理机浏览器通过172.16.70.101:15672打开web管理界面,用户名/密码为guest/guest
安装memcache缓存数据库
各类服务的身份认证机制使用Memcached缓存令牌。缓存服务memecached通常运行在控制节点。在生产部署中,我们推荐联合启用防火墙、认证和加密保证它的安全。
(controller节点下操作)
1、安装软件包
yum install memcached python-memcached
2、编辑配置文件/etc/sysconfig/memcached
使用控制节点的管理IP地址配置服务。这使其他节点能够通过管理网络进行访问:
vim /etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 172.16.70.101,::1"
3、启动Memcached服务并将其配置为在系统引导时启动:
systemctl enable memcached.service && systemctl start memcached.service