openstack云平台

2023年10月3日 21:27

bian@TOC

一、openstack简介

OpenStack是一个由NASA(美国国家航空航天局)和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。

OpenStack是一个开源的云计算管理平台项目,由几个主要的组件组合起来完成具体工作。OpenStack支持几乎所有类型的云环境,项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenStack通过各种互补的服务提供了基础设施即服务(IaaS)的解决方案,每个服务提供API以进行集成。

openstack是一个云平台管理的项目,它不是一个软件。也就是说我们可以使用openstack来管理我们一个数据中心大量资源池。它里面包含了很多子项目。

二、基本搭建

官方文档:https://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/environment.html

1、控制节点环境配置

1.主机网络

我们此处配置的是双网卡:第一块网卡正常桥接、第二块网卡用于虚拟机之间的通信

参考官方文档:gogogo
step1:配置网络接口

[root@server1 ~]# cd /etc/sysconfig/network-scripts/[root@server1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1[root@server1 network-scripts]# vim ifcfg-eth1[root@controller network-scripts]# cat ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=none[root@server1 network-scripts]# ifup eth1

step2:配置域名解析
设置节点主机名为 controller。

编辑 /etc/hosts 文件包含以下内容:
在这里插入图片描述

[root@server1 network-scripts]# hostnamectl set-hostname controller[root@server1 network-scripts]# logout Connection to 172.25.254.1 closed.[westos@westos_student50 Desktop]$ ssh root@172.25.254.1root@172.25.254.1's password: [root@controller ~]# 

2.网络时间协议文档(同步时间)**

官方文档:网络时间协议文档
在这里插入图片描述

[root@controller ~]# yum install chrony[root@controller ~]# vim /etc/chrony.conf server 172.25.254.50 iburst  同步主机时间[root@controller ~]# systemctl start chronyd[root@controller ~]# systemctl is-enabled chronyd  ##该服务默认开机自启enabled[root@controller ~]#  chronyc sources -v210 Number of sources = 1  .-- Source mode  '^' = server, '=' = peer, '#' = local clock. / .- Source state '*' = current synced, '+' = combined , '-' = not combined,| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.||                                                 .- xxxx [ yyyy ] +/- zzzz||      Reachability register (octal) -.           |  xxxx = adjusted offset,||      Log2(Polling interval) --.      |          |  yyyy = measured offset,||                                \     |          |  zzzz = estimated error.||                                 |    |           \MS Name/IP address         Stratum Poll Reach LastRx Last sample               ===============================================================================^? westos_student50.westos.>     0   8     0     -     +0ns[   +0ns] +/-    0ns[root@controller ~]# dateMon Apr 11 16:44:18 CST 2022  

顺便再提一嘴:只要涉及到集群,注意两点 一点是时间,(比如证书生效的时间、数据备份的时间)一点是解析!

3.OpenStack包**

在真机上操作:把mitaka解压到apache的发布目录下:

[root@westos_student50 media]# mkdir /var/www/html/openstack[root@westos_student50 media]# tar xf mitaka.tar -C /var/www/html/openstack

虚拟机上操作:设置网络仓库

[root@controller ~]# cd /etc/yum.repos.d/[root@controller yum.repos.d]# lsdvd.repo  redhat.repo[root@controller yum.repos.d]# vim openstack.repo[root@controller yum.repos.d]# cat openstack.repo [openstack]name=mitakabaseurl=http://172.25.254.50/openstack/mitaka  ##设置完检查一下该地址是否能访问到(下图显示没问题)gpgcheck=0

在这里插入图片描述加粗样式
接下来 完成安装:

(1)升级包:

[root@controller yum.repos.d]# yum upgrade

(2)安装 OpenStack 客户端

yum install python-openstackclient

4.SQL数据库**

参考文档:SQL数据库的配置

安全并配置组件

(1)安装软件包:

yum install mariadb mariadb-server python2-PyMySQL -y

(2)创建并编辑 /etc/my.cnf.d/openstack.cnf,然后完成如下动作:

[root@controller yum.repos.d]# vim /etc/my.cnf.d/openstack.cnf[root@controller yum.repos.d]# cat /etc/my.cnf.d/openstack.cnf[mysqld]bind-address = 172.25.254.1  ##该值为控制节点的管理网络IP地址以使得其它节点可以通过管理网络访问数据库:default-storage-engine = innodbinnodb_file_per_tablemax_connections = 4096collation-server = utf8_general_cicharacter-set-server = utf8

(3)启动数据库服务,并将其配置为开机自启:

systemctl enable --now mariadb.service

(4)为了保证数据库服务的安全性,运行mysql_secure_installation脚本。特别需要说明的是,为数据库的root用户设置一个适当的密码。

 mysql_secure_installation 

在这里插入图片描述

5.消息队列**

消息队列:它主要用来暂存生产者生产的消息,供后续其他消费者来消费。

(1)安装包

 yum install rabbitmq-server

(2)启动消息队列服务并设置开机自启

systemctl enable --now rabbitmq-server.service

该服务监听的端口是25672
在这里插入图片描述

(3)添加 openstack 用户

rabbitmqctl add_user openstack openstack  ## 为方便操作 设置密码和用户都为一串字符

(4)给openstack用户配置写和读权限:

rabbitmqctl set_permissions openstack ".*" ".*" ".*"

查看上述读写权限的划分:

[root@controller yum.repos.d]# rabbitmq-plugins list[root@controller yum.repos.d]# rabbitmq-plugins enable rabbitmq_management 

在这里插入图片描述
在这里插入图片描述
下图展示了openstack用户的权限:
在这里插入图片描述

6.Memcached**

(1)安装软件包并设置开机自启

yum install memcached python-memcached -systemctl enable --now memcached.service

(2)编辑/etc/sysconfig/memcached

在这里插入代码片

下面是原先的内容:
在这里插入图片描述
修改后的内容:
在这里插入图片描述

systemctl restart memcached.service

在这里插入图片描述

三、认证服务(keystone)

1.浅识keystone

对于keystone的基本知识,可以参考这里,keystone详解

keystone是OpenStack的核⼼组件之⼀,为OpenStack⼤家族中的其他组件提供统⼀的⾝份认证服务,包括⾝份认证、令牌发放和校验服务列表、定义⽤户权限等。OpenStack中所有服务的授权和认证都需要经过keystone,因此keystone是OpenStack中第⼀个需要安装的核⼼组件。

keystone的具体功能如下:
管理⽤户及其权
限维护各种服务的endpoint
认证和鉴权

2.先决条件

(1)根据下列步骤创建数据库

[root@controller yum.repos.d]# mysql -p ##用数据库连接客户端以 root 用户连接到数据库服务器## 创建用户 对``keystone``数据库授予恰当的权限,使本地和远程都可以连接数据库 (注意密码规范 做一个记录表 别到最后忘了密码)MariaDB [(none)]> CREATE DATABASE keystone;Query OK, 1 row affected (0.00 sec)## 将keystone数据库的所有权限授予本地用户keystone,登陆密码是keystoneMariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \    ->   IDENTIFIED BY 'keystone';  Query OK, 0 rows affected (0.00 sec)## 将keystone数据库的所有权限授予远程用户keystone,登陆密码是keystoneMariaDB [(none)]> GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \    ->   IDENTIFIED BY 'keystone';Query OK, 0 rows affected (0.00 sec)MariaDB [(none)]> bye  #退出数据库客户端。

(2)生成一个随机值在初始的配置中作为管理员的令牌。

 openssl rand -hex 10

因为目前keystone里面是没有任何认证用户的,那就需要一个初始令牌去调用api接口

2.安装并配置组件

(1)安装包

 yum install openstack-keystone httpd mod_wsgi -y

(2)编辑文件 /etc/keystone/keystone.conf 并完成如下动作

[root@controller yum.repos.d]#  openssl rand -hex 10560054dc1d173f892f8e

vim /etc/keystone/keystone.conf

1 [DEFAULT]2 admin_token = 560054dc1d173f892f8e  ##这个令牌一定是刚刚生成的令牌528 [database]529 connection = mysql+pymysql://keystone:keystone@controller/keystone  ## 我们使用的数据库是mysql,通过pymysql的插件连接数据库,通过keystone:keystone(用户名和密码)去连接controler上的keystone数据库 1985 [token]1986 provider = fernet  ##令牌提供方式

(3)初始化身份认证服务的数据库

su -s /bin/sh -c "keystone-manage db_sync" keystone ## 切换成keystone用户来初始化数据库

在这里插入图片描述
(4)初始化Fernet keys

[root@controller yum.repos.d]# cd /etc/keystone/[root@controller keystone]# keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone

在这里插入图片描述

3.配置 Apache HTTP 服务器

(1)编辑/etc/httpd/conf/httpd.conf 文件,配置ServerName 选项为控制节点:

 96 ServerName controller

(2)创建文件 /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>

(3)启动 Apache HTTP 服务并配置其随系统启动

systemctl enable httpd.service

在这里插入图片描述

4.创建服务实体和API端点

(1)先决条件

[root@controller conf.d]# export OS_TOKEN=560054dc1d173f892f8e  ##配置认证令牌[root@controller conf.d]# export OS_URL=http://controller:35357/v3  ##配置端点URL[root@controller conf.d]# export OS_IDENTITY_API_VERSION=3  ##配置认证 API 版本

(2)创建服务实体和API端点

在你的Openstack环境中,认证服务管理服务目录。服务使用这个目录来决定您的环境中可用的服务。

endpoint是⼀个可以通过网络访问的地址,通常是⼀个URL,也就是⽹址。每个部署在OpenStack上的服务都通过endpoint提供⾃⼰的API,⽤户可以去访问这些⽹址来使⽤服务。
那么联想到刚才token上所说的认证过程,⽹址就在这⾥,keystone想要确保有权限的⽤户才能访问服务的话,就必须将这些endpoint管理起来,为它们挡住没有权限的⽤户的访问。

创建服务实体和身份认证服务:
在这里插入图片描述

5.创建域、项目、用户和角色

(1)创建域default

openstack domain create --description "Default Domain" default

(2)在刚刚创建的域中创建管理的项目、用户和角色:(admin)

首先,创建 admin 项目:

openstack user create --domain default \  --password-prompt admin

在这里插入图片描述
然后,创建admin 用户

openstack user create --domain default --password admin admin

在这里插入图片描述
接着,创建 admin 角色

openstack role create admin

在这里插入图片描述
最后,添加admin 角色到 admin 项目和用户上,让他去管理:

openstack role add --project admin --user admin admin

此时 我们罗列一下
在这里插入图片描述
(3)本指南使用一个你添加到你的环境中每个服务包含独有用户的service 项目。创建service项目:

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

在这里插入图片描述

(4)常规(非管理)任务应该使用无特权的项目和用户。作为例子,本指南创建 demo 项目和用户。

openstack project create --domain default \  --description "Demo Project" demo

创建demo 项目:
在这里插入图片描述
创建demo 用户:

openstack user create --domain default --password demo demo  ##用户名和密码都是demo

在这里插入图片描述

创建 user 角色:

openstack role create user

在这里插入图片描述
添加 user角色到 demo 项目和用户:

openstack role add --project demo --user demo user

在这里插入图片描述

6.验证操作

(1)重置OS_TOKENOS_URL 环境变量:

unset OS_TOKEN OS_URL  ##将刚刚加的两个变量去掉

因为在keystone里面我们刚刚创建用户了,我们要通过指定的用户来进行认证。

(2)作为 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

在这里插入图片描述
(3)作为demo 用户,请求认证令牌

openstack --os-auth-url http://controller:35357/v3   --os-project-domain-name default --os-user-domain-name default   --os-project-name demo --os-username demo token issue

在这里插入图片描述

7.创建 OpenStack 客户端环境脚本

前一节中使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。

(1)创建脚本
创建 admin 和 demo项目和用户创建客户端环境变量脚本

step1:编辑文件 admin-openrc 并添加如下内容:

[root@controller ~]# vim admin-openrc [root@controller ~]# cat admin-openrc export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=adminexport OS_USERNAME=adminexport OS_PASSWORD=adminexport OS_AUTH_URL=http://controller:35357/v3export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

step2:编辑文件 demo-openrc 并添加如下内容:

[root@controller ~]# vim demo-openrc [root@controller ~]# cat demo-openrc export OS_PROJECT_DOMAIN_NAME=defaultexport OS_USER_DOMAIN_NAME=defaultexport OS_PROJECT_NAME=demoexport OS_USERNAME=demoexport OS_PASSWORD=dmeoexport OS_AUTH_URL=http://controller:5000/v3 export OS_IDENTITY_API_VERSION=3export OS_IMAGE_API_VERSION=2

注意观察上面 两个用户 连接的是不同的端口,代表了demo和admin用户的权限不同。(如下图所示)
在这里插入图片描述
到此 我们的keystone的服务组件就配好了。刚才配置的所有信息都存在keystone数据库中,

顺便说一句:如有服务起不来,那就要排查 ,排查时要养成看日志的习惯,

[root@controller log]# cd keystone/[root@controller keystone]# lskeystone.log[root@controller keystone]# pwd/var/log/keystone[root@controller keystone]# grep ERROR keystone.log   ##查看错误日志 

四、镜像服务

1.镜像服务概览

在这里插入图片描述
镜像的源数据存在数据库中,为了安全起见,这里使用了一个G-r。

2.安装和配置

1.先决条件

(1)创建 glance 数据库并授予相应

CREATE DATABASE glance;GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \  IDENTIFIED BY 'glance';GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' \  IDENTIFIED BY 'glance';

在这里插入图片描述
(2)要创建服务证书

step1:创建glance用户用以和keystone对接做认证

openstack user create --domain default --password-prompt glance

这个glance是用来做集群间的组件调用的,用以和keystone做认证。

step2:添加 admin 角色到 glance 用户和 service 项目上。

openstack role add --project service --user glance admin

在这里插入图片描述
step3:创建glance服务实体:

openstack service create --name glance \  --description "OpenStack Image" image

step4:创建镜像服务的 API 端点:

openstack endpoint create --region RegionOne \  image public http://controller:9292openstack endpoint create --region RegionOne \  image internal http://controller:9292openstack endpoint create --region RegionOne \  image admin http://controller:9292

在这里插入图片描述
以上所有的配置都是存在数据库中的

2.安装配置组件

(1)安装软件包

yum install openstack-glance

(2)编辑文件 /etc/glance/glance-api.conf 并完成如下动作:

[database]connection = mysql+pymysql://glance:glance@controller/glance  ## 用于数据库访问[keystone_authtoken]    ##  用于keystone认证auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]flavor = keystone[glance_store]stores = file,httpdefault_store = filefilesystem_store_datadir = /var/lib/glance/images/

(3)编辑文件 /etc/glance/glance-registry.conf并完成如下动作:

[database]connection = mysql+pymysql://glance:glance@controller/glance[keystone_authtoken]auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = glancepassword = glance[paste_deploy]flavor = keystone

(4)写入镜像服务数据库

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

在这里插入图片描述
(5)设置开机自启动

# systemctl enable openstack-glance-api.service \  openstack-glance-registry.service# systemctl start openstack-glance-api.service \  openstack-glance-registry.service

在这里插入图片描述

3.验证操作

(1)下载源镜像

wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img

(2)使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它

openstack image create "cirros" \  --file cirros-0.3.4-x86_64-disk.img \  --disk-format qcow2 --container-format bare \  --public

在这里插入图片描述
(3)确认镜像的上传并验证属性:

openstack image list

在这里插入图片描述

五、计算服务(控制节点)

1.计算服务概览

2.安装并配置控制节点

(1)创建 nova_api 和 nova 数据库:

CREATE DATABASE nova_api;CREATE DATABASE nova;

(2)对数据库进行正确的授权

GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' IDENTIFIED BY 'nova';GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%'    IDENTIFIED BY 'nova';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost'    IDENTIFIED BY 'nova';GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%'    IDENTIFIED BY 'nova';

在这里插入图片描述
(3)创建服务证书,

step1:创建nova用户

openstack user create --domain default --password nova nova

step2:给 nova 用户添加 admin 角色

openstack role add --project service --user nova admin 

在这里插入图片描述
step3:创建 nova 服务实体

openstack service create --name nova --description "OpenStack Compute" compute

在这里插入图片描述
(4)创建 Compute 服务 API 端点

openstack endpoint create --region RegionOne \  compute public http://controller:8774/v2.1/%\(tenant_id\)sopenstack endpoint create --region RegionOne \  compute internal http://controller:8774/v2.1/%\(tenant_id\)sopenstack endpoint create --region RegionOne \  compute admin http://controller:8774/v2.1/%\(tenant_id\)s

在这里插入图片描述

3.安全并配置组件

(1)安装软件包:

yum install openstack-nova-api openstack-nova-conductor \  openstack-nova-console openstack-nova-novncproxy \  openstack-nova-scheduler

(2)编辑/etc/nova/nova.conf文件并完成下面的操作

## 在``[DEFAULT]``部分,只启用计算和元数据API:[DEFAULT]enabled_apis = osapi_compute,metadata## 在``[api_database]``和``[database]``部分,配置数据库的连接:[api_database]connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api[database]connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova## 在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列访问:[DEFAULT]rpc_backend = rabbit[oslo_messaging_rabbit]rabbit_host = controllerrabbit_userid = openstackrabbit_password = openstack##在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:[DEFAULT]auth_strategy = keystone[keystone_authtoken]auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = nova## 在 [DEFAULT 部分,配置``my_ip`` 来使用控制节点的管理接口的IP 地址。[DEFAULT]my_ip = 172.25.254.1## 在 [DEFAULT] 部分,使能 Networking 服务:[DEFAULT]use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver## 在``[vnc]``部分,配置VNC代理使用控制节点的管理接口IP地址 :[vnc]vncserver_listen = $my_ipvncserver_proxyclient_address = $my_ip## 在 [glance] 区域,配置镜像服务 API 的位置:[glance]api_servers = http://controller:9292## 在 [oslo_concurrency] 部分,配置锁路径:[oslo_concurrency]lock_path = /var/lib/nova/tmp

3.同步Compute 数据库

# su -s /bin/sh -c "nova-manage api_db sync" nova# su -s /bin/sh -c "nova-manage db sync" nova

在这里插入图片描述
在这里插入图片描述

4.完成安装

# systemctl enable openstack-nova-api.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-consoleauth.service openstack-nova-scheduler.service \  openstack-nova-conductor.service openstack-nova-novncproxy.service

六、计算服务(计算节点)

每当有新的节点加入openstack集群中,都要先配置一下环境

1.配置环境

1.配置计算节点的网络

vim /etc/hosts
在这里插入图片描述

[root@compute1 ~]# cd /etc/sysconfig/network-scripts/[root@compute1 network-scripts]# cp ifcfg-eth0 ifcfg-eth1[root@compute1 network-scripts]# vim ifcfg-eth1[root@compute1 network-scripts]# cat ifcfg-eth1BOOTPROTO=noneDEVICE=eth1ONBOOT=yes[root@compute1 network-scripts]# ifup eth1

2.网络事件协议

参考:官方文档

(1)安装软件包:

yum install chrony -y

(2)编辑/etc/chrony.conf 文件并注释除server 值外的所有内容。修改它引用控制节点:

server 172.25.254.50 iburst

(3)启动 NTP 服务并将其配置为随系统启动:

# systemctl enable chronyd.service# systemctl start chronyd.service

注意:计算节点只配置网络和时间同步协议 至于消息队列 、memcached等都旨在控制节点上配置

2.安装openstack包

将网络仓库从controller上复制到compute1上:

root@controller yum.repos.d]# scp openstack.repo compute1:/etc/yum.repos.d/

(1)安装软件包:

 yum install openstack-nova-compute -y

(2)编辑/etc/nova/nova.conf文件并完成下面的操作:
[DEFAULT] 和 [oslo_messaging_rabbit]部分,配置RabbitMQ消息队列的连接:

[DEFAULT]...rpc_backend = rabbit[oslo_messaging_rabbit]...rabbit_host = controllerrabbit_userid = openstackrabbit_password = openstack

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]...auth_strategy = keystone[keystone_authtoken]...auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = novapassword = nova

在 [DEFAULT] 部分,配置 my_ip 选项:

[DEFAULT]...my_ip = 172.25.254.2

在 [DEFAULT] 部分,使能 Networking 服务:

[DEFAULT]...use_neutron = Truefirewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]部分,启用并配置远程控制台访问:
[vnc]

enabled = Truevncserver_listen = 0.0.0.0vncserver_proxyclient_address = $my_ipnovncproxy_base_url = http://controller:6080/vnc_auto.html

在 [glance] 区域,配置镜像服务 API 的位置:

[glance]...api_servers = http://controller:9292

在 [oslo_concurrency] 部分,配置锁路径:

[oslo_concurrency]...lock_path = /var/lib/nova/tmp

3.完成安装

(1)确定您的计算节点是否支持虚拟机的硬件加速。

egrep -c '(vmx|svm)' /proc/cpuinfo

如果这个命令返回了 one or greater 的值,那么你的计算节点支持硬件加速且不需要额外的配置。

如果这个命令返回了 zero 值,那么你的计算节点不支持硬件加速。你必须配置 libvirt 来使用 QEMU 去代替 KVM,此时就要按照如下配置:

[root@compute1 yum.repos.d]# vim /etc/nova/nova.conf [libvirt]virt_type = qemu

(2)启动计算服务及其依赖,并将其配置为随系统自动启动:

# systemctl enable libvirtd.service openstack-nova-compute.service# systemctl start libvirtd.service openstack-nova-compute.service

4.验证操作

在控制节点上已经能看到计算节点成功启动,且状态为up

openstack compute service list

在这里插入图片描述
以后如果想往集群中加更多的节点,那就按照此步骤添加即可。

七、Networking 服务(控制节点)

参考官方文档:官方文档

1.先决条件

(1)完成下面的步骤以创建数据库

step1:连接数据库

[root@controller ~]# mysql -pEnter password: Welcome to the MariaDB monitor.

step2:创建neutron 数据库

CREATE DATABASE neutron;

step3:对neutron 数据库授予合适的访问权限 注意密码设置

GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \  IDENTIFIED BY 'neutron';GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \  IDENTIFIED BY 'neutron';

(2)要创建服务证书,完成这些步骤:

step1:创建neutron用户:

openstack user create --domain default --password neutron neutron

在这里插入图片描述
step2:添加admin 角色到neutron 用户:

openstack role add --project service --user neutron admin

step3:创建neutron服务实体:

openstack service create --name neutron \  --description "OpenStack Networking" network

在这里插入图片描述

(3)创建网络服务API端点

openstack endpoint create --region RegionOne \  network public http://controller:9696openstack endpoint create --region RegionOne \  network internal http://controller:9696openstack endpoint create --region RegionOne \  network admin http://controller:9696

在这里插入图片描述

2.配置网络选项

此处配置网络选项1:公共网络

(1)安装组件

yum install openstack-neutron openstack-neutron-ml2 \  openstack-neutron-linuxbridge ebtables

(2)配置服务组件
编辑/etc/neutron/neutron.conf 文件并完成如下操作:

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

[database]connection = mysql+pymysql://neutron:NEUTRON_DBPASS@controller/neutron

[DEFAULT]部分,启用ML2插件并禁用其他插件:

[DEFAULT]core_plugin = ml2service_plugins =

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:

[DEFAULT]rpc_backend = rabbit[oslo_messaging_rabbit]rabbit_host = controllerrabbit_userid = openstackrabbit_password = RABBIT_PASS

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]...auth_strategy = keystone[keystone_authtoken]...auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron

[DEFAULT][nova]部分,配置网络服务来通知计算节点的网络拓扑变化:

[DEFAULT]...notify_nova_on_port_status_changes = Truenotify_nova_on_port_data_changes = True[nova]...auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = novapassword = nova

在 [oslo_concurrency] 部分,配置锁路径:

[oslo_concurrency]...lock_path = /var/lib/neutron/tmp

(3)配置 Modular Layer 2 (ML2) 插件

编辑/etc/neutron/plugins/ml2/ml2_conf.ini文件并完成以下操作:

[ml2]部分,启用flat和VLAN网络:

[ml2]...type_drivers = flat,vlan

[ml2]部分,禁用私有网络:

[ml2]...tenant_network_types =

[ml2]部分,启用Linuxbridge机制:

[ml2]...mechanism_drivers = linuxbridge

[ml2] 部分,启用端口安全扩展驱动:

[ml2]...extension_drivers = port_security

[ml2_type_flat]部分,配置公共虚拟网络为flat网络

[ml2_type_flat]...flat_networks = provider

[securitygroup]部分,启用 ipset 增加安全组规则的高效性:

[securitygroup]...enable_ipset = True

(4)配置Linuxbridge代理

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:
[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来:

[linux_bridge]physical_interface_mappings = provider:eth1  ##告诉他虚拟机桥接的时候 用这个设备 

[vxlan]部分,禁止VXLAN覆盖网络:

[vxlan]enable_vxlan = False

[securitygroup]部分,启用安全组并配置 Linuxbridge iptables firewall driver:

[securitygroup]...enable_security_group = Truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

(5)配置DHCP代理 用于给云主机动态分配ip:

编辑/etc/neutron/dhcp_agent.ini文件并完成下面的操作:

[DEFAULT]部分,配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据

[DEFAULT]...interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriverdhcp_driver = neutron.agent.linux.dhcp.Dnsmasqenable_isolated_metadata = True

3.配置元数据代理

编辑/etc/neutron/metadata_agent.ini文件并完成以下操作:

[DEFAULT] 部分,配置元数据主机以及共享密码:

[DEFAULT]...nova_metadata_ip = controllermetadata_proxy_shared_secret = westos  ##定义一个密钥

4.为计算节点配置网络服务

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

[neutron]部分,配置访问参数,启用元数据代理并设置密码:

[neutron]...url = http://controller:9696auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutronservice_metadata_proxy = Truemetadata_proxy_shared_secret = METADATA_SECRET

5.完成安装

(1)网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini。如果超链接不存在,使用下面的命令创建它:

# ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini

(2)同步数据库:

 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

(3)重启计算API 服务:

systemctl restart openstack-nova-api.service  ##因为刚刚修改了nova的主配置文件 所以此处得重启该服务

(4)当系统启动时,启动 Networking 服务并配置它启动。

# 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

列一下刚刚启动的服务:

neutron agent-list

在这里插入图片描述

八、Networking 服务(计算节点)

1.安装组件

yum install openstack-neutron-linuxbridge ebtables ipset

2.配置通用组件

编辑/etc/neutron/neutron.conf 文件并完成如下操作:

[database] 部分,注释所有connection 项,因为计算节点不直接访问数据库。

在 “[DEFAULT]” 和 “[oslo_messaging_rabbit]”部分,配置 “RabbitMQ” 消息队列的连接:

[DEFAULT]...rpc_backend = rabbit[oslo_messaging_rabbit]...rabbit_host = controllerrabbit_userid = openstackrabbit_password = openstack

在 “[DEFAULT]” 和 “[keystone_authtoken]” 部分,配置认证服务访问:

[DEFAULT]...auth_strategy = keystone[keystone_authtoken]...auth_uri = http://controller:5000auth_url = http://controller:35357memcached_servers = controller:11211auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultproject_name = serviceusername = neutronpassword = neutron

在 [oslo_concurrency] 部分,配置锁路径:

[oslo_concurrency]...lock_path = /var/lib/neutron/tmp

3.网络配置

参考文档:`文档
配置Linuxbridge代理

编辑/etc/neutron/plugins/ml2/linuxbridge_agent.ini文件并且完成以下操作:

[linux_bridge]部分,将公共虚拟网络和公共物理网络接口对应起来:

[linux_bridge]physical_interface_mappings = provider:eth1

[vxlan]部分,禁止VXLAN覆盖网络:

[vxlan]enable_vxlan = False   

[securitygroup]部分,启用安全组并配置 Linuxbridge iptables firewall driver:

[securitygroup]...enable_security_group = Truefirewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

4.为计算节点配置网络服务

编辑/etc/nova/nova.conf文件并完成下面的操作:

[neutron] 部分,配置访问参数:

[neutron]...url = http://controller:9696auth_url = http://controller:35357auth_type = passwordproject_domain_name = defaultuser_domain_name = defaultregion_name = RegionOneproject_name = serviceusername = neutronpassword = neutron

5.完成安装

(1)重启计算服务:

systemctl restart openstack-nova-compute.service

(2)启动Linuxbridge代理并配置它开机自启动

# systemctl enable neutron-linuxbridge-agent.service# systemctl start neutron-linuxbridge-agent.service

验证一下neutron 代理是否成功

neutron agent-list

在这里插入图片描述

九、启动一个实例

暂时不开启图形,先用命令行的方式启用云服务:

1.设置公共网络

参考官方文档

(1)创建公用网络

云主机肯定是要接入网络的,所以要先创建网络

neutron net-create --shared --provider:physical_network provider \  --provider:network_type flat provider  ## 创建一个网络 类型为shared(共享) 名称为provider的物理网络[刚刚在配置文件中定义好的]   启用的网络类型有两种 (flat) 最后的provider是名称

在这里插入图片描述

(2)在provider网络上创建一个子网,

neutron subnet-create --name provider --allocation-pool start=172.25.254.100,end=172.25.254.200  --dns-nameserver 114.114.114.114 --gateway 172.25.254.50 provider 172.25.254.0/24

在这里插入图片描述

2.创建m1.nano规格的主机

默认的最小规格的主机需要512 MB内存。对于环境中计算节点内存不足4 GB的,我们推荐创建只需要64 MB的m1.nano规格的主机。若单纯为了测试的目的,请使用m1.nano规格的主机来加载CirrOS镜像

这里我们定义了一个云主机类型 id为0 1核的cpu 64兆 磁盘1G 命名为m1.nano

[root@controller ~]#  openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

在这里插入图片描述
当然,云主机类型有很多 但是此时我们是为了测试,且cirros镜像才13M 所以刚刚的配置足矣。

在这里插入图片描述

3.生成一个键值对

大部分云镜像支持公共密钥认证而不是传统的密码认证。在启动实例前,你必须添加一个公共密钥到计算服务。

(1)导入租户demo的凭证

[root@controller ~]# source demo-openrc 

(2)生成和添加秘钥对:

ssh-keygen -q -N ""  ## 生成密钥对openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey  ## 添加密钥对  命名为mykey。通过密钥对 在启动云主机的时候 它可以自动帮我们实现免密 他可以帮我们把公钥注入到云主机里面再启动

在这里插入图片描述

4.增加安全组规则

其实就是防火墙 ,就是你这个云主机谁可以访问 谁不可以访问,开哪个端口,
默认情况下, default安全组适用于所有实例并且包括拒绝远程访问实例的防火墙规则。对诸如CirrOS这样的Linux镜像,我们推荐至少允许ICMP (ping) 和安全shell(SSH)规则。

(1)添加规则到 default 安全组。

允许 ICMP (ping)

openstack security group rule create --proto icmp default  

允许安全 shell (SSH) 的访问:

openstack security group rule create --proto tcp --dst-port 22 default

在这里插入图片描述

5.在公有网络上创建实例

(1)确定实例选项

参考官方文档:在公有网络上创建实例

列出可用类型

openstack flavor list

列出可用镜像

openstack image list

列出可用网络

openstack network list

列出可用的安全组

openstack security group list

在这里插入图片描述
(2)创建实例

openstack server create --flavor m1.nano --image cirros --nic net-id=f882b656-7575-4c4e-9f1c-7e63dc35eccf --security-group default --key-name mykey provider-instance

在这里插入图片描述
检查实例的状态
在这里插入图片描述

6.使用虚拟控制台访问实例

它提供了一个url用以访问云平台

openstack console url show provider-instance

在这里插入图片描述
由于给的url中是controller 所以需要解析

在真机上:vim/etc/hosts
172.25.254.1 controller

测试:
在这里插入图片描述


参考文章:https://blog.csdn.net/weixin_44717560/article/details/124100721

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,在此表示感谢。

特别提醒:

1、请用户自行保存原始数据,为确保安全网站使用完即被永久销毁,如何人将无法再次获取。

2、如果上次文件较大或者涉及到复杂运算的数据,可能需要一定的时间,请耐心等待一会。

3、请按照用户协议文明上网,如果发现用户存在恶意行为,包括但不限于发布不合适言论妄图

     获取用户隐私信息等行为,网站将根据掌握的情况对用户进行限制部分行为、永久封号等处罚。

4、如果文件下载失败可能是弹出窗口被浏览器拦截,点击允许弹出即可,一般在网址栏位置设置

5、欢迎将网站推荐给其他人,网站持续更新更多功能敬请期待,收藏网站高效办公不迷路。

      



登录后回复

共有0条评论