openstack实战讲解之-----------02-控制节点服务配置

author author     2022-08-19     363

关键词:

设置时间同步:

对于openstack来说,时间同步非常重要,所以一定要保证所有服务的时间一直,下面对世界做同步:

timedatectl list-timezones|grep Shanghai 查看时区
timedatectl set-timezone Asia/Shanghai  设置时区
timedatectl set-local-rtc yes 把 boolean 替换成yes则表示使用本地时间,替换成no则表示是UTC时间
ntpdate time1.aliyun.com 同步时间

启动数据库服务

[[email protected] ~]# systemctl enable mariadb.service 设置开机自启动
Created symlink from /etc/systemd/system/multi-user.target.wants/mariadb.service to /usr/lib/systemd/system/mariadb.service.
[[email protected] ~]# systemctl start mariadb.service 启动数据库
[[email protected] ~]# mysql_secure_installation 初始化并设置密码
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we‘ll need the current
password for the root user.  If you‘ve just installed MariaDB, and
you haven‘t set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none): 
OK, successfully used password, moving on...
Setting the root password ensures that nobody can log into the MariaDB
root user without the proper authorisation.
Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!
By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
 ... Success!
Normally, root should only be allowed to connect from ‘localhost‘.  This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
 ... Success!
By default, MariaDB comes with a database named ‘test‘ that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.
Remove test database and access to it? [Y/n] y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!
Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
 ... Success!
Cleaning up...
All done!  If you‘ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!

配置rabbitMQ消息队列

[[email protected] ~]# systemctl enable rabbitmq-server.service #设置开机启动
Created symlink from /etc/systemd/system/multi-user.target.wants/rabbitmq-server.service to /usr/lib/systemd/system/rabbitmq-server.service.
[[email protected] ~]# systemctl start rabbitmq-server.service #启动消息队列
[[email protected] ~]# rabbitmqctl add_user openstack openstack #给消息队列增加openstack用户和密码
Creating user "openstack" ...
[[email protected] ~]# rabbitmqctl set_permissions openstack ".*" ".*" ".*" #给openstack设置消息队列的权限
Setting permissions for user "openstack" in vhost "/" ...
[[email protected] ~]# rabbitmq-plugins list #查看消息队列插件
 Configured: E = explicitly enabled; e = implicitly enabled
 | Status:   * = running on [email protected]
 |/
[  ] amqp_client                       3.6.5
[  ] cowboy                            1.0.3
[  ] cowlib                            1.0.1
[  ] mochiweb                          2.13.1
[  ] rabbitmq_amqp1_0                  3.6.5
[  ] rabbitmq_auth_backend_ldap        3.6.5
[  ] rabbitmq_auth_mechanism_ssl       3.6.5
[  ] rabbitmq_consistent_hash_exchange 3.6.5
[  ] rabbitmq_event_exchange           3.6.5
[  ] rabbitmq_federation               3.6.5
[  ] rabbitmq_federation_management    3.6.5
[  ] rabbitmq_jms_topic_exchange       3.6.5
[  ] rabbitmq_management               3.6.5
[  ] rabbitmq_management_agent         3.6.5
[  ] rabbitmq_management_visualiser    3.6.5
[  ] rabbitmq_mqtt                     3.6.5
[  ] rabbitmq_recent_history_exchange  1.2.1
[  ] rabbitmq_sharding                 0.1.0
[  ] rabbitmq_shovel                   3.6.5
[  ] rabbitmq_shovel_management        3.6.5
[  ] rabbitmq_stomp                    3.6.5
[  ] rabbitmq_top                      3.6.5
[  ] rabbitmq_tracing                  3.6.5
[  ] rabbitmq_trust_store              3.6.5
[  ] rabbitmq_web_dispatch             3.6.5
[  ] rabbitmq_web_stomp                3.6.5
[  ] rabbitmq_web_stomp_examples       3.6.5
[  ] sockjs                            0.3.4
[  ] webmachine                        1.10.3
[[email protected] ~]# rabbitmq-plugins enable rabbitmq_management #加载消息队列的管理插件
The following plugins have been enabled:
  mochiweb
  webmachine
  rabbitmq_web_dispatch
  amqp_client
  rabbitmq_management_agent
  rabbitmq_management
Applying plugin configuration to [email protected] started 6 plugins.
[[email protected] ~]# systemctl restart rabbitmq-server.service #重启消息队列服务

    消息队列服务验证

[[email protected] ~]# lsof -i :15672
COMMAND   PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
beam.smp 6370 rabbitmq   53u  IPv4  37357      0t0  TCP *:15672 (LISTEN)
在浏览器中输入:192.168.56.11:15672,使用guest 账号和guest密码登录

技术分享

keystone认证服务


Keystone在N版已经是V3版本。在Keystone中主要涉及以下几个概念:

User:使用服务的用户,可以是人,服务或者系统,只要是使用了openstack服务的对象都可以称为用户

project(tenant)租户,可以理解为一个人,项目或者组织拥有的资源的合集。在一个租户中可以拥有很多个用户,这些用户可以根据权限的划分使用租户中的资源

Role:角色,用于分配操作的权限。角色可以被指定给用户,使得该用户获得角色对应的操作权限

Token:认证成功后,keystone会生成一串比特值或者字符串,用来作为访问资源的令牌,token中有可访问资源的范围和有效时间

Keystone V3 API 新特性

Keystone V3 做出了许多变化和改进,我们选取其中较为重要的进行阐述:

  • 将 Tenant 改称为 Project

  • 引入 Domain 的概念

  • 引入 Group 的概念

将 Tenant 改为 Project 并在其上添加 Domain 的概念,这更加符合现实世界和云服务的映射。

V3 利用 Domain 实现真正的多租户(multi-tenancy)架构,Domain 担任 Project 的高层容器。云服务的客户是 Domain 的所有者,他们可以在自己的 Domain 中创建多个 Projects、Users、Groups 和 Roles。通过引入 Domain,云服务客户可以对其拥有的多个 Project 进行统一管理,而不必再向过去那样对每一个 Project 进行单独管理。

Group 是一组 Users 的容器,可以向 Group 中添加用户,并直接给 Group 分配角色,那么在这个 Group 中的所有用户就都拥有了 Group 所拥有的角色权限。通过引入 Group 的概念,Keystone V3 实现了对用户组的管理,达到了同时管理一组用户权限的目的。这与 V2 中直接向 User/Project 指定 Role 不同,使得对云服务进行管理更加便捷。

图 . Domain、Group、Project、User 和 Role 的关系图(引用网上)

技术分享

创建库及用户

在数据库中创建库和用户(这里为了方便会把后面用到cinder,glance ,neutron,等服务的账号一并创建到数据库中

CREATE DATABASE keystone;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘localhost‘ IDENTIFIED BY ‘keystone‘;
GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘keystone‘;
CREATE DATABASE glance;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘localhost‘ IDENTIFIED BY ‘glance‘;
GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘%‘ IDENTIFIED BY ‘glance‘;
CREATE DATABASE nova;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘;
GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘;
CREATE DATABASE nova_api;
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘;
GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘;
CREATE DATABASE neutron;
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘localhost‘ IDENTIFIED BY ‘neutron‘;
GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘%‘ IDENTIFIED BY ‘neutron‘;
CREATE DATABASE cinder;
GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘localhost‘ IDENTIFIED BY ‘cinder‘;
GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘%‘ IDENTIFIED BY ‘cinder‘;

执行过程:

[[email protected] ~]# mysql -uroot -p
Enter password: #用初始化时候设置的密码
MariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO ‘keystone‘@‘%‘ IDENTIFIED BY ‘keystone‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE glance;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘localhost‘ IDENTIFIED BY ‘glance‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO ‘glance‘@‘%‘ IDENTIFIED BY ‘glance‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE nova_api;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘localhost‘ IDENTIFIED BY ‘nova‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON nova_api.* TO ‘nova‘@‘%‘ IDENTIFIED BY ‘nova‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE neutron;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘localhost‘ IDENTIFIED BY ‘neutron‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON neutron.* TO ‘neutron‘@‘%‘ IDENTIFIED BY ‘neutron‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> CREATE DATABASE cinder;
Query OK, 1 row affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘localhost‘ IDENTIFIED BY ‘cinder‘;
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON cinder.* TO ‘cinder‘@‘%‘ IDENTIFIED BY ‘cinder‘;
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| cinder             |
| glance             |
| information_schema |
| keystone           |
| mysql              |
| neutron            |
| nova               |
| nova_api           |
| performance_schema |
+--------------------+
9 rows in set (0.00 sec)

keystone配置文件

[[email protected] ~]# grep -n ‘^[a-z]‘ /etc/keystone/keystone.conf 
640:connection = mysql+pymysql://keystone:[email protected]/keystone
1472:servers = 192.168.56.11:11211 # memcache服务地址
2655:provider = fernet #配置令牌
2665:driver = memcache #选择driver为memcache默认是sql

初始化数据库,memcache配置

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


验证初始化是否成功:

[[email protected] ~]# mysql -h 192.168.56.11 -ukeystone -pkeystone -e "use keystone;show tables;"
+------------------------+
| Tables_in_keystone     |
+------------------------+
| access_token           |
| assignment             |
| config_register        |
| consumer               |
| credential             |
| endpoint               |
| endpoint_group         |
| federated_user         |
| federation_protocol    |
| group                  |
| id_mapping             |
| identity_provider      |
| idp_remote_ids         |
| implied_role           |
| local_user             |
| mapping                |
| migrate_version        |
| nonlocal_user          |
| password               |
| policy                 |
| policy_association     |
| project                |
| project_endpoint       |
| project_endpoint_group |
| region                 |
| request_token          |
| revocation_event       |
| role                   |
| sensitive_config       |
| service                |
| service_provider       |
| token                  |
| trust                  |
| trust_role             |
| user                   |
| user_group_membership  |
| whitelisted_config     |
+------------------------+

安装memcached

yuminstall memcached python-memcached 
vim/etc/sysconfig/memcached
[[email protected] ~]# cat /etc/sysconfig/memcached 
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 192.168.56.11,::1"

通过keystone-manage生成token认证必要的信息:

[[email protected] keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone 
[[email protected] keystone]#  keystone-manage credential_setup --keystone-user keystone --keystone-group keystone 
[[email protected] keystone]# keystone-manage bootstrap --bootstrap-password admin > --bootstrap-admin-url http://192.168.56.11:35357/v3/ > --bootstrap-internal-url http://192.168.56.11:35357/v3/ > --bootstrap-public-url http://192.168.56.11:5000/v3/ > --bootstrap-region-id RegionOne

配置apache服务

[[email protected] keystone]# vim/etc/httpd/conf/httpd.conf #编辑配置文件,
95 ServerName 192.168.56.11:80
配置软连接
[[email protected] keystone]# ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/  
启动服务:
[[email protected] keystone]# systemctl enable httpd.service
Created symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.
[[email protected] keystone]# systemctl start httpd.service
[[email protected] keystone]# 
[[email protected] keystone]# lsof -i :80
COMMAND   PID   USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
httpd   22891   root    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
httpd   22902 apache    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
httpd   22906 apache    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
httpd   22907 apache    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
httpd   22908 apache    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
httpd   22909 apache    4u  IPv6  59157      0t0  TCP *:http (LISTEN)
配置环境变量:
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
安装openstack客户端,如果不安装是没有openstack命令的
yum install -y python-openstackclient 
安装完毕执行以下命令验证:
[[email protected] keystone]# openstack user list  #查看用户列表
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| b84c1614b79b40278e02bd6ed034cc6f | admin |
+----------------------------------+-------+
[[email protected] keystone]# openstack role list #查看权限列表
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 9b0ba78cf70048efa8659220a3cebd06 | admin |
+----------------------------------+-------+
[[email protected] keystone]# openstack project list #查看项目列表
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 7ae0fb7deb5342d885a07c2c890a1ff4 | admin |
+----------------------------------+-------+
[[email protected] keystone]# openstack endpoint list #查看端点列表
+---------------+-----------+--------------+--------------+---------+-----------+------------------+
| ID            | Region    | Service Name | Service Type | Enabled | Interface | URL              |
+---------------+-----------+--------------+--------------+---------+-----------+------------------+
| 65f66a71d4624 | RegionOne | keystone     | identity     | True    | internal  | http://192.168.5 |
| 2a0a80a0de1b6 |           |              |              |         |           | 6.11:35357/v3/   |
| 503929        |           |              |              |         |           |                  |
| 71f801be8bc54 | RegionOne | keystone     | identity     | True    | admin     | http://192.168.5 |
| 7aca380c81b79 |           |              |              |         |           | 6.11:35357/v3/   |
| 6b240a        |           |              |              |         |           |                  |
| b1caff56f31f4 | RegionOne | keystone     | identity     | True    | public    | http://192.168.5 |
| dfabe5a8418c6 |           |              |              |         |           | 6.11:5000/v3/    |
| 5e2839        |           |              |              |         |           |                  |
+---------------+-----------+--------------+--------------+---------+-----------+------------------+

创建项目:

[[email protected] keystone]# openstack project create --domain default --description "Service Project" service
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 7f240473406147b99463f32b876bf69d |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
+-------------+----------------------------------+

这里生成的结果除了id和我不一样,其他的差不多一样

查看是否创建成功

[[email protected] keystone]# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 7ae0fb7deb5342d885a07c2c890a1ff4 | admin   |
| 7f240473406147b99463f32b876bf69d | service |
+----------------------------------+---------+

创建demo项目:

[[email protected] keystone]# openstack project create --domain default --description "Demo Project" demo
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 9b913d25891849baa55b21d837e9b63d |
| is_domain   | False                            |
| name        | demo                             |
| parent_id   | default                          |
+-------------+----------------------------------+

验证是否创建成功:

[[email protected] keystone]# openstack project list
+----------------------------------+---------+
| ID                               | Name    |
+----------------------------------+---------+
| 7ae0fb7deb5342d885a07c2c890a1ff4 | admin   |
| 7f240473406147b99463f32b876bf69d | service |
| 9b913d25891849baa55b21d837e9b63d | demo    |
+----------------------------------+---------+

创建用户

[[email protected] keystone]# openstack user create --domain default --password-prompt demo
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | f0c69bad72b54e0daef92c2295425932 |
| name                | demo                             |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] keystone]# openstack user list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| b84c1614b79b40278e02bd6ed034cc6f | admin |
| f0c69bad72b54e0daef92c2295425932 | demo  |
+----------------------------------+-------+

创建role权限:

[[email protected] keystone]# openstack role create user
+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | f53267146a6449b797393f7fc5d23e10 |
| name      | user                             |
+-----------+----------------------------------+
[[email protected] keystone]# openstack role list
+----------------------------------+-------+
| ID                               | Name  |
+----------------------------------+-------+
| 9b0ba78cf70048efa8659220a3cebd06 | admin |
| f53267146a6449b797393f7fc5d23e10 | user  |
+----------------------------------+-------+

把用户添加到项目中,并赋予权限

[[email protected] keystone]# openstack role add --project demo --user demo user #把demo用户加到demo项目中并赋予user权限
这里我把以后各个服务用户赋予不同role规则:
[[email protected] keystone]# openstack user create --domain default --password-prompt glance
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | 8dc6f28207b64e6d845a444a2ba18205 |
| name                | glance                           |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] keystone]# openstack role add --project service --user glance admin
[[email protected] keystone]# openstack user create --domain default --password-prompt nova
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | db596da4ed8f47ab9dc7fa77d3bc8c6c |
| name                | nova                             |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] keystone]# openstack role add --project service --user nova admin
[[email protected] keystone]# openstack user create --domain default --password-prompt neutron
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | c0f9c52898ad4d4f88254a01c458eb27 |
| name                | neutron                          |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] keystone]# openstack role add --project service --user neutron admin
[[email protected] keystone]# openstack user create --domain default --password-prompt cinder
User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | e5dbdde24a7340edb8bd3f498f9d28b5 |
| name                | cinder                           |
| password_expires_at | None                             |
+---------------------+----------------------------------+
[[email protected] keystone]# openstack role add --project service --user cinder admin

验证keystone

    验证用户:

unset OS_AUTH_URL OS_PASSWORD  取消之前的环境变量
[[email protected] keystone]# openstack > --os-auth-url http://192.168.56.11:35357/v3 > --os-project-domain-name default > --os-user-domain-name default > --os-project-name admin > --os-username admin token issue
Password: #输入密码后能出现下面内容说明用户没有问题
+------------+---------------------------------------------------------------------------------------+
| Field      | Value                                                                                 |
+------------+---------------------------------------------------------------------------------------+
| expires    | 2016-12-28 11:05:46+00:00                                                             |
| id         | gAAAAABYY456xFHiZSMnQ7x88FxUJjuu3uO8xRLh_soTSgyf3KzMv0nY3s4wn1diFlJ7d2qjPub0iftlOKUnZ |
|            | z9QYPMUGhfxguZhEHWQtufNQNxZD9r8ekluU0XjCdrdnBU-fs3IM6EmJt3O1Sl-                       |
|            | Nw4G40uh0xatMkxI6bmrG3fRkCrcLga6Cx4                                                   |
| project_id | 7ae0fb7deb5342d885a07c2c890a1ff4                                                      |
| user_id    | b84c1614b79b40278e02bd6ed034cc6f                                                      |
+------------+---------------------------------------------------------------------------------------

创建环境变量脚本:

创建admin变量

[[email protected] ~]# cat admin-openstack 
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=admin
export OS_USERNAME=admin
export OS_PASSWORD=admin
export OS_AUTH_URL=http://192.168.56.11:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

创建demo变量

[[email protected] ~]# cat demo-openstack 
export OS_PROJECT_DOMAIN_NAME=default
export OS_USER_DOMAIN_NAME=default
export OS_PROJECT_NAME=demo
export OS_USERNAME=demo
export OS_PASSWORD=demo
export OS_AUTH_URL=http://192.168.56.11:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

使环境变量生效:

soure demo-openstack

Keystone常见错误

401  #验证失败,keystone相关用户账户密码设置错误,时间不同步,或者输入的项目名称不对
403  #可能未初始化OS_token变量,需要使用source命令使其生效,也可能是配置的配置文件未生效,需要重启相关服务
409  #keystone创建用户,用户已存在
500  #服务器内部错误,服务配置有问题,看日志,检查配置
503  #keystone相关账户密码设置有问题,请将相关的glance账户删除,重新创建即可
服务故障    #相关服务没有起来




本文出自 “圈中一鸟” 博客,请务必保留此出处http://sgk2011.blog.51cto.com/1551358/1887008

openstack实战讲解之-----------01-基础环境安装

本次使用的环境如下:Linux-node1ip:192.168.56.11控制节点Linux-node2ip:192.168.56.12计算节点设置主机名解析[[email protected] ~]# cat /etc/hosts127.0.0.1   localhost localhost.localdomain& 查看详情

openstack实战讲解之-----------02-控制节点服务配置

设置时间同步:对于openstack来说,时间同步非常重要,所以一定要保证所有服务的时间一直,下面对世界做同步:timedatectl list-timezones|grep Shanghai 查看时区timedatectl set-timezone Asia/Shanghai  设置时区timedatect... 查看详情

openstack实战讲解之-----05-控制节点nova服务安装配置

一、Nova介绍        Nova是openstack最早的两块模块之一,另一个是对象存储swift。在openstack体系中一个叫做计算节点,一个叫做控制节点。这个主要和nova相关,我们把安装为计算节点nova-compute,把除了n... 查看详情

openstack实战讲解之-----10-图形界面管理安装配置(dashboard)

...一个web接口,使得云平台管理员以及用户可以管理不同的Openstack资源以及服务。这个部署示例使用的是ApacheWeb服务器。dashboard仅在核心服务中要求认证服务。你可以将dashboard与其他服务,如镜像服务、计算服务和网络服务等结合... 查看详情

openstack实战讲解之-----------04-控制节点glance服务安装配置

一、Glance介绍: 1.1glance主要是由三部分组成: glance-api:接收云系统镜像的创建,删除,读取请求,类似nova-api,通过其他模块(glance-registry及imagestore)来完成诸如镜像的查找、获取、上传、删除等操作,api监听端口9292... 查看详情

openstack实战讲解之-----------02-控制节点kvm虚拟化配置

KVM虚拟化的特性嵌入到linux正式kernel(提高了兼容性)代码级资源调用(提高性能)虚拟机就是一个进程(内存易于管理)直接支持NUMA技术(提高扩展性)虽然被RedHat收购了,但是依然保持开源发展模式,社区活跃更好的商业支... 查看详情

云计算之openstack实战记与埋坑填坑

一、了解Openstack1.1OpenStack简介 OpenStack是一整套开源软件项目的综合,它允许企业或服务提供者建立、运行自己的云计算和存储设施。Rackspace与NASA是最初重要的两个贡献者,前者提供了“云文件”平台代码,该平台增强了OpenStac... 查看详情

云计算之openstack实战记与埋坑填坑

3.6Nova控制节点的部署创建nova用户,并加入到service项目中,赋予admin权限[[email protected] ~]# source admin-openrc.sh[[email protected] ~]# openstack user create --domain  查看详情

mp实战系列之实体类讲解(代码片段)

首先说一句,mybatisplus实在太好用了!mybaitsplus的实体类:以我博客的用户类作为讲解packagecom.blog.entity;importcom.baomidou.mybatisplus.annotations.TableField;importcom.baomidou.mybatisplus.annotations.TableId;importcom.baomidou.m 查看详情

openstack入门之初步认识

从OpenStack基础知识开始学起,剖析openstack架构,分析OpenStack的各个组件的功能、原理和使用方法,通过实战演练来掌握OpenStack的部署和操作。为今后学习OpenStack的高级课程以及基于OpenStack构建企业级云计算系统打下基础。在接下... 查看详情

虚拟ip之辅助ip概念实战配置讲解

adsfip--helpipaddrhelpipaddradd10.0.2.1/24deveth0(24位源码)回车添加别名辅助ip用ipconfig查看的时候不行的ipaddripa用ipconfig添加一个地址,用ipa可以查看、 查看详情

mp实战系列之封装方法讲解(代码片段)

mybatisplus封装的方法怎么用?以及它们对应的sql是那些sql?及其什么情况用?这些需要说下,以下我将会将我常用的说下,不是常用的,可能提以下或者不提。根据主键查询UserEntityuserEntity=ud.selectById(id); 上述这个没什么好说的&nbs... 查看详情

mp实战系列之代码生成器讲解(代码片段)

MP的代码生成器可谓用"简洁"二字,来形容。我个人觉得jeesite的代码生成器都不一定比它好用。当然也是由于我个人的习惯。只需一键执行main方法,就可以生成对应的项目文件,含entity,dao,service,serviceImpl,Controller及其xml文件。当... 查看详情

mp实战系列之dao讲解(代码片段)

说到DAO不得不提一个开发名词"三层架构",所谓的三层架构是什么呢?简单的可以概括为数据访问层,业务逻辑层,界面层(又称表现层).这也是我们Java开发常用的手段,经常有人将三层架构和mvc模式混淆,在我看来,三层架构就... 查看详情

androidframework实战开发-跨进程通信之epoll详细讲解(代码片段)

...#xff1a;QQ交流群:422901085进行课程讨论android跨进程通信实战视频课程(加群获取优惠)1、epoll出现的背景首先了解2个基本概念:阻塞IO(blockingIO):socket的阻塞模式意味着必须要做完IO操作(包括错 查看详情

androidframework实战开发-跨进程通信之epoll详细讲解(代码片段)

...#xff1a;QQ交流群:422901085进行课程讨论android跨进程通信实战视频课程(加群获取优惠)1、epoll出现的背景首先了解2个基本概念:阻塞IO(blockingIO):socket的阻塞模式意味着必须要做完IO操作(包括错 查看详情

springboot异步消息之amqp讲解及实战(附源码)(代码片段)

觉得有帮助请点赞关注收藏~~~AMQP(高级消息队列协议)是一个提供统一消息服务的应用层标准高级消息队列协议。是应用层协议的一个开放标准,为面向消息的中间件设计。基于此协议的客户端与消息中间件可传递... 查看详情

androidframework实战开发-binder专题讲解之aidl文件的详细分析(代码片段)

...#xff1a;QQ交流群:422901085进行课程讨论android跨进程通信实战视频课程(加群获取优惠)大家平时做应用开发时候也经常会遇到有跨进程通信的需求,这里大部分通信可能就会回答,就是用aidl,service。确实这... 查看详情