openstack目前最新稳定版本是stein,通过手工安装一遍可以最大限度的了解openstack的架构,更加深刻的理解openstack各组件之间的关联关系,本次实验的目标是在一台虚拟机上通过手工最小化安装openstack的基础服务及keystone、glance、placement、nova、neutron组件安装,这些组件安装后即可通过openstack命令行来开通虚拟机,如果需要图形界面管理还需要安装horizon提供dashboard服务。
一、openstack整体组件架构图
上图是openstack官方网站架构图,各种组件的目标最终都是为了给VMs提供各类服务,比如最基本的认证、镜像、计算及网络服务,其它类似对象、块存储、大数据、编排等服务也是为了更好的为租户提供服务。学习openstack要知到这些服务并不是一开始被设计好的,而是随着openstack的推广应用逐渐扩展开来的,这里面只有nova、glance是最初的服务。
二、安装主机规划
主机名 | cpu | 内存 | netcard1 | netcard2 |
---|---|---|---|---|
controller | 4 | 16 | ens192:10.37.6.23 | ens224:10.37.9.171 |
compute | 4 | 16 | ens192:10.37.6.24 | ens224:10.37.9.198 |
控制节点、计算节点的规划如下图两个实心框所示,虚线框是可选项,不在本次讨论之列,最小需要两台虚拟机,实际使用的配置如上。
三、安装密码规划
用户账号 | 密码名称 |
密码 | 描述 |
---|---|---|---|
root | root |
root | 数据库的root密码 |
admin |
|
admin | 用户密码 |
cinder |
|
cinder | 块存储服务的数据库密码 |
cinder |
|
cinder | Block Storage服务用户的密码 |
dashboard |
|
dashboard | 仪表板的数据库密码 |
demo |
|
demo | 用户密码 |
glance |
|
glance | 图像服务的数据库密码 |
glance |
|
glance | 图像服务用户的密码 |
keystone |
|
keystone | 身份服务的数据库密码 |
metadata |
|
metadata | 元数据代理的秘密 |
neutron |
|
neutron | 网络服务的数据库密码 |
neutron |
|
neutron | 网络服务用户的密码 |
nova |
|
nova | Compute服务的数据库密码 |
nova |
|
nova | 计算服务用户的密码 |
placement |
|
placement | 展示位置服务用户的密码 |
openstack |
|
openstack | RabbitMQ用户的密码 |
四、基本环境安装
1、配置网卡ip及主机名解析
依据上面数据规划在分别将主机设置为controller、compute两个主机,分别配置上对应两个网卡的IP地址及设置好/etc/hosts文件内容。
2、所有主机节点上安装NTP服务并验证
yum install chrony
vi /etc/chrony.conf 添加一行本地NTP服务器IP地址即可,如果使用互联网访问则不必修改使用默认配置即可。
server 133.0.254.240 iburst
systemctl enable chronyd.service
systemctl start chronyd.service
在计算节点上修改chrony配置文件,将服务器指向为controller节点,用controller从高精度时间节点同步,然后在让计算节点通过controller节点同步时间。执行完后通过chronyc sources进行检查,在计算节点上第一个应该是controller。
3、安装启用centos7的openstack安装库及客户端
extras
存储库提供启用OpenStack存储库的RPM。CentOS extras
默认包含存储库,因此您只需安装软件包即可启用OpenStack存储库。
yum install centos-release-openstack-stein -y
RHEL和CentOS 默认启用SELinux。安装 openstack-selinux
软件包以自动管理OpenStack服务的安全策略
yum install python-openstackclient openstack-selinux -y
4、 安装配置数据库服务,该项目只需要在控制节点安装即可
yum install mariadb mariadb-server python2-PyMySQL
创建和编辑/etc/my.cnf.d/openstack.cnf
文件(/etc/my.cnf.d/
如果需要,备份现有配置文件)并完成以下操作:
创建一个[mysqld]
部分,并将bind-address
密钥设置为控制器节点的管理IP地址,以允许其他节点通过管理网络进行访问。设置其他键以启用有用选项和UTF-8字符集:
[mysqld]
bind-address = 10.37.6.23
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
systemctl enable mariadb.service
systemctl start mariadb.service
mysql_secure_installation(初始化数据库安装配置)root密码按上表规划为root
5、消息队列安装
消息队列在控制器节点上运行,所以在主控节点上安装即可
安装包:
# yum install rabbitmq-server
启动消息队列服务并将其配置为在系统引导时启动:
# systemctl enable rabbitmq-server.service
# systemctl start rabbitmq-server.service
添加openstack
用户:
# rabbitmqctl add_user openstack openstack
Creating user "openstack" ...
允许用户进行配置,写入和读取访问 openstack
:
# rabbitmqctl set_permissions openstack ".*" ".*" ".*"
Setting permissions for user "openstack" in vhost "/" ...
5、打开rabbitmq的gui管理插件
rabbitmq-plugins enable rabbitmq_management
通过rabbitmq-plugins list查看插件打开情况,也可以通过netstat -ntlp查看,rabbitmq的管理插件会监听tcp端口15672
可以发现guest是rabbitmq的默认管理员账号,openstack是我们自己创建的用户,后面的组件安装配置时会使用这个账号。
6、memcached安装
服务的身份服务身份验证机制使用Memcached来缓存令牌。memcached服务通常在控制器节点上运行。
openstack使用memcached就是为了提升keystone的效率,在令牌没有过期期间大量缓存令牌,服务间交互令牌不在需要从数据库中读取,大幅提升keystone的处理效率,降低数据库的压力。
yum install memcached python-memcached -y
vi /etc/sysconfig/memecached
## modify
OPTION="-l 127.0.0.1,::1,controller"
复制代码
systemctl start memcached
systemctl enable memcached
7、etcd安装
OpenStack服务可以使用Etcd,一种分布式可靠的键值存储,用于分布式密钥锁定,存储配置,跟踪服务生存和其他场景,该服务只在控制节点安装。
安装包:
# yum install etcd
编辑/etc/etcd/etcd.conf
文件并设置ETCD_INITIAL_CLUSTER
, ETCD_INITIAL_ADVERTISE_PEER_URLS
,ETCD_ADVERTISE_CLIENT_URLS
, ETCD_LISTEN_CLIENT_URLS
控制器节点,以使经由管理网络通过其他节点的访问的管理IP地址:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.37.6.23:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.37.6.23:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.37.6.23:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.37.6.23:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.37.6.23:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
启用并启动etcd服务:
# systemctl enable etcd
# systemctl start etcd
在控制节点上通过netstat -ntlp查看已经安装好的服务。tcp25672是消息队列rabbitmq的监听端口。
8、批量打开上面所安装服务需要打开的防火墙端口
firewall-cmd --zone=internal --add-port=3306/tcp --permanent
firewall-cmd --zone=internal --add-port=5672/tcp --permanent
firewall-cmd --add-port=15672/tcp --permanent
firewall-cmd --zone=internal --add-port=11211 --permanent
firewall-cmd --zone=internal --add-port=2379/tcp --permanent
firewall-cmd --zone=internal --add-port=2380/tcp --permanent
firewall-cmd --add-port=5000/tcp --permanent
firewall-cmd --reload
总结:至此,由两个主机构成的openstack最小集群已经具备了安装openstack组件的条件,后面具体介绍如何最小化安装必要组件。