2015-12-29-openstack-install-note

1.openstack 初识

1.1openstack 简介

openstack的版本号是以字母顺序来命名的,比如i版本就叫icehouse,j版本就叫juno,k版本叫kilo.本笔记针对kilo版本。

1.2openstack 组件

openstack组件项目包括

Horizon(提供图形界面),

Nova(控制虚拟机的生命周期),

Neutron(提供网络服务),

Swift(提供对象存储服务),

Cinder(提供块存储服务),

Keystone(提供用户认证服务),

Glance(控制镜像),

Ceilometer(测量计费),

Heat(根据预先设置的模板,实现计算存储和网络资源的流程化部署,同时支持HOT和AWS CloundFormation的模板),

Trove( 提供数据库服务,包括关联型和非关联型),Sahara(提供数据处理的服务,类似Hadoop)

注:Keystone对应Identity service,Ceilometer对应Telemetry(易忘)

1.3openstack 架构图

链接:http://docs.openstack.org/kilo/install-guide/install/yum/content/ch_overview.html


2.openstack 环境搭建

 操作系统为CentOS7

2.1neutron的节点及硬件的规划

      Controller Node:

CPU:1

RAM:8GB

Storage:100GB

NIC:1

Network Node:

CPU:1

RAM:2GB

Storage:100GB

NIC:3

Compute Node:

CPU:2

RAM:8GB

Storage:100GB

NIC:2

2.2 neutron各节点的所需组件(核心)

Controller Node:

SQL Database Service(数据库服务)

Message Queue(消息队列)

Network Time Service(网络时间服务)

Identity(测量计费)

Image Service(镜像服务)

Compute Management(计算管理)

Networking Management(网络管理)

Networking ML2 Plug-in

Network Node:

Open vSwitch

Networking ML2 Plug-in

Networking Open vSwitch Agent

Networking L3 Agent

Networking DHCP Agent

Networking Metadata Agent

Compute Nodes:

KVM Hypervisor

Open vSwitch

Compute

Networking ML2 Plug-in

Networking Open vSwitch Agent

Telemetry Agent

2.3 安装前的环境要求

2.3.1关闭防火墙

systemctl stop firewalld

2.3.2关闭自动网络管理工具(比如NetworkManager)

systemctl stop NetworkManger

2.3.3警告

配置网络时,会断开网络

有些linux版本的/etc/hosts文件有类似127.0.0.1映射到主机的环回地址,会影响dns解析,注释掉它

2.3.4节点的网络配置

openstack 的网络配置分为openstack networking(neutron)和legacy networking(nova-network)两种方式,我们这里就选neutron方式来配置网络。这里主要有四种网络形式,分别为管理网络,隧道网络,存储网络(可选),外部网络,我们暂且不管存储网络。这里的大概步骤就是根据需要添加网卡---对每个网卡进行配置(保证每个节点能ping通外网,且能互相ping通)

2.3.5 添加NTP服务

大概思路是controller同步外网时间,其他节点同步controller的时间

具体操作,请参考官方文档http://docs.openstack.org/kilo/install-guide/install/yum/content/ch_basic_environment.html#basics-neutron-networking-compute-node

注:compute1和network节点使用ntpq -c assoc验证时,reach选项为no,貌似不对劲。参考资料http://www.aboutyun.com/thread-11395-1-1.html

2.3.6添加额外的包(所有节点)

2.3.7添加关系型数据库(MySQL,controller节点)

2.3.8添加消息队列(RabbitMQ,controller节点)

3 添加认证服务(controller节点)

3.1相关概念

User:用户

Credentials:用于识别用户身份的数据

Authentication:识别用户身份的行为

Token:一段字母和数字组成的字符串,用来使用某种服务的具体凭证

Tenant:租户(一个租户可包含多个用户)

Service:服务(节点)

Endpoint:服务端点(具体的某种动作)

Role:角色(决定所拥有的服务种类)

Keystong Client:控制台

3.2安装配置认证服务

注:

1.openssl rand -hex 10生成一段随机字符串作为管理的token

2.

# su -s /bin/sh -c "keystone-manage db_sync" keystone

在执行这条命令的时候,出现

No handlers could be found for logger "oslo_config.cfg"的报错,编辑keystone的配置文件/etc/keystone/keystone.conf将下面的verbose = True(这是个可选项)注释掉

命令正常运行

1
2
3
[DEFAULT]
...
verbose = True
3.3创建服务实例和端点

注:1.在openstack上运行命令必须带有--os-token和--os-url的参数,或者在环境变量设置OS_TOKEN和OS_URL的环境变量,本人和文档一致,倾向通过设置环境变量(通过执行shell脚本,来设置环境变量的值)以减少命令长度

2.openstack 支持3种api端点:admin(受保护的),internal(与其他主机通信),public(公开)

3.4创建用户,项目和角色

3.5检验测试

注:1.由于keystone命令被社区抛弃(还没被我抛弃),但是如果还想使用它,必须修改添加环境变量的shell脚本

export OS_AUTH_URL = http://controller:35357/v2.0

4.添加镜像服务

4.1主要组成

glance-api(镜像服务接口)

glance-registry(镜像元数据,属于私有的internal服务,不要开放给users)

Database(存储镜像的元数据的数据库)

Storage respository for image files(存储镜像的仓库)

4.2安装配置(controller节点)

注:当我运行

# su -s /bin/sh -c "glance-manage db_sync" glance
这条命令的时候,又出现了No handlers could be found for logger "oslo_config.cfg",这下我也不知道该怎么办了

4.3检验测试

5.添加计算服务

5.1基本概念

1.API:

nova-api service

nova-api-metadata service

2.Compute core:

nova-compute service

nova-sheduler service

nova-conductor module

nova-cert module

3.Networking for VMs:

nova-network worker daemon

4.Console interface:

nova-consoleauth daemon

nova-novncproxy daemon

nova-sqlcehtml5proxy daemon

nova-xvpvncproxy daemon

nova-cert daemon

5.Image management:

nova-objectores daemon

euca2ools client

6.Command-line clients and other interfaces

nova client

7.Other:

the queue

SQL database

5.2安装配置(controller,compute节点)

5.2.1controller 节点

注:

1.监控日志变化命令:talif + 日志文件名

2.nova.conf 中的rabbit_userid必须能使用rabbitmqctl list_users查看到(建议就用默认值guest)

5.2.2compute 节点

注:

1.nova.conf中的rabbit_userid与controller一样

2.我犯的错误:

问题:命令:systemctl start openstack-nova-compute.service服务启动失败


第一次配置nova.conf
rabbit_userid=openstack
rabbit_password=abc123


当我使用systemctl start openstack-nova-compute.service时,我想起了我使用的是rabbitmqctl add_user pdk abc123,并没有添加openstack.


打开rabbitmq@controller.conf看见
=ERROR REPORT==== 7-Jan-2016::02:46:18 ===
closing AMQP connection <0.347.0> (10.10.10.162:38871 -> 10.10.10.162:5672):
{handshake_error,starting,0,
                 {amqp_error,access_refused,
                             "AMQPLAIN login refused: user 'openstack' -invalid credentials",
                             'connection.start_ok'}}
的报错


然后我使用rabbitmqctl add_user openstak abc123

(但我却忘了将openstack的密码注入到虚拟机,rabbitmqctl set_permissions openstack ".*" ".*" ".*")

当我再次使用systemctl start openstack-nova-compute.service仍然失败


打开rabbitmq@controller.log看见
{handshake_error,opening,0,
                 {amqp_error,access_refused,
                             "access to vhost '/' refused for user 'openstack'",
                             'connection.open'}}

解决方式如括号所说

5.3验证nova安装

注:我出现的问题:

使用nova-manage service list

查看所有nova服务均正常运行

然后使用nova service-list或nova image-list等命令时出现

ERROR (ClientException): Unknown Error (HTTP 503) (Request-ID: req-d8fc5de0-5e94-4c7a-b709-72e56988c8d0)的错误

(我tm对天发誓,我绝对是按照文档来安装的)

查看nova-api的日志/var/log/nova/nova-api.log

2016-01-08 02:03:55.433 22901 ERROR keystonemiddleware.auth_token [-] Bad response code while validating token: 400
2016-01-08 02:03:55.433 22901 WARNING keystonemiddleware.auth_token [-] Identity response: {"error": {"message": "Expecting to find id or name in user - the server could not comply with the request since it is either malformed or otherwise incorrect. The client is assumed to be in error.", "code": 400, "title": "Bad Request"}}
2016-01-08 02:03:55.434 22901 CRITICAL keystonemiddleware.auth_token [-] Unable to validate token: Failed to fetch token data from identity server
2016-01-08 02:03:55.435 22901 INFO nova.osapi_compute.wsgi.server [-] 10.10.10.162 "GET /v2/ HTTP/1.1" status: 503 len: 323 time: 0.0204840

说的是身份认证服务因为我信息没给全,不给我token,好了这下问题就出在配置环境变量的shell脚本上(坑爹的是验证身份服务的时候用的是在命令行增加参数的方式,那里并没有出错)

解决方式:详见https://ask.openstack.org/en/question/66097/nova-service-list-fails-with-error-unauthorized-unauthorized-http-401/

6.添加neutron服务

注:这里有个问题,官方文档出了错,详见8

7.添加dashboard服务

注:如果你是按照文档的顺序安装的话,最好别改/etc/openstack-dashboard/local_settings下面的TIME_ZONE,反正我改了之后,httpd服务就起不来,keystone直接gg了

8.启动实例

问题:实例能成功启动,但状态为error,打开debug,查看/var/log/neutron/server.log发现

2016-01-13 04:05:51.852 4004 DEBUG neutron.plugins.ml2.drivers.mech_agent [req-631c9fcf-0727-4c02-94d0-9fef23671c9c 4e62ca8ef39648b2a220601aca6c5692 de18f58f2ed64dc7a066d8dfd04d5595 - - -] Network 65ce1ce9-eccc-48ad-813f-6308f61b05e4 is of type gre but agent compute1 or mechanism driver only support ['local', 'flat', 'vlan']. check_segment_for_agent /usr/lib/python2.7/site-packages/neutron/plugins/ml2/drivers/mech_agent.py:193

说的是我的网络是gre,但compute1节点或驱动支持的三个选项没有gre.

解决方式:原因出在compute1节点上的ml2的默认配置文件是/etc/neutron/plugins/ml2/openvswitch_agent.ini ,而不是文档写的/etc/neutron/plugins/ml2/ml2_conf.ini,在comput1节点上的/etc/neutron/plugins/ml2/openvswitch_agent.ini的[ovs]下面添加local_ip=10.10.0.166(作为gre tunnel的ip),[agenet]下面添加个tunnel_types = gre

参考:https://www.redhat.com/archives/rdo-list/2015-November/msg00038.html

(2016.1.22更新:

问题:外部网络的主机无法ping通已绑定浮动ip的实例,登录dashboard,发现在连接外网和租户网络(内网)路由上的内部接口,状态为down。

原因:结果在network节点上使用ovs-vsctl show发现并没有tunnel的网桥


http://docs.openstack.org/kilo/install-guide/install/yum/content/figures/3/a/common/figures/installguide-neutron-initialnetworks.png

解决方式:在network节点上的/etc/neutron/plugin/ml2/openvswitch_agent.ini下的[ovs]添加local_ip = 10.10.0.167(作为gre tunnel的ip),bridge_mappings = external:br-ex;

[agenet]下面添加个tunnel_types = gre

)

9.总结

到这步,openstack的环境差不多可以用了.在安装过程中遇到很多新名词,有的能理解,更多的是模糊或者是完全不知所云,但这并不代表本次手动部署的收获少,安装并不重要,按照文档一步步操作,谁都能装。可是,在安装前,对openstack我完全无从下手,但安装后,我对openstack有了一些认识,下一步,可以从不同的模块入手,通过对一些术语概念了解,加深对openstack的认识。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值