ERROR oslo_service.service PlacementNotConfigured 解决办法

PlacementNotConfigured: This compute is not configured to talk to the placement service

       在配置openstack项目时很多人认为到处是坑,特别是新手,一旦进坑没有人指导,身体将会感觉一次次被掏空,作为菜鸟的我也感同身受,因为已经被掏空n次了。

原因:官方文档中遗漏了-nova-placement-api的安装

       以下也是我将整个openstack配置过程进行汇总,并对难点进行分析,希望对您们有所帮助,如果在配置过程中有疑问,也可以进行留言。

 

       尝试自己配置前可阅读《菜鸟帮你跳过openstack配置过程中的坑http://www.cnblogs.com/yaohong/p/7352386.html》。

安装步骤

       同时如果不想一步步安装,可以执行安装脚本:http://www.cnblogs.com/yaohong/p/7251852.html

1、先安装openstack octca版本的yum源

一:环境

yum install https://rdoproject.org/repos/rdo-release.rpm

1.1主机网络

  • 系统版本 CentOS7

  • 控制节点: 1 处理器, 4 GB 内存, 及5 GB 存储

  • 计算节点: 1 处理器, 2 GB 内存, 及10 GB 存储

   说明:

  1:以CentOS7为镜像,安装两台机器(怎样安装详见http://www.cnblogs.com/yaohong/p/7240387.html)并注意配置双网卡和控制两台机器的内存。

  2:修改机器主机名分别为:controller和compute1

             #hostnamectl set-hostname hostname 

  3:编辑controller和compute1的 /etc/hosts 文件

             #vi /etc/hosts

            图片 1

  4:验证

            采取互ping以及ping百度的方式

            图片 2 图片 3

2、控制节点

1.2网络时间协议(NTP)

  [控制节点安装NTP]   

    NTP主要为同步时间所用,时间不同步,可能造成你不能创建云主机

    #yum install chrony(安装软件包)

    #vi /etc/chrony.conf增加

      server NTP_SERVER iburst

      allow 你的ip地址网段                 (可以去掉,指代允许你的ip地址网段可以访问NTP)

    #systemctl enable chronyd.service    (设置为系统自启动)

    #systemctl start chronyd.service       (启动NTP服务)

          [计算节点安装NTP]

     # yum install chrony

     #vi /etc/chrony.conf`` 释除``server`` 值外的所有内容。修改它引用控制节点:server controller iburst

     # systemctl enable chronyd.service     (加入系统自启动)

     # systemctl start chronyd.service        (启动ntp服务)

           [验证NTP]

    控制节点和计算节点分别执行#chronyc sources,出现如下

              图片 4

              图片 5

yum install openstack-nova-placement-api

1.3Openstack包

        [openstack packages安装在控制和计算节点]
    安装openstack最新的源:
    #yum install centos-release-openstack-mitaka
    #yum install https://repos.fedorapeople.org/repos/openstack/openstack-mitaka/rdo-release-mitaka-6.noarch.rpm
    #yum upgrade                                               (在主机上升级包)
    #yum install python-openstackclient            (安装opentack必须的插件)
    #yum install openstack-selinux                    (可选则安装这个插件,我直接关闭了selinux,因为不熟,对后续不会有影响)

firewall-cmd --zone=public --add-port=8778/tcp --permanent

1.4SQL数据库

    安装在控制节点,指南中的步骤依据不同的发行版使用MariaDB或 MySQL。OpenStack 服务也支持其他 SQL 数据库。
    #yum install mariadb mariadb-server MySQL-python
    #vi /etc/mysql/conf.d/mariadb_openstack.cnf
    加入:
        [mysqld]
      bind-address = 192.168.1.73                         (安装mysql的机器的IP地址,这里为controller地址)
      default-storage-engine = innodb
      innodb_file_per_table
      collation-server = utf8_general_ci
      character-set-server = utf8
    
    #systemctl enable mariadb.service     (将数据库服务设置为自启动)
    #systemctl start mariadb.service          (将数据库服务设置为开启)
    设置mysql属性:
    #mysql_secure_installation  (此处参照http://www.cnblogs.com/yaohong/p/7352386.html,中坑一)

firewall-cmd --reload

1.5消息队列

    消息队列在openstack整个架构中扮演着至关重要(交通枢纽)的作用,正是因为openstack部署的灵活性、模块的松耦合、架构的扁平化,反而使openstack更加依赖于消息队列(不一定使用RabbitMQ,

    可以是其他的消息队列产品),所以消息队列收发消息的性能和消息队列的HA能力直接影响openstack的性能。如果rabbitmq没有运行起来,你的整openstack平台将无法使用。rabbitmq使用5672端口。
    #yum install rabbitmq-server
    #systemctl enable rabbitmq-server.service(加入自启动)
    #systemctl start rabbitmq-server.service(启动)
    #rabbitmqctl add_user openstack RABBIT_PASS                       (增加用户openstack,密码自己设置替换掉RABBIT_PASS)
    #rabbitmqctl set_permissions openstack ".*" ".*" ".*"                   (给新增的用户授权,没有授权的用户将不能接受和传递消息)

systemctl restart httpd

1.6Memcached

    memcache为选择安装项目。使用端口11211
    #yum install memcached python-memcached
    #systemctl enable memcached.service
    #systemctl start memcached.service

3、计算节点

二:认证服务

    [keystone认证服务]
    注意:在之前需要设置好hosts解析,控制节点和计算节点都要做。我的为:
    192.168.1.73 controller
    192.168.1.74compute1

编辑 /etc/nova/nova.conf

  2.1安装和配置     

    登录数据库创建keystone数据库。
    #mysql -u root -p
    #CREATE DATABASE keystone;
    设置授权用户和密码:
    #GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost'
      IDENTIFIED BY '密码';
    #GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%'
         IDENTIFIED BY '密码';
       生成admin_token的随机值:
      # openssl rand -hex 10
      安全并配置组件
       #yum install openstack-keystone httpd mod_wsgi
          #vi /etc/keystone/keystone.conf
       使用刚刚生成的随机值替换掉[DEFAULT]中的
       #admin_token = 随机值                           (主要为安全,也可以不用替换)
       配置数据库连接

               [database]

                connection = mysql+pymysql://keystone:密码@controller/keystone
                provider = fernet
             初始化身份认证服务的数据库

        # su -s /bin/sh -c "keystone-manage db_sync" keystone(一点要查看数据库是否生成表成功)
    初始化keys:
    #keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    配置apache:
    #vi  /etc/httpd/conf/httpd.conf
      将ServerName 后面改成主机名,防止启动报错
      ServerName controller
    生成wsgi配置文件:
    #vi /etc/httpd/conf.d/wsgi-keystone.conf加入:

Listen 5000
Listen 35357

<VirtualHost *:5000>
    WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-public
    WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

<VirtualHost *:35357>
    WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    WSGIProcessGroup keystone-admin
    WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    WSGIApplicationGroup %{GLOBAL}
    WSGIPassAuthorization On
    ErrorLogFormat "%{cu}t %M"
    ErrorLog /var/log/httpd/keystone-error.log
    CustomLog /var/log/httpd/keystone-access.log combined

    <Directory /usr/bin>
        Require all granted
    </Directory>
</VirtualHost>

 

    启动httpd:
    #systemctl enable httpd.service
    #systemctl start httpd.service

增加

  2.2创建服务实体和API端点

              #export OS_TOKEN=上面生成的随机值
    #export OS_URL=http://controller:35357/v3
    #export OS_IDENTITY_API_VERSION=3
    创建keystone的service:
    #openstack service create --name keystone --description "OpenStack Identity" identity (identity这个认证类型一定不可以错)
    创建keystone的endpoint:
      #openstack endpoint create --region RegionOne
      identity public http://controller:5000/v3
    #openstack endpoint create --region RegionOne
      identity internel  http://controller:5000/v3
    #openstack endpoint create --region RegionOne
      identity admin  http://controller:35357/v3

[placement]

  2.3创建域、项目、用户和角色

    创建默认域default:
    openstack domain create --description "Default Domain" default
    创建admin的租户:
    #openstack project create --domain default
      --description "Admin Project" admin

    创建admin用户:
    #openstack user create --domain default
     --password-prompt admin(会提示输入密码为登录dashboard的密码)
    创建admin角色:
    #openstack role create admin
    将用户租户角色连接起来:
    #openstack role add --project admin --user admin admin
    创建服务目录:
    #openstack project create --domain default
      --description "Service Project" service
    创建demo信息类似admin:
    #openstack project create --domain default
      --description "Demo Project" demo
    #openstack user create --domain default
      --password-prompt demo
    #openstack role create user
    #openstack role add --project demo --user demo user

auth_uri = http://controller:5000

  2.4验证

    作为 admin 用户,请求认证令牌:
    #openstack --os-auth-url http://controller:35357/v3
      --os-project-domain-name default --os-user-domain-name default
      --os-project-name admin --os-username admin token issue
    输入密码之后,有正确的输出即为配置正确。

              图片 6

 

             作为``demo`` 用户,请求认证令牌:

    #openstack --os-auth-url http://controller:5000/v3

               --os-project-domain-name default --os-user-domain-name default

    --os-project-name demo --os-username demo token issue

             图片 7

 

本文由金沙官网线上发布于操作系统,转载请注明出处:ERROR oslo_service.service PlacementNotConfigured 解决办法

您可能还会对下面的文章感兴趣: