openstack部署篇

本文详细介绍了在CentOS7.4系统上部署Rock版本OpenStack的过程,包括配置hosts、时间同步、源安装源、安装数据库、rabbitmq、memcached、etcd、keystone、glance、nova、neutron、dashboard等组件,并提供了配置Apache HTTP服务器、创建域、项目、用户和角色、验证操作等关键步骤,最终实现OpenStack环境的搭建。

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

openstack安装部署

本文介绍的是安装rock版本的openstack,最小化安装用到的组件

  1. keystone(认证)
  2. glance(镜像)
  3. neutron(网络)
  4. nova(计算)
  5. dashboard(也叫horizon提供web ui服务)

系统版本:CentOS7.4

控制节点地址 计算节点地址
eht0(10.167.130.208)    eth1(192.168.122.8) eth0(10.167.130.209)     eth1(192.168.122.9)
密码名称 描述
数据库密码(未使用变量) 数据库的root密码
ADMIN_PASS 用户密码 admin
CINDER_DBPASS 块存储服务的数据库密码
CINDER_PASS Block Storage服务用户的密码 cinder
DASH_DBPASS 仪表板的数据库密码
DEMO_PASS 用户密码 demo
GLANCE_DBPASS 图像服务的数据库密码
GLANCE_PASS 图像服务用户的密码 glance
KEYSTONE_DBPASS 身份服务的数据库密码
METADATA_SECRET 元数据代理的秘密
NEUTRON_DBPASS 网络服务的数据库密码
NEUTRON_PASS 网络服务用户的密码 neutron
NOVA_DBPASS 计算服务的数据库密码
NOVA_PASS 计算服务用户的密码 nova
PLACEMENT_PASS 展示位置服务用户的密码 placement
RABBIT_PASS RabbitMQ用户的密码 openstack

部署过程中密码请自行设置为适合的密码

配置hosts

1.修改主机名

systemctl set-hostname controller #208主机
systemctl set-hostname compute #209主机

3.编辑hosts文件加入所有节点

vi /etc/hosts  
10.167.130.208 controller
10.167.130.209 compute

配置时间同步

  可自建ntp也可以和网络上的ntp同步我们从网络上同步

1.安装软件包

yum install ntp ntpdata -y

2.我们同步阿里云的时间服务器

ntpdata ntp1.aliyun.com

配置源安装源

  1. 下载163源比较喜欢用163
cd /etc/yum.repo.d/
mkdir bak
mv * bak
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
yum clean all
yum list
  1. 安装openstack的源
      安装Rocky版本时,运行:
yum install centos-release-openstack-rocky
  1. 升级所有节点软件包
yum upgrade
  1. 安装openstack客户端
yum install python-openstackclient
  1. 安装selinux支持
yum install openstack-selinux

安装数据库

  1. 安装数据库
yum install mariadb mariadb-server python2-PyMySQL
  1. 编辑mysql配置文件
    /etc/my.cnf.d/openstack.cnf文件(/etc/my.cnf.d/如果需要,备份现有配置文件)并完成以下操作:
    创建一个[mysqld]部分,并将bind-address 密钥设置为控制器节点的管理IP地址,以允许其他节点通过管理网络进行访问。设置其他键以启用有用选项和UTF-8字符集:
[mysqld]
bind-address = 10.167.130.208
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8
  1. 启动服务并设置开机自启
systemctl enable mariadb.service
systemctl start mariadb.service
  1. 通过运行mysql_secure_installation 脚本来保护数据库服务。特别是,为数据库root帐户选择合适的密码 :
mysql_secure_installation

安装rabbitmq

  1. 安装软件包
yum install rabbitmq-server
  1. 启动服务并设置开机启动
systemctl enable rabbitmq-server.service
systemctl start rabbitmq-server.service
  1. 为openstack添加一个用户
rabbitmqctl add_user openstack RABBIT_PASS

#Creating user "openstack" ...

替换RABBIT_PASS为合适的密码。

  1. 允许用户进行配置,写入和读取访问 openstack:
rabbitmqctl set_permissions openstack ".*" ".*" ".*"

#Setting permissions for user "openstack" in vhost "/" ...

安装memcached

  1. 安装软件包
yum install memcached python-memcached
  1. 编辑/etc/sysconfig/memcached文件并完成以下操作:
     配置服务以使用控制器节点的管理IP地址。这是为了通过管理网络启用其他节点的访问:
OPTIONS="-l 127.0.0.1,::1,controller"
  1. 启动服务并设置开机启动
systemctl enable memcached.service
systemctl start memcached.service

安装etcd

  1. 安装软件包
yum install etcd
  1. 编辑/etc/etcd/etcd.conf文件并设置ETCD_INITIAL_CLUSTER, ETCD_INITIAL_ADVERTISE_PEER_URLS,ETCD_ADVERTISE_CLIENT_URLS, ETCD_LISTEN_CLIENT_URLS控制器节点,以使经由管理网络通过其他节点的访问的管理IP地址:
#[Member]
ETCD_DATA_DIR="/var/lib/etcd/default.etcd"
ETCD_LISTEN_PEER_URLS="http://10.167.130.208:2380"
ETCD_LISTEN_CLIENT_URLS="http://10.167.130.208:2379"
ETCD_NAME="controller"
#[Clustering]
ETCD_INITIAL_ADVERTISE_PEER_URLS="http://10.167.130.208:2380"
ETCD_ADVERTISE_CLIENT_URLS="http://10.167.130.208:2379"
ETCD_INITIAL_CLUSTER="controller=http://10.167.130.208:2380"
ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster-01"
ETCD_INITIAL_CLUSTER_STATE="new"
  1. 启动服务并设置开机启动
systemctl enable etcd
systemctl start etcd

安装keystone

1.创建keystone数据库以及用户密码

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';

替换KEYSTONE_DBPASS为合适的密码。

2.安装和配置

安装所需软件包

yum install openstack-keystone httpd mod_wsgi

3.编辑/etc/keystone/keystone.conf文件并完成以下操作:

在该[database]部分中,配置数据库访问:

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

替换KEYSTONE_DBPASS为您为数据库选择的密码。
4.在该[token]部分中,配置Fernet令牌提供程序:

[token]
provider = fernet

5.填充Identity服务数据库:

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

6.初始化Fernet密钥存储库:

keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
keystone-manage credential_setup --keystone-user keystone --keystone-group keystone

7.引导身份服务:

keystone-manage bootstrap --bootstrap-password ADMIN_PASS \
  --bootstrap-admin-url http://controller:5000/v3/ \
  --bootstrap-internal-url http://controller:5000/v3/ \
  --bootstrap-public-url http://controller:5000/v3/ \
  --bootstrap-region-id RegionOne

替换 ADMIN_PASS为管理用户的合适密码。

配置Apache HTTP服务器

1.编辑/etc/httpd/conf/httpd.conf文件并配置ServerName引用控制器节点的 选项:

ServerName controller

创建/usr/share/keystone/wsgi-keystone.conf文件的链接:

ln -s /usr/share/keystone/wsgi-keystone.conf /etc/httpd/conf.d/

完成安装

启动Apache HTTP服务并将其配置为在系统引导时启动:

systemctl enable httpd.service
systemctl start httpd.service

配置管理帐户

export OS_USERNAME=admin
export OS_PASSWORD=ADMIN_PASS
export OS_PROJECT_NAME=admin
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_DOMAIN_NAME=Default
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3

替换ADMIN_PASS为keystone-manage bootstrap引导身份认证中命令中使用的密码。

创建域,项目,用户和角色

虽然本指南中的keystone-manage bootstrap步骤中已存在“Default”域,但创建新域的正式方法是:

openstack domain create --description "An Example Domain" example

1.本指南使用的服务项目包含您添加到环境中的每项服务的唯一用户。创建service 项目:

openstack project create --domain default \
  --description "Service Project" service

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Service Project                  |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 24ac7f19cd944f4cba1d77469b2a73ed |
| is_domain   | False                            |
| name        | service                          |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

2.常规(非管理员)任务应使用非特权项目和用户。例如,本指南创建myproject项目和myuser 用户。

  • 创建myproject项目:
openstack project create --domain default \
  --description "Demo Project" myproject

+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | Demo Project                     |
| domain_id   | default                          |
| enabled     | True                             |
| id          | 231ad6e7ebba47d6a1e57e1cc07ae446 |
| is_domain   | False                            |
| name        | myproject                        |
| parent_id   | default                          |
| tags        | []                               |
+-------------+----------------------------------+

注: 在为此项目创建其他用户时,请勿重复此步骤。

  • 创建myuser用户:
$ openstack user create --domain default \
  --password-prompt myuser

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id           | default                          |
| enabled             | True                             |
| id                  | aeda23aa78f44e859900e22c24817832 |
| name                | myuser                           |
| options             | {
   
   }                               |
| password_expires_at | None                             |
+---------------------+----------------------------------+
  • 创建myrole角色:
$ openstack role create myrole

+-----------+----------------------------------+
| Field     | Value                            |
+-----------+----------------------------------+
| domain_id | None                             |
| id        | 997ce8d05fc143ac97d83fdfb5998552 |
| name      | myrole                           |
+-----------+----------------------------------+

将myrole角色添加到myproject项目和myuser用户:

$ openstack role add --project myproject --user myuser myrole

注意: 此命令不提供输出。

验证操作

在控制器节点上执行这些命令。

取消设置临时 变量OS_AUTH_URL和OS_PASSWORD环境变量:

$ unset OS_AUTH_URL OS_PASSWORD

作为admin用户,请求身份验证令牌:

$ openstack --os-auth-url http://controller:5000/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-02-12T20:14:07.056119Z                                     |
| id         | gAAAAABWvi7_B8kKQD9wdXac8MoZiQldmjEO643d-e_j-XXq9AmIegIbA7UHGPv |
|            | atnN21qtOMjCFWX7BReJEQnVOAj3nclRQgAYRsfSU_MrsuWb4EDtnjU7HEpoBb4 |
|            | o6ozsA_NmFWEpLeKy0uNn_WeKbAhYygrsmQGA49dclHVnz-OMVLiyM9ws       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

注意: 此命令使用admin用户的密码。

作为myuser上一节中创建的用户,请求身份验证令牌:

$ openstack --os-auth-url http://controller:5000/v3 \
  --os-project-domain-name Default --os-user-domain-name Default \
  --os-project-name myproject --os-username myuser token issue

Password:
+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:15:39.014479Z                                     |
| id         | gAAAAABWvi9bsh7vkiby5BpCCnc-JkbGhm9wH3fabS_cY7uabOubesi-Me6IGWW |
|            | yQqNegDDZ5jw7grI26vvgy1J5nCVwZ_zFRqPiz_qhbq29mgbQLglbkq6FQvzBRQ |
|            | JcOzq3uwhzNxszJWmzGC7rJE_H0A_a3UFhqv8M4zMRYSbS2YF0MyFmp_U       |
| project_id | ed0b60bf607743088218b0a533d5943f                                |
| user_id    | 58126687cbcc4888bfa9ab73a2256f27                                |
+------------+-----------------------------------------------------------------+

创建OpenStack客户端环境脚本

1.创建和编辑admin-openrc文件并添加以下内容:

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_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换ADMIN_PASS为您admin在Identity服务中为用户选择的密码。

2.创建和编辑demo-openrc文件并添加以下内容:

export OS_PROJECT_DOMAIN_NAME=Default
export OS_USER_DOMAIN_NAME=Default
export OS_PROJECT_NAME=myproject
export OS_USERNAME=myuser
export OS_PASSWORD=MYUSER_PASS
export OS_AUTH_URL=http://controller:5000/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

替换DEMO_PASS为您demo在Identity服务中为用户选择的密码。

使用脚本

加载admin-openrc文件以使用Identity服务的位置以及admin项目和用户凭据填充环境变量:

$ . admin-openrc

请求身份验证令牌:

$ openstack token issue

+------------+-----------------------------------------------------------------+
| Field      | Value                                                           |
+------------+-----------------------------------------------------------------+
| expires    | 2016-02-12T20:44:35.659723Z                                     |
| id         | gAAAAABWvjYj-Zjfg8WXFaQnUd1DMYTBVrKw4h3fIagi5NoEmh21U72SrRv2trl |
|            | JWFYhLi2_uPR31Igf6A8mH2Rw9kv_bxNo1jbLNPLGzW_u5FC7InFqx0yYtTwa1e |
|            | eq2b0f6-18KZyQhs7F3teAta143kJEWuNEYET-y7u29y0be1_64KYkM7E       |
| project_id | 343d245e850143a096806dfaefa9afdc                                |
| user_id    | ac3377633149401296f6c0d92d79dc16                                |
+------------+-----------------------------------------------------------------+

安装glance

本节介绍如何在控制器节点上安装和配置代号为glance的Image服务。为简单起见,此配置将图像存储在本地文件系统上。

在安装和配置映像服务之前,必须创建数据库,服务凭据和API端点。

要创建数据库,请完成以下步骤:

使用数据库访问客户端以root用户身份连接到数据库服务器:

$ mysql -u root -p

1.创建glance数据库:

MariaDB [(none)]> CREATE DATABASE glance;

2.授予对glance数据库的适当访问权限:

MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
  IDENTIFIED BY 'GLANCE_DBPASS';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \
  IDENTIFIED BY 'GLANCE_DBPASS';

替换GLANCE_DBPASS为合适的密码。

退出数据库访问客户端。

来源admin凭据来访问仅管理员CLI命令:

$ . admin-openrc

3.要创建服务凭据,请完成以下步骤:

  • 创建glance用户:
$ openstack user create --domain default --password-prompt glance

User Password:
Repeat User Password:
+---------------------+----------------------------------+
| Field               | Value                            |
+---------------------+----------------------------------+
| domain_id       
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值