Openstack O 版本搭建攻略

其他服务:

 

 

 

 

前言

Openstack项目是一个开源云计算平台,支持所有类型的云环境。该项目旨在实现简单的实现,巨大的可扩展性和丰富的功能集。来自世界各地的云计算专家为该项目做出了贡献。

OpenStack通过各种补充服务提供基础设施服务(Iaas)解决方案。每个服务都提供一个应用程序编程接口(API)以促进这种集成。

本指南介绍了使用功能示例架构逐步部署主要的OpenStack服务,该架构适合具有足够Linux经验的OpenStack新用户。本指南不用于生产系统安装,而是创建最小的概念验证,以便了解OpenStack。

在你对基础安装,配置,操作和故障诊断熟悉之后,你应该考虑按照以下步骤使用生产架构来进行部署

  • 确定并补充必要的核心和可选服务,以满足性能和冗余要求。
  • 使用诸如防火墙,加密和服务策略的方式来加强安全。
  • 使用自动化部署工具,例如Ansible, Chef, Puppet, or Salt来自动化部署,管理生产环镜

实列的架构:

为了启动一个基本 :term:'virtual machine <virtual machine (VM)>'或者实例,这个示例架构要求至少两个节点(主机)。诸如块存储和对象存储这样的可选服务需要额外的节点。

本指南中使用的示例体系结构是最低配置,不适用于生产系统安装。它旨在提供最低限度的概念验证,以便了解OpenStack。有关为特定用例创建体系结构或如何确定所需的体系结构的信息。

这个示例架构不同于下面这样的最小生产结构:

  • 网络代理驻留在控制节点上而不是在一个或者多个专用的网络节点上。
  • 私有网络的覆盖流量通过管理网络而不是专用网络

硬件要求

控制器

控制器节点运行标识服务、映像服务、计算的管理部分、网络的管理部分、各种网络代理和仪表板。它还包括 SQL 数据库、消息队列和 NTP 等支持服务。

(可选)控制器节点运行块存储、对象存储、业务流程和遥测服务的某些部分。

计算节点上需要至少两块网卡。

计算

计算节点运行操作实例的 :term:'hypervisor'计算部分。默认情况下使用 :term:'KVM <kernel-based VM (KVM)>'作为hypervisor。计算节点同样运行网络服务代理,用来连接实例到虚拟网络,通过:term:'security groups <security group>'为实例提供防火墙服务。实例通过 。

你可以部署超过一个计算节点。每个结算节点至少需要两块网卡。

块设备存储

可选的块存储节点上包含了磁盘,块存储服务和共享文件系统会向实例提供这些磁盘。

为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。

你可以部署超过一个块存储节点。每个块存储节点要求至少一块网卡。

对象存储

可选的对象存储节点包含了磁盘。对象存储服务用这些磁盘来存储账号,容器和对象。

为了简单起见,计算节点和本节点之间的服务流量使用管理网络。生产环境中应该部署一个单独的存储网络以增强性能和安全。

这个服务要求两个节点。每个节点要求最少一块网卡。你可以部署超过两个对象存储节点。

提供者网络

此选项缺少对自助服务(专用)网络、第 3 层(路由)服务以及高级服务(如 LBaaS和FWaaS)的支持。如果需要这些功能,请考虑下面的自助服务网络选项。

安全

下表提供了需要密码的服务列表及其在指南中的关联引用。

密码
密码名称描述
数据库密码(不能使用变量)数据库的根密码
ADMIN_PASSadmin用户密码
CINDER_DBPASS块设备存储服务的数据库密码
CINDER_PASS块设备存储服务的 密码cinder
DASH_DBPASS仪表板的数据库密码
DEMO_PASSdemo用户的密码
GLANCE_DBPASS镜像服务的数据库密码
GLANCE_PASS镜像服务的 用户密码glance
KEYSTONE_DBPASS认证服务的数据库密码
METADATA_SECRET元数据代理的机密
NEUTRON_DBPASS网络服务的数据库密码
NEUTRON_PASS网络服务的 用户密码neutron
NOVA_DBPASS计算服务的数据库密码
NOVA_PASS计算服务中''nova''用户的密码
PLACEMENT_PASS放置服务用户的密码placement
RABBIT_PASSRabbitMQ的guest User密码

OpenStack 和支持服务在安装和操作期间需要管理权限。在某些情况下,服务对主机执行修改,这可能会干扰部署自动化工具,如 Ansible、Chef 和 Puppet。例如,某些 OpenStack 服务添加了根包装器,这可能会干扰安全策略。

网络服务采用内核网络参数的默认值并修改防火墙规则。为避免在初始安装期间出现大多数问题,我们建议在主机上使用受支持发行版的库存部署。但是,如果选择自动部署主机,请在继续操作之前查看应用于它们的配置和策略。

五台主机基本配置

  1. 五台虚拟机分别为:controller,compute ,cinder,swift1,swift2四台虚拟机的时区改为上海!
    ♦分别修改控制节点,计算节点,存储节点,对象存储节点一,对象存储节点二的名字

    hostnamectl set-hostname controller          控制节点
    hostnamectl set-hostname compute1             计算节点
    hostnamectl set-hostname cinder               存储节点
    hostnamectl set-hostname swift                对象存储节点一
    hostnamectl set-hostname swift2               对象存储节点二
  2. 五台主机都需要修改/etc/sysconfig/network-scripts/ifcfg-ens33 底下的文件内容
    注意::有的就修改没有的就添加

    BOOTPROTO=static
    ONBOOT=yes
    IPADDR=IP地址
    NETMASK=子网掩码
    GATEWAY=网关
    DNS1=114.114.114.114
    DNS2=8.8.8.8
  3. 五台主机都需要关闭防火墙和开机自动停
    systemctl disable firewalld;systemctl stop firewalld

    五台主机都需要编辑/etc/hosts  配置名称解析,文件包含以下内容:

    192.168.20.50       controller
    192.168.20.55       compute1                     IP地址都是自己设置的哦!
    192.168.20.60       cinder
    192.168.20.65       swift1
    192.168.20.70       swift2

    一些发行版本在''/etc/hosts''文件中添加了附加条目解析实际主机名到另一个IP地址如 。为了防止域名解析问题,你必须注释或者删除这些条目。不要删除127.0.0.1条目。127.0.1.1
  4. 五台主机都需要修改/etc/selinux/config 文件,关闭安全策略

    在使用命令关闭

    setenforce 0
    
    getenforce

计算节点,控制节点,存储节点,对象存储节点一,对象存储节点二配置

  1. 五台节点都需要安装基本的工具软件

    yum install vim net-tools tree lrzsz bash-completion wget -y
  2. 五台节点需要修改yum.repos.d里面的文件 提前查看版本我的是7.6-1810的
    cat /etc/redhat-release       查看版本
    
    cd /etc/yum.repos.d/          进入目录
    
    mkdir bak                     创建bak文件夹
    
    mv *.repo bak/                将所有文件转到bak里面
    
    touch CentOS-Base.repo        创建CentOS-Base.repo文本
    
    vim CentOS-Base.repo          进去添加信息
  3.  五台节点都需要需要添加的yum源

    [CentOS-Base]
    name=CentOS-Base
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/os/x86_64/
    enabled=1
    gpgcheck=0
    
    [CentOS-Updates]
    name=CentOS-Updates
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/updates/x86_64/
    enabled=1
    gpgcheck=0
    
    [CentOS-Extras]
    name=CentOS-Extras
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/extras/x86_64/
    enabled=1
    gpgcheck=0

  4. 五台节点都需要查看仓库仓库是否正常

    yum makecache
    
    yum repolist

时间服务器

  1. 控制节点配置时间服务器--下载时间服务

    yum install chrony -y

     修改/etc/chrony.conf 里面的内容

    server ntp3.aliyun.com iburst

    allow all

  2. 重新启动时间服务器
    systemctl enable chronyd.service ;systemctl start chronyd.service
    chronyc sources         查看时间同步

  3. 计算节点配置--下载时间服务器

    yum install chrony -y

     修改/etc/chrony.conf 里面的内容

    server controller iburst

  4. 重新启动时间服务器

    systemctl enable chronyd.service ;systemctl start chronyd.service
    chronyc sources         查看时间同步

  5.  存储节点配置--下载时间服务器

    yum install chrony -y

     修改/etc/chrony.conf 里面的内容

    server controller iburst
  6. 重新启动时间服务器
    systemctl enable chronyd.service ;systemctl start chronyd.service
    chronyc sources          查看时间同步

  7. 对象存储节点一,和二配置--下载时间服务器#两个配置都一样

    yum install chrony -y

    修改/etc/chrony.conf 里面的内容

    server controller iburst

    重新启动时间服务器

    systemctl enable chronyd.service ;systemctl start chronyd.service
    chronyc sources 查看时间同步

  8. 五台节点都需要安装openstack仓库的包

    yum install centos-release-openstack-ocata -y
  9. 五台节点算都需要配置openstack yum源
    进入/etc/yum.repos.d/ 文件底下

    vim CentOS-Ceph-Jewel.repo
    
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/storage/x86_64/ceph-jewel/


    vim CentOS-QEMU-EV.repo
    
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/virt/x86_64/kvm-common/

    vim CentOS-OpenStack-ocata.repo
    
    baseurl=https://mirror.tuna.tsinghua.edu.cn/centos-vault/7.6.1810/cloud/x86_64/openstack-ocata/

    五台节点都需要检查仓库是否正常

    yum makecache
    
    yum repolist

五个节点都需要安装依赖源

yum install python-openstackclient openstack-selinux -y

mysql安装---控制节点安装

1,安装数据库

yum install mariadb mariadb-server python2-PyMySQL -y

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

[mysqld]
bind-address = 控制节点IP地址
default-storage-engine = innodb
innodb_file_per_table = on
max_connections = 4096
collation-server = utf8_general_ci
character-set-server = utf8

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

systemctl enable mariadb.service ;systemctl start mariadb.service

4,初始化数据库

mysql_secure_installation        回车,n,y,y,y,y

消息队列---控制节点安装

yum install rabbitmq-server -y

启动消息队列服务并将其配置为随系统启动:

systemctl enable rabbitmq-server.service ;systemctl start rabbitmq-server.service

添加 openstack 用户:

rabbitmqctl add_user openstack RABBIT_PASS

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

安装缓存服务:

yum install memcached python-memcached -y

修改 /etc/sysconfig/memcached 配置文件

启动Memcached服务,并且配置它随机启动。

systemctl enable memcached.service ;systemctl start memcached.service

keystone安装---控制节点

进入数据库创建keystone:

CREATE DATABASE keystone;

对``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服务:

yum install openstack-keystone httpd mod_wsgi -y

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

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

[token]
# ...
provider = fernet

初始化身份认证服务的数据库:

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

初始化Fernet key:

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

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

引导标识服务:

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

编辑/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

创建并且编辑admin账户创建文档进去admin编写下方代码:

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:35357/v3
export OS_IDENTITY_API_VERSION=3

创建``service``项目:

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

创建``demo`` 项目:

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

创建``demo`` 用户:

openstack user create --domain default \
--password DEMO_PASS demo

创建 user 角色:

openstack role create user

将用户角色添加到演示项目的演示用户:

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

作为 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 --os-password ADMIN_PASS token issue

作为``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 --os-password DEMO_PASS token issue

创建admin_pass脚本并编写:

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:35357/v3
export OS_IDENTITY_API_VERSION=3
export OS_IMAGE_API_VERSION=2

创建demo_pass脚本并编写:

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

加载``admin-pass``文件来身份认证服务的环境变量位置和``admin``项目和用户证书:

. admin_pass

请求认证令牌:

openstack token issue

glance服务---控制控制节点配置

进入数据库创建 glance 服务:

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

创建 glance 用户:

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

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

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

创建``glance``服务实体:

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

创建镜像服务的 API 端点:

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


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


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

安装glance软件包:

yum install openstack-glance -y

编辑文件 /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

[paste_deploy]
# ...
flavor = keystone

[glance_store]
# ...
stores = file,http
default_store = file
filesystem_store_datadir = /var/lib/glance/images/

编辑文件/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

[paste_deploy]
# ...
flavor = keystone

写入镜像服务数据库:

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

启动镜像服务并将其配置为随机启动:

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

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

下载源镜像:

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

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

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

确认镜像的上传并验证属性:

openstack image list

nova服务配置---控制节点配置

进入数据库创建nova数据库:

CREATE DATABASE nova_api;

CREATE DATABASE nova;

CREATE DATABASE nova_cell0;

对数据库进行正确的授权:

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

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

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'localhost' \
IDENTIFIED BY 'NOVA_DBPASS';

GRANT ALL PRIVILEGES ON nova_cell0.* TO 'nova'@'%' \
IDENTIFIED BY 'NOVA_DBPASS';

创建 nova 用户:

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

给 nova 用户添加 admin 角色:

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

创建 nova 服务实体:

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

创建计算 API 服务终结点:

openstack endpoint create --region RegionOne \
compute public http://controller:8774/v2.1

openstack endpoint create --region RegionOne \
compute internal http://controller:8774/v2.1

openstack endpoint create --region RegionOne \
compute admin http://controller:8774/v2.1

PLACEMENT_PASS创建放置服务用户:

openstack user create --domain default --password PLACEMENT_PASS placement

将 Placement 用户添加到具有管理员角色的服务项目中:

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

在服务目录中创建放置 API 条目:

openstack service create --name placement --description "Placement API" placement

创建放置 API 服务终端节点:

openstack endpoint create --region RegionOne placement public http://controller:8778

openstack endpoint create --region RegionOne placement internal http://controller:8778

openstack endpoint create --region RegionOne placement admin http://controller:8778

安装nova软件包:

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

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

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

[api_database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api

[database]
# ...
connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[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

[DEFAULT]
# ...
my_ip = 控制节点IP地址

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]
enabled = true
vncserver_listen = $my_ip
vncserver_proxyclient_address = $my_ip

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

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

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS

解决bug在 /etc/httpd/conf.d/00-nova-placement-api.conf 里面:

<Directory /usr/bin>
   <IfVersion >= 2.4>
      Require all granted
   </IfVersion>
   <IfVersion < 2.4>
      Order allow,deny
      Allow from all
   </IfVersion>
</Directory>

重新启动httpd:

systemctl restart httpd

填充 nova-api 数据库:

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

su -s /bin/sh -c "nova-manage cell_v2 map_cell0" nova

su -s /bin/sh -c "nova-manage cell_v2 create_cell --name=cell1 --verbose" nova

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

验证 nova 单元格 0 和单元格 1 是否已正确注册:

nova-manage cell_v2 list_cells

启动 Compute 服务并将其设置为随系统启动:

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

nova服务配置---计算节点配置

安装nova软件包:

yum install openstack-nova-compute -y

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

[DEFAULT]
# ...
enabled_apis = osapi_compute,metadata

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[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

[DEFAULT]
# ...
my_ip = 计算节点的IP地址

[DEFAULT]
# ...
use_neutron = True
firewall_driver = nova.virt.firewall.NoopFirewallDriver

[vnc]
# ...
enabled = True
vncserver_listen = 0.0.0.0
vncserver_proxyclient_address = $my_ip
novncproxy_base_url = http://controller:6080/vnc_auto.html

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

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

[placement]
# ...
os_region_name = RegionOne
project_domain_name = Default
project_name = service
auth_type = password
user_domain_name = Default
auth_url = http://controller:35357/v3
username = placement
password = PLACEMENT_PASS

确定您的计算节点是否支持虚拟机的硬件加速。如为零配置

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

在 /etc/nova/nova.conf 文件的 [libvirt] 区域做出如下的编辑:

[libvirt]
# ...
virt_type = qemu

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

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

systemctl start libvirtd.service openstack-nova-compute.service
  • 切换到控制节点进行验证

    openstack hypervisor list

发现计算主机:

su -s /bin/sh -c "nova-manage cell_v2 discover_hosts --verbose" nova

列出服务组件,以验证是否成功启动并注册了每个进程:

openstack compute service list

列出身份认证服务中的 API 端点来验证身份认证服务的连通性:

openstack catalog list

列出影像服务中的图像以验证与影像服务的连通性:

openstack image list

neutron网络服务---控制节点配置

进入数据库创建neutron

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

创建``neutron``用户:

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

添加``admin`` 角色到``neutron`` 用户:

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

创建``neutron``服务实体:

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

创建网络服务API端点:

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

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

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

安装neutron组件

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

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

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

[DEFAULT]
# ...
core_plugin = ml2
service_plugins =

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[DEFAULT]
# ...
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 = neutron
password = NEUTRON_PASS

[DEFAULT]
# ...
notify_nova_on_port_status_changes = true
notify_nova_on_port_data_changes = true

[nova]
# ...
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = nova
password = NOVA_PASS

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

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

[ml2]
# ...
type_drivers = flat,vlan

[ml2]
# ...
tenant_network_types =

[ml2]
# ...
mechanism_drivers = linuxbridge

[ml2]
# ...
extension_drivers = port_security

[ml2_type_flat]
# ...
flat_networks = provider

[securitygroup]
# ...
enable_ipset = true

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

[linux_bridge]
physical_interface_mappings = provider:ens33

[vxlan]
enable_vxlan = false

[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

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

[DEFAULT]
# ...
interface_driver = linuxbridge
dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
enable_isolated_metadata = true

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

[DEFAULT]
# ...
nova_metadata_ip = controller
metadata_proxy_shared_secret = METADATA_SECRET

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

[neutron]
# ...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS
service_metadata_proxy = true
metadata_proxy_shared_secret = METADATA_SECRET

配置软连接:

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

同步数据库:

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


重启计算API 服务:

systemctl restart openstack-nova-api.service

当系统启动时,启动 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网络服务---计算节点配置

安装组件:

yum install openstack-neutron-linuxbridge ebtables ipset -y

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

[DEFAULT]
# ...
transport_url = rabbit://openstack:RABBIT_PASS@controller

[DEFAULT]
# ...
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 = neutron
password = NEUTRON_PASS

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

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

[neutron]
# ...
url = http://controller:9696
auth_url = http://controller:35357
auth_type = password
project_domain_name = default
user_domain_name = default
region_name = RegionOne
project_name = service
username = neutron
password = NEUTRON_PASS

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

[linux_bridge]
physical_interface_mappings = provider:ens33

[vxlan]
enable_vxlan = false

[securitygroup]
# ...
enable_security_group = true
firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver

重启计算服务:

systemctl restart openstack-nova-compute.service

启动Linuxbridge代理并配置它开机自启动:

systemctl enable neutron-linuxbridge-agent.service

systemctl start neutron-linuxbridge-agent.service

切换到控制节点验证

列出加载的扩展来验证``neutron-server``进程是否正常启动:

openstack extension list --network

列出代理以验证启动 neutron 代理是否成功:

openstack network agent list

dashboard仪表盘配置---控制节点配置

安装软件包:

yum install openstack-dashboard -y

编辑文件 /etc/openstack-dashboard/local_settings 并完成如下动作:

OPENSTACK_HOST = "controller"

ALLOWED_HOSTS = ['*']

SESSION_ENGINE = 'django.contrib.sessions.backends.cache'

CACHES = {
    'default': {
         'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
         'LOCATION': 'controller:11211',
    }
}

OPENSTACK_KEYSTONE_URL = "http://%s:5000/v3" % OPENSTACK_HOST

OPENSTACK_KEYSTONE_MULTIDOMAIN_SUPPORT = True

OPENSTACK_API_VERSIONS = {
    "identity": 3,
    "image": 2,
    "volume": 3,
}

OPENSTACK_KEYSTONE_DEFAULT_DOMAIN = "Default"

OPENSTACK_KEYSTONE_DEFAULT_ROLE = "user"

OPENSTACK_NEUTRON_NETWORK = {
    ...
    'enable_router': False,
    'enable_quotas': False,
    'enable_distributed_router': False,
    'enable_ha_router': False,
    'enable_lb': False,
    'enable_firewall': False,
    'enable_vpn': False,
    'enable_fip_topology_check': False,
}

TIME_ZONE = "Asia/Shanghai"

WEBROOT = '/dashboard'

重启web服务器以及会话存储服务:

systemctl restart httpd.service memcached.service

在浏览器中输入 ``http://控制节点IP地址/dashboard``访问仪表盘。

启动一个实例---控制节点操作

在控制节点上,获得 admin 凭证来获取只有管理员能执行的命令的访问权限:

. admin_pass 

创建网络:

openstack network create  --share --external \
--provider-physical-network provider \
--provider-network-type flat provider

在网络上创建一个子网:

openstack subnet create --network provider \
--allocation-pool start=192.168.20.101,end=192.168.20.250 \
--dns-nameserver 114.114.114.114 --gateway 192.168.20.2 \
--subnet-range 192.168.20.0/24 provider

创建m1.nano类型

openstack flavor create --id 0 --vcpus 1 --ram 64 --disk 1 m1.nano

生成密钥对并添加公钥:

ssh-keygen -q -N ""

openstack keypair create --public-key ~/.ssh/id_rsa.pub mykey

验证公钥的添加:

openstack keypair list

添加规则到 default 安全组。

openstack security group rule create --proto icmp default

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

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

列出可用类型:

openstack flavor list

列出可用镜像:

openstack image list

列出可用网络:

openstack network list

列出可用的安全组:

openstack security group list

使用``provider``公有网络的ID替换``PUBLIC_NET_ID``。

openstack server create --flavor m1.nano --image cirros \
--nic net-id=PROVIDER_NET_ID --security-group default \
--key-name mykey provider-instance

检查实例的状态:

openstack server list

获取你势力的 Virtual Network Computing (VNC) 会话URL并从web浏览器访问它:

openstack console url show provider-instance

进去发现实例键盘用不了 解决bug 进去计算节点编辑nova.conf 文件

[libvirt] 
... 
cpu_mode = none 
virt_type = qemu
  • 然后重启nova:
systemctl restart openstack-nova-compute
  • 进入网页访问自己创建的实例:

版权声明:
作者:小李
链接:https://xianshengli.cc/openstack-o-%e7%89%88%e6%9c%ac%e6%90%ad%e5%bb%ba%e6%94%bb%e7%95%a5/
来源:先生不吃香菜
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
打赏
海报
Openstack O 版本搭建攻略
其他服务: 《Openstack 块存储服务》   《Openstack 对象存储服务》   《Openstack 编排服务》   《Opensatck 数据收集服务》  ……
文章目录
关闭
目 录