最近为客户内网环境部署了Openstack(版本Ocata),Ocata本身属于过渡产品,官方文档本身存在一些问题,在此总结,希望可以帮助到有需要的朋友。
一、环境
部署Openstack的服务器官方推荐两台以上,主要是创建的实例(Instances)实际上占用的是计算节点的资源,因此你的计算节点所拥有的VCPU、Memory,将决定你所创建的实例的最大Vcpu数和内存,或许是基于此种原因考虑,官方建议控制节点和计算节点分离,我此次部署是基于物理服务器,主要是用于测试环境,因此规划为单控制节点和两个计算节点,本系列会涉及到的部署组件为keystone,glance,nova,neutron,cinder,dashboard,aws ec2。Cinder块存储部署在计算节点上,Ceph有部署但不是我负责,所以具体情况我不是很清楚,日后有了解的话再更新。
我这次是在三台CentOS 7的服务器进行部署。由于是测试环境,我们的服务器关闭了selinux和firewalld(就我个人理解来看,Openstack如果是部署在内网的话,firewalld其实是开关无所谓的,涉及到的端口比较多,可能会麻烦一些,如果你的Openstack想创建的实例能够从公网连接进来,那你需要开启firewalld并且拥有公网IP资源池,根据实际需要设置开放的端口)
1.关闭selinux和firewalld
#vi /etc/selinux/config
selinux=disabled
#systemctl stop firewalld
#systemctl disable firewalld```
(selinux重启后生效,也可以setenforce 0设置临时关闭)
2.修改主机名(hostname)
hostnamectl set-hostname controller/compute(重新登录生效)
将其添加进/etc/hosts文件
格式如:
10.141.128.11 controller
10.141.128.12 computer```
(这里比较基础,新手注意不要搞反)
3.网络
按照官方需要两块网卡,分别是提供者网络和管理网络,不过实际上每台服务器上只要有一块网卡在集群数量不大的情况下,也是完全没问题的,如果你的Openstack集群规模比较大的时候,就要分开了,不然网络会十分拥挤。所以您现在需要知道每一台服务器的IP地址,以及设置IP的网卡的名字。
# ip a```
4.配置网络时间服务(NTP)
这步看上去不是很重要,但如果您是在VMware虚拟机上创建的话这步将是非常重要的。这里可以将Controller作为NTP服务器为computer同步时间。
yum install chrony
vim /etc/chrony.conf
server controller iburst
allow 0.0.0.0(允许同步的IP段,我这里全部允许了,compute上不需要设置这个)
systemctl enable chronyd.service
systemctl start chronyd.service
验证:
chronyc sources
5.安装Openstack包
这步需要注意的是如果你的系统是RHEL的话,YUM是需要过RED HAT认证的,比较麻烦(我就不说我不太擅长这个了),我的方法是1.更换yum为CentOS的yum源,当然,这步需要你把RHEL的yum卸载干净重装,比较麻烦,也容易出问题。2.换CentOS的系统。
yum install centos-release-openstack-ocata
如果你是新装的系统,您可以进行更新,如果您之前有安装其他服务,为了您的系统稳定,不建议使用upgrade操作。
yum upgrade
yum install python-openstackclient
yum install openstack-selinux
6.安装数据库
CentOS默认使用mariadb,我个人感觉您完全可以使用源码安装的mysql,因为我的实际使用感觉,yum安装的mariadb性能实在不敢恭维,为我算是挖了无数个坑。在以下是相关链接,您仅需要参考MySQL的源码安装部分即可。
***
######LNMP环境的源码搭建(CentOS 7) http://www.jianshu.com/p/4699bcb04633
***
本文按照官方的mariadb来
yum install mariadb mariadb-server python2-PyMySQL
vim /etc/my.cnf.d/openstack.cnf
[mysqld]
bind-address = 10.0.0.11
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
这里的max_connections最大连接数是不一定能生效的,我搭建的平台好几次因为数据库连接数过多挂掉了,而实际上才连了200多个,建议检查一下。我会在本系列第二篇附录解决办法。
systemctl enable mariadb.service
systemctl start mariadb.service
为mariadb配置用户密码(根据提示输入yes或者要设置的密码或者直接回车)
mysql_secure_installation
7.消息队列
Openstack官方推荐使用消息队列服务为RabbitMQ
yum install rabbitmq-server
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
添加一个用户和密码
rabbitmqctl add_user openstack RABBIT_PASS
设置用户权限
rabbitmqctl set_permissions openstack "." "." ".*"
8.缓存服务(Memcache)
yum install memcached python-memcached
vim /etc/sysconfig/memcache
OPTIONS="-l 127.0.0.1,::1,controller"
systemctl enable memcached.service
systemctl start memcached.service
网友评论