OpenStack-M版(Mitaka)搭建基于(Centos7.2)+++三、Openstack身份认证服务(keystone)

本文档详细介绍了如何在CentOS 7.2上搭建OpenStack-Mitaka版本的身份认证服务keystone。内容包括keystone数据库的创建与权限设置、管理员密码生成、httpd、mod_wsgi及keystone的安装、初始化Fernet keys、配置http服务器、创建服务和API端点,以及在遇到问题时的排查方法,如httpd启动失败和数据库错误等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、Openstack身份认证服务(keystone)


keystone安装在控制节点


进入SQL创建keystone数据库并授予权限

mysql -uroot -p

CREATE DATABASE keystone;

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
  IDENTIFIED BY '123456';

GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
  IDENTIFIED BY '123456';

解释:

grant all privileges on 库名.表名 to '用户名'@'IP地址' identified by '密码'
使用grant all privileges on来更改用户对应某些库的远程权限
库名:要远程访问的数据库名称,所有的数据库使用“*” 
表名:要远程访问的数据库下的表的名称,所有的表使用“*” 
用户名:要赋给远程访问权限的用户名称 
IP地址:可以远程访问的电脑的IP地址,所有的地址使用“%” 
密码:要赋给远程访问权限的用户对应使用的密码


生成一个随机数作为管理员密码

[root@compute ~]# openssl rand -hex 10
41d33a2b1ca810fe25f2


安装httpd,mod_wsgi,keystoen

yum install openstack-keystone httpd mod_wsgi

修改keystone配置文件

vi /etc/keystone/keystone.conf

[DEFAULT]
admin_token = 41d33a2b1ca810fe25f2

[database]
connection = mysql+pymysql://keystone:123456@controller/keystone

[token]
provider = fernet

同步数据库

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

查看数据库是否同步成功

[root@controller ~]# mysql -uroot -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 184
Server version: 10.1.12-MariaDB MariaDB Server

Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> use keystone;
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
MariaDB [keystone]> show tables;
+------------------------+
| Tables_in_keystone     |
+------------------------+
| access_token           |
| assignment             |
| config_register        |
| consumer               |
| credential             |
| domain                 |
| endpoint               |
| endpoint_group         |
| federated_user         |
| federation_protocol    |
| group                  |
| id_mapping             |
| identity_provider      |
| idp_remote_ids         |
| implied_role           |
| local_user             |
| mapping
好的,下面是在 Red Hat 上搭建 OpenStack Mitaka 的完整过程: 1. 系统要求 首先,确保您的系统符合以下要求: - 操作系统:Red Hat Enterprise Linux 7.x - CPU:双核或更高 - 内存:至少8GB - 磁盘:至少100GB 2. 安装必要的软件 在开始安装 OpenStack Mitaka 之前,您需要安装一些必要的软件包和依赖项。运行以下命令来安装它们: ``` yum install -y centos-release-openstack-mitaka yum update -y yum install -y python-openstackclient openstack-selinux mariadb mariadb-server MySQL-python rabbitmq-server memcached python-memcached httpd mod_wsgi openstack-keystone openstack-glance openstack-nova-api openstack-nova-conductor openstack-nova-console openstack-nova-novncproxy openstack-nova-scheduler openstack-neutron openstack-neutron-ml2 openstack-neutron-linuxbridge ebtables ipset ``` 3. 配置数据库 a. 启动 MariaDB 服务并设置自动启动: ``` systemctl start mariadb.service systemctl enable mariadb.service ``` b. 运行 mysql_secure_installation 命令来设置密码和其他安全设置: ``` mysql_secure_installation ``` c. 创建数据库和用户: ``` mysql -u root -p CREATE DATABASE keystone; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' IDENTIFIED BY 'KEYSTONE_DBPASS'; GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' IDENTIFIED BY 'KEYSTONE_DBPASS'; CREATE DATABASE glance; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' IDENTIFIED BY 'GLANCE_DBPASS'; GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'GLANCE_DBPASS'; CREATE DATABASE nova; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' IDENTIFIED BY 'NOVA_DBPASS'; GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' IDENTIFIED BY 'NOVA_DBPASS'; CREATE DATABASE neutron; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' IDENTIFIED BY 'NEUTRON_DBPASS'; GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' IDENTIFIED BY 'NEUTRON_DBPASS'; FLUSH PRIVILEGES; EXIT; ``` 4. 配置 Identity Service(Keystone) a. 编辑 /etc/keystone/keystone.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://keystone:KEYSTONE_DBPASS@controller/keystone ... [token] ... provider = fernet ... ``` b. 初始化 Keystone 数据库: ``` su -s /bin/sh -c "keystone-manage db_sync" keystone ``` c. 设置 Keystone 管理员密码: ``` export OS_TOKEN=ADMIN_TOKEN export OS_URL=http://controller:35357/v3 export OS_IDENTITY_API_VERSION=3 openstack service create --name keystone --description "OpenStack Identity" identity openstack endpoint create --region RegionOne identity public http://controller:5000/v3 openstack endpoint create --region RegionOne identity internal http://controller:5000/v3 openstack endpoint create --region RegionOne identity admin http://controller:35357/v3 openstack domain create --description "Default Domain" default openstack project create --domain default --description "Admin Project" admin openstack user create --domain default --password ADMIN_PASS admin openstack role create admin openstack role add --project admin --user admin admin ``` d. 配置 Apache: ``` echo "ServerName controller" >> /etc/httpd/conf/httpd.conf systemctl restart httpd.service ``` 5. 配置 Image Service(Glance) a. 编辑 /etc/glance/glance-api.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS ... [glance_store] ... default_store = file filesystem_store_datadir = /var/lib/glance/images/ ... ``` b. 编辑 /etc/glance/glance-registry.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://glance:GLANCE_DBPASS@controller/glance ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = glance password = GLANCE_PASS ... ``` c. 初始化 Glance 数据库: ``` su -s /bin/sh -c "glance-manage db_sync" glance ``` d. 重启 Glance 服务: ``` systemctl enable openstack-glance-api.service openstack-glance-registry.service systemctl start openstack-glance-api.service openstack-glance-registry.service ``` 6. 配置 Compute Service(Nova) a. 编辑 /etc/nova/nova.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova ... [DEFAULT] ... auth_strategy = keystone ... my_ip = CONTROLLER_IP_ADDRESS ... [api] ... auth_strategy = keystone ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = nova password = NOVA_PASS ... [glance] ... api_servers = http://controller:9292 ... [oslo_concurrency] ... lock_path = /var/lib/nova/tmp ... ``` b. 初始化 Nova 数据库: ``` su -s /bin/sh -c "nova-manage db sync" nova ``` c. 重启 Nova 服务: ``` systemctl enable openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service systemctl start openstack-nova-api.service openstack-nova-cert.service openstack-nova-consoleauth.service openstack-nova-scheduler.service openstack-nova-conductor.service openstack-nova-novncproxy.service ``` 7. 配置 Networking Service(Neutron) a. 编辑 /etc/neutron/neutron.conf 文件,修改以下部分: ``` [database] ... connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron ... [DEFAULT] ... core_plugin = ml2 service_plugins = router allow_overlapping_ips = True auth_strategy = keystone ... rpc_backend = rabbit ... [keystone_authtoken] ... auth_uri = http://controller:5000 auth_url = http://controller:35357 memcached_servers = controller:11211 auth_type = password project_domain_name = default user_domain_name = default project_name = service username = neutron password = NEUTRON_PASS ... [oslo_concurrency] ... lock_path = /var/lib/neutron/tmp ... ``` b. 编辑 /etc/neutron/plugins/ml2/ml2_conf.ini 文件,修改以下部分: ``` [ml2] ... type_drivers = flat,vlan,vxlan tenant_network_types = vxlan mechanism_drivers = linuxbridge,l2population extension_drivers = port_security ... [ml2_type_flat] ... flat_networks = provider ... [ml2_type_vxlan] ... vni_ranges = 1:1000 ... [securitygroup] ... enable_ipset = True ... ``` c. 编辑 /etc/neutron/plugins/ml2/linuxbridge_agent.ini 文件,修改以下部分: ``` [linux_bridge] ... physical_interface_mappings = provider:PROVIDER_INTERFACE_NAME ... [vxlan] ... enable_vxlan = True local_ip = CONTROLLER_IP_ADDRESS l2_population = True ... [securitygroup] ... enable_security_group = True firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver ``` d. 编辑 /etc/neutron/l3_agent.ini 文件,修改以下部分: ``` [DEFAULT] ... interface_driver = linuxbridge ... external_network_bridge = ... ``` e. 编辑 /etc/neutron/dhcp_agent.ini 文件,修改以下部分: ``` [DEFAULT] ... interface_driver = linuxbridge dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq enable_isolated_metadata = True ... ``` f. 创建软链接: ``` ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini ``` g. 初始化 Neutron 数据库: ``` su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron ``` h. 重启 Neutron 服务: ``` systemctl enable neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service systemctl start neutron-server.service neutron-linuxbridge-agent.service neutron-dhcp-agent.service neutron-metadata-agent.service ``` 8. 验证安装 使用 OpenStack 的命令行工具进行验证,例如: ``` source /root/admin-openrc.sh openstack user list ``` 如果可以列出用户列表,则说明 OpenStack Mitaka 已经安装成功了! 希望这个完整的安装过程可以帮助到您!
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值