使用RDO搭建OpenStack POC环境

来源:互联网 发布:高德地图数据导出 编辑:程序博客网 时间:2024/06/07 12:00
先说句题外话,因为最近两年参与了公司的一个微服务项目,整个系统可以由一套基于SaltScript的CD工具搭建起来,但是整套环境需要多个node,而且配置参数繁多,非常容易部署失败。这种情况下,环境成本非常高,直接造成开发测试效率的降低。所以我认为产品的系统设计必须包含开发视图,考虑到开发各阶段的环境搭建,特性验证,桩数据来源等问题并输出测试方案。不管产品部署后是分布式的还是多实例的,总要有一个能够让开发人员快速搭建的轻量化版本,可以运行在开发环境上,无需过多的依赖,这样才能够让开发人员聚焦在特性开发,而不必纠结于环境问题。

RDO的packstack就为很多OpenStack学习和开发用户提供了一种高效快速搭建环境的方式。
POC意味Proof of Concept,就是概念验证的意思,可以通俗理解为简单的测试环境,所以这种方式搭建的OpenStack肯定不能用于生产环境,通常是在个人环境(比如PC)上跑相关服务,能够快速开发验证相关特性。
Readhat/CentOS和Ubuntu上都有OpenStack的POC项目,个人感觉RDO(RPM Distribution of OpenStack)的更好用些。官方指导文档在这里。
我是在Macbook Pro上装的VirtualBox,在VirtualBox上装的CentOS7,用了两块虚拟网卡,一块是NAT,一块是host-only,分别用于跟外网和Mac连接,当然你也可以用bridge的方式,CPU 4核,内存6G,硬盘20G,这里不再详述。
使用root用户登录进CentOS后,需要进行一些设置。
1.配置环境变量
LANG=en_US.utf-8LC_ALL=en_US.utf-8
2.关闭SeLinux、防火墙等
systemctl disable firewalldsystemctl stop firewalldsystemctl disable NetworkManagersystemctl stop NetworkManagersystemctl enable networksystemctl start network
SeLinux的配置文件在/etc/selinux/config,里面配置disable,然后reboot

完成之后,很简单的几个命令
1.CentOS的extra repository提供了支持OpenStack repository的RPM,所以可以直接安装OpenStack的repository。
yum install -y centos-release-openstack-pike

2.更新package
yum update -y
3.安装packstack。packstack是红帽提供的用Puppet安装OpenStack的一套工具,虽然我只在一台虚拟机上安装OpenStack,但是packstack支持多个node。
yum install -y openstack-packstack
4.运行packstack,将OpenStack安装到一个node上。
packstack —allinone

安装成功后可以访问dashboard了,用户名密码在家目录的keystonerc_admin文件中。


在安装过程中遇到几个问题,所以实际上上面的过程反复重复了好几次,最后才安装成功。
首先,最容易出错的是在最后一步Applying 10.0.2.15_controller.pp时,有两次报了不同的错误,比如Timeout, 比如下面这个:
Error: Evaluation Error: Error while evaluating a Function Call, empty()
没有找到问题的具体原因,但是怀疑跟网络环境有关,最后一次使用了VPN连接到美国的服务器,没有再报错。
其次,安装成功后,浏览器打不开dashboard。我的环境可能因为配了两块网卡,从Mac访问时用的是host-only网络,检查了httpd的配置文件,在/etc/httpd/conf.d/15-horizon_vhost.conf中,将两个网卡的IP地址都配到了ServerAlias中,如下, 问题解决。
# ************************************# Vhost template in module puppetlabs-apache# Managed by Puppet# ************************************<VirtualHost *:80>  ServerName centos7.jnpr.net  ## Vhost docroot  DocumentRoot "/var/www/"  ## Alias declarations for resources outside the DocumentRoot  Alias /dashboard/static "/usr/share/openstack-dashboard/static"  ## Directories, there should at least be a declaration for /var/www/  <Directory "/var/www/">    Options Indexes FollowSymLinks MultiViews    AllowOverride None    Require all granted  </Directory>  ## Logging  ErrorLog "/var/log/httpd/horizon_error.log"  ServerSignature Off  CustomLog "/var/log/httpd/horizon_access.log" combined  ## RedirectMatch rules  RedirectMatch permanent  ^/$ /dashboard  ## Server aliases  ServerAlias 10.0.2.15  ServerAlias 192.168.56.103  ServerAlias localhost  WSGIApplicationGroup %{GLOBAL}  WSGIDaemonProcess apache group=apache processes=3 threads=10 user=apache  WSGIProcessGroup apache  WSGIScriptAlias /dashboard /usr/share/openstack-dashboard/openstack_dashboard/wsgi/django.wsgi</VirtualHost> 
如果需要在host上直接访问OpenStack各个service的RESTful API,有可能需要将各service的proxy bind ip改
一下,这个问题也只有在NAT网络的情况下存在。以swift service为例,默认只绑定了NAT网卡的IP,这样从host就无法访问swift的REST,方式是修改/etc/swift/proxy-server.conf,将bind_ip改为0.0.0.0,然后重启swift proxy服务
systemctl restart openstack-swift-proxy.service 




原创粉丝点击