• openstack-mitaka(二) 基于vmware的搭建


    目录

    一、vmware的环境

     二、配置节点

    三、核心组件安装

    3.1 搭建安全认证服务

     3.2 搭建镜像服务

    3.3 搭建计算节点

    3.4 搭建网络NetWorking


    一、vmware的环境

    单点部署 all-in-one模式:

            rhel7.6虚拟机,至少4G的内存;

            双网卡: eth0: 192.168.19.71 访问Horizon使用,eth1:激活但不分配ip,neutron使用,云主机访问外网用;

            禁用selinux和firewalld;

            虚拟机的cpu需要支持kvm虚拟化,CPU 设为直通模式( host-passthrough 是为了虚拟机里支持 kvm 硬件虚拟化)

     二、配置节点

    官网:OpenStack Docs: 环境

    设置控制节点:

    1. ##设置地址解析
    2. vim /etc/hosts
    3. -----------------------------
    4. 192.168.19.71 server1 controller
    5. 192.168.19.72 server2 computer1
    6. 192.168.19.73 server3 block1
    7. -----------------------------
    8. # 两块网卡的设置
    9. 一块网卡eth33给了ip,另一块网卡eth38(用于云主机通信)可以不给ip,但需要激活
    10. ##文件配置完成后,激活
    11. [root@server1 network-scripts]# ifup ens38
    12. ##时间同步:--所有节点的时间必须与控制节点的时间相同
    13. ----------------------
    14. server ntp1.aliyun.com iburst
    15. server ntp2.aliyun.com iburst
    16. server ntp3.aliyun.com iburst
    17. ...
    18. allow 192.168.19.0/16 --允许以下网段的NTP客户端访问
    19. ----------------------
    20. ##启动服务 ----使用timedatectl设置时区--timedatectl set-timezone Asia/Shanghai
    21. systemctl enable --now chronyd
    22. ##在节点上同样配置服务,此时的时间同步地址为控制节点主机
    23. ----------------------
    24. server 192.168.19.71 iburst
    25. ----------------------
    26. ##两台主机上分别配置openstack的源
    27. vim /etc/yum.repo.d/openstack.repo
    28. --------------------
    29. [centotack-rocky]
    30. name=openstack-recky
    31. baseurl=https://mirrors.aliyun.com/centos/7/cloud/x86_64/openstack-rocky/
    32. enabled=1
    33. gpgcheck=0
    34. [qemu-kvm]
    35. name=qemu-kvm
    36. baseurl=https://mirrors.aliyun.com/centos/7/virt/x86_64/kvm-common/
    37. enabled=1
    38. gegcheck=0
    39. --------------------
    40. ##对yum源进行更新--升级电脑中的安装包
    41. yum update
    1. ##yum源
    2. # CentOS-Base.repo
    3. [base]
    4. name=CentOS-$releasever - Base - mirrors.aliyun.com
    5. failovermethod=priority
    6. baseurl=http://mirrors.aliyun.com/centos/7/os/x86_64/
    7. gpgcheck=1
    8. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    9. #released updates
    10. [updates]
    11. name=CentOS-$releasever - Updates - mirrors.aliyun.com
    12. failovermethod=priority
    13. baseurl=http://mirrors.aliyun.com/centos/7/updates/x86_64/
    14. gpgcheck=1
    15. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    16. #additional packages that may be useful
    17. [extras]
    18. name=CentOS-$releasever - Extras - mirrors.aliyun.com
    19. failovermethod=priority
    20. baseurl=http://mirrors.aliyun.com/centos/7/extras/x86_64/
    21. gpgcheck=1
    22. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    23. #additional packages that extend functionality of existing packages
    24. [centosplus]
    25. name=CentOS-$releasever - Plus - mirrors.aliyun.com
    26. failovermethod=priority
    27. baseurl=http://mirrors.aliyun.com/centos/7/centosplus/x86_64/
    28. gpgcheck=1
    29. enabled=0
    30. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
    31. #contrib - packages by Centos Users
    32. [contrib]
    33. name=CentOS-$releasever - Contrib - mirrors.aliyun.com
    34. failovermethod=priority
    35. baseurl=http://mirrors.aliyun.com/centos/7/contrib/x86_64/
    36. gpgcheck=1
    37. enabled=0
    38. gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

     

     

     

     

     

    1. ##安装openstack
    2. #安装客户端
    3. yum install python-openstackclient
    4. #自动管理 OpenStack 服务的安全策略:
    5. yum install openstack-selinux
    6. #安装数据库
    7. yum install mariadb mariadb-server python2-PyMySQL
    8. ##创建并编辑 /etc/my.cnf.d/openstack.cnf
    9. ---------------------------------------
    10. [mysqld]
    11. bind-address = 192.168.19.71 --控制节点IP
    12. default-storage-engine = innodb
    13. innodb_file_per_table
    14. max_connections = 4096
    15. collation-server = utf8_general_ci
    16. character-set-server = utf8
    17. ~
    18. ---------------------------------------
    19. ##设置数据库启动,并开机自启
    20. systemctl enable --now mariadb.service
    21. ##初始化数据库的安全
    22. mysql_secure_installation ---为数据库的root用户设置一个适当的密码(全选yes
    23. ##配置消息队列
    24. --OpenStack 使用 message queue (消息队列)协调操作和各服务的状态信息。
    25. yum install rabbitmq-server
    26. systemctl enable --now rabbitmq-server.service
    27. ##设置消息队列的openstack用户
    28. rabbitmqctl add_user openstack openstack
    29. ##设置消息队列中openstack的权限
    30. rabbitmqctl set_permissions openstack ".*" ".*" ".*"
    31. ##查看rabbitmq的插件
    32. rabbitmq-plugins list
    33. ##激活管理插件
    34. rabbitmq-plugins enable rabbitmq_management
    35. ##查看端口
    36. netstat -anltupe ---5672为主端口,15672为web端口
    37. ##登陆页面,默认用户名和密码都是guest
    38. 192.168.19.71:15672
    39. ##设置安全组件:Memcached缓存令牌。缓存服务memecached运行在控制节点
    40. yum install memcached python-memcached
    41. systemctl enable --now memcached.service
    42. ##检查端口为11211(可以看到这个端口只监听本机,那么其他主机将无法连接它),因此需要变更一下
    43. netstat -antpl | grep 11211
    44. vim /etc/sysconfig/memcached
    45. ------------------------------------
    46. PORT="11211"
    47. USER="memcached"
    48. MAXCONN="1024"
    49. CACHESIZE="64"
    50. OPTIONS="-l *"
    51. ------------------------------------

    【注】消息队列服务一般运行在控制节点上。OpenStack支持好几种消息队列服务包括 RabbitMQ, Qpid, 和 ZeroMQ。不过,大多数发行版本的OpenStack包支持特定的消息队列服务;
    这里安装 RabbitMQ 消息队列服务,因为大部分发行版本都支持它。

     

     

     

     

     

     

     

     

    三、核心组件安装

    3.1 搭建安全认证服务

    1. ##组件认证服务安装
    2. 1 创建数据库
    3. --控制节点上安装和配置OpenStack身份认证服务,代码名称keystone。出于性能原因,这个配置部署Fernet令牌和Apache HTTP服务处理请求;
    4. --在配置 OpenStack 身份认证服务前,必须创建一个数据库和管理员令牌
    5. ##用数据库连接客户端以 root 用户连接到数据库服务器;创建 keystone 数据库,并设置相应的权限
    6. [root@controller my.cnf.d]# mysql -u root -p
    7. > CREATE DATABASE keystone;
    8. > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'localhost' \
    9. IDENTIFIED BY 'keystone';
    10. > GRANT ALL PRIVILEGES ON keystone.* TO 'keystone'@'%' \
    11. IDENTIFIED BY 'keystone';
    12. ##推出,登录测试
    13. mysql -ukeystone -pkeystone
    14. > show databases;
    15. ##生成一个随机值在初始的配置中作为管理员的令牌。
    16. openssl rand -hex 10
    17. ##安装安全组件
    18. yum install openstack-keystone httpd mod_wsgi -y
    19. ##编辑文件 /etc/keystone/keystone.conf
    20. --------------------------------------------
    21. [DEFAULT]
    22. ...
    23. admin_token = 26384039124a82cfbee6
    24. [database]
    25. ...
    26. connection = mysql+pymysql://keystone:keystone@controller/keystone
    27. [token]
    28. ...
    29. provider = fernet
    30. --------------------------------------------
    31. #初始化身份认证服务的数据库(以keystone用户身份来同步数据库)
    32. su -s /bin/sh -c "keystone-manage db_sync" keystone --keystone 是主机中的用户身份
    33. ##登录数据库,查看同步的数据
    34. mysql -ukeystone -pkeystone
    35. >show databases;
    36. >use keystone;
    37. >show tables;
    38. ##初始化Fernet keys
    39. keystone-manage fernet_setup --keystone-user keystone --keystone-group keystone
    40. ##编辑Apache主配置文件/etc/httpd/conf/httpd.conf ,配置ServerName 选项为控制节点
    41. ------------------
    42. ServerName controller
    43. ------------------
    44. ##配置文件/etc/httpd/conf.d/wsgi-keystone.conf
    45. ---------------------------------------------------------
    46. Listen 5000
    47. Listen 35357
    48. WSGIDaemonProcess keystone-public processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    49. WSGIProcessGroup keystone-public
    50. WSGIScriptAlias / /usr/bin/keystone-wsgi-public
    51. WSGIApplicationGroup %{GLOBAL}
    52. WSGIPassAuthorization On
    53. ErrorLogFormat "%{cu}t %M"
    54. ErrorLog /var/log/httpd/keystone-error.log
    55. CustomLog /var/log/httpd/keystone-access.log combined
    56. Require all granted
    57. WSGIDaemonProcess keystone-admin processes=5 threads=1 user=keystone group=keystone display-name=%{GROUP}
    58. WSGIProcessGroup keystone-admin
    59. WSGIScriptAlias / /usr/bin/keystone-wsgi-admin
    60. WSGIApplicationGroup %{GLOBAL}
    61. WSGIPassAuthorization On
    62. ErrorLogFormat "%{cu}t %M"
    63. ErrorLog /var/log/httpd/keystone-error.log
    64. CustomLog /var/log/httpd/keystone-access.log combined
    65. Require all granted
    66. ---------------------------------------------------------
    67. ##启动Apache服务
    68. systemctl enable --now httpd.service

     

     

     

     

    1. ##身份认证服务提供服务的目录和他们的位置。每个添加到OpenStack环境中的服务在目录中需要一个 service 实体和一些 API endpoints ;
    2. ##默认情况下,身份认证服务数据库不包含支持传统认证和目录服务的信息。必须使用为身份认证服务创建的临时身份验证令牌,来初始化的服务实体和API端点。
    3. 2 创建服务实体和API端点 ---配置端点URL(v3版本);配置认证 API 版本
    4. ##设置初始化令牌
    5. [root@controller keystone]# head /etc/keystone/keystone.conf
    6. [root@controller keystone]# export OS_TOKEN=26384039124a82cfbee6
    7. [root@controller keystone]# export OS_URL=http://controller:35357/v3
    8. [root@controller keystone]# export OS_IDENTITY_API_VERSION=3
    9. ##创建服务实体和身份认证服务
    10. [root@controller keystone]# openstack service create \
    11. > --name keystone --description "OpenStack Identity" identity
    12. ##创建认证服务的 API 端点:
    13. ##外部链接
    14. openstack endpoint create --region RegionOne \
    15. > identity public http://controller:5000/v3
    16. ##内部链接
    17. openstack endpoint create --region RegionOne \
    18. identity internal http://controller:5000/v3
    19. ##管理员连接
    20. openstack endpoint create --region RegionOne \
    21. identity admin http://controller:35357/v3
    22. ##查看所创建的endpoint
    23. openstack endpoint list

    【注】

            身份认证服务管理了一个与您环境相关的 API 端点的目录。服务使用这个目录来决定如何与您环境中的其他服务进行通信。

            OpenStack使用三个API端点变种代表每种服务:admin,internal和public。默认情况下,管理API端点允许修改用户和租户而公共和内部APIs不允许这些操作。在生产环境中,处于安全原因,变种为了服务不同类型的用户可能驻留在单独的网络上。对实例而言,公共API网络为了让顾客管理他们自己的云在互联网上是可见的。管理API网络在管理云基础设施的组织中操作也是有所限制的。内部API网络可能会被限制在包含OpenStack服务的主机上。此外,OpenStack支持可伸缩性的多区域。为了简单起见,本指南为所有端点变种和默认``RegionOne``区域都使用管理网络。

     

     

     

    1. ##创建域,项目,角色,用户
    2. ##身份认证服务为每个OpenStack服务提供认证服务。认证服务使用 T domains, projects (tenants), :term:`users`和 :term:`roles`的组合
    3. #创建域default
    4. openstack domain create --description "Default Domain" default
    5. ##创建admin项目
    6. openstack project create --domain default --description "Admin Project" admin
    7. ##创建admin用户
    8. openstack user create --domain default --password-prompt admin
    9. ##创建admin角色
    10. openstack role create admin
    11. ##添加``admin`` 角色到 admin 项目和用户上,使admin可以进行管理:
    12. openstack role add --project admin --user admin admin
    13. ##添加到你的环境中每个服务包含独有用户的service 项目
    14. openstack project create --domain default --description "Service Project" service
    15. ##创建``demo`` 项目:
    16. openstack project create --domain default --description "Demo Project" demo
    17. ##创建``demo`` 用户:
    18. openstack user create --domain default --password-prompt demo
    19. ##创建 user 角色:
    20. openstack role create user
    21. ##添加 user``角色到 ``demo 项目和用户:
    22. openstack role add --project demo --user demo user

     

    1. ##验证操作
    2. ##因为安全性的原因,关闭临时认证令牌机制(此时已经有两个用户–admin和demo);
    3. ##重置``OS_TOKEN``和``OS_URL`` 环境变量:
    4. unset OS_TOKEN OS_URL
    5. ##作为 admin 用户,请求认证令牌:
    6. openstack --os-auth-url http://controller:35357/v3 \
    7. --os-project-domain-name default --os-user-domain-name default \
    8. --os-project-name admin --os-username admin token issue
    9. ##作为 demo 用户,请求认证令牌:
    10. openstack --os-auth-url http://controller:5000/v3 \
    11. --os-project-domain-name default --os-user-domain-name default \
    12. --os-project-name demo --os-username demo token issue

     

     

     

    1. ##创建Openstack客户环境脚本
    2. ##之前使用环境变量和命令选项的组合通过openstack客户端与身份认证服务交互。为了提升客户端操作的效率,OpenStack支持简单的客户端环境变量脚本即OpenRC 文件。这些脚本通常包含客户端所有常见的选项,当然也支持独特的选项。
    3. ##创建 admin 和 demo 项目和用户创建客户端环境变量脚本。接下来的部分会引用这些脚本,为客户端操作加载合适的的凭证
    4. [root@controller keystone]# vim demo-openrc
    5. ----------------------------------------------------
    6. export OS_PROJECT_DOMAIN_NAME=default
    7. export OS_USER_DOMAIN_NAME=default
    8. export OS_PROJECT_NAME=demo
    9. export OS_USERNAME=demo
    10. export OS_PASSWORD=demo
    11. export OS_AUTH_URL=http://controller:5000/v3
    12. export OS_IDENTITY_API_VERSION=3
    13. export OS_IMAGE_API_VERSION=2
    14. ----------------------------------------------------
    15. [root@controller keystone]# vim admin-openrc
    16. ----------------------------------------------------
    17. export OS_PROJECT_DOMAIN_NAME=default
    18. export OS_USER_DOMAIN_NAME=default
    19. export OS_PROJECT_NAME=admin
    20. export OS_USERNAME=admin
    21. export OS_PASSWORD=admin
    22. export OS_AUTH_URL=http://controller:35357/v3
    23. export OS_IDENTITY_API_VERSION=3
    24. export OS_IMAGE_API_VERSION=2
    25. -----------------------------------------------------
    26. ##加载admin-openrc文件来身份认证服务的环境变量位置和admin项目和用户证书;此时,可以列出相应信息(所有的用户、连接端点)
    27. [root@controller keystone]# . admin-openrc
    28. [root@controller keystone]# openstack token issue
    29. [root@controller keystone]# openstack role list

     

     3.2 搭建镜像服务

            镜像服务 (glance) 允许用户发现、注册和获取虚拟机镜像。它提供了一个 REST API,允许您查询虚拟机镜像的 metadata 并获取一个现存的镜像。您可以将虚拟机镜像存储到各种位置,从简单的文件系统到对象存储系统—-例如 OpenStack 对象存储, 并通过镜像服务使用。

            OpenStack镜像服务是IaaS的核心服务,它接受磁盘镜像或服务器镜像API请求,和来自终端用户或OpenStack计算组件的元数据定义。它也支持包括OpenStack对象存储在内的多种类型仓库上的磁盘镜像或服务器镜像存储。
            大量周期性进程运行于OpenStack镜像服务上以支持缓存。同步复制(Replication)服务保证集群中的一致性和可用性。其它周期性进程包括auditors, updaters, 和 reapers。
    OpenStack镜像服务包括以下组件:
    1、glance-api:接收镜像API的调用,诸如镜像发现、恢复、存储。
    2、glance-registry:存储、处理和恢复镜像的元数据,元数据包括项诸如大小和类型。注意:glance-registry是私有内部服务,用于服务OpenStack Image服务。不要向用户暴露该服务。
    3、数据库:存放镜像元数据,用户是可以依据个人喜好选择数据库的,多数的部署使用MySQL或SQLite。
    4、镜像文件的存储仓库:支持多种类型的仓库,它们有普通文件系统、对象存储、RADOS块设备、HTTP、以及亚马逊S3。记住,其中一些仓库仅支持只读方式使用。
    5、元数据定义服务:通用的API,是用于为厂商,管理员,服务,以及用户自定义元数据。这种元数据可用于不同的资源,例如镜像,工件,卷,配额以及集合。一个定义包括了新属性的键,描述,约束以及可以与之关联的资源的类型。

    1. ##镜像的安装
    2. ##用数据库连接客户端以 root 用户连接到数据库服务器;
    3. mysql -u root -p
    4. ##创建 glance 数据库;
    5. MariaDB [(none)]> CREATE DATABASE glance;
    6. ##对glance数据库授予恰当的权限(使得glance用户可以通过本地和远端登陆数据库)。
    7. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'localhost' \
    8. -> IDENTIFIED BY 'glance';
    9. MariaDB [(none)]> GRANT ALL PRIVILEGES ON glance.* TO 'glance'@'%' IDENTIFIED BY 'glance';
    10. ##获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    11. . admin-openrc
    12. ##创建服务证书:
    13. ##创建 glance 用户:
    14. openstack user create --domain default --password-prompt glance
    15. ##添加 admin 角色到 glance 用户和 service 项目上。
    16. openstack role add --project service --user glance admin
    17. ##创建``glance``服务实体:
    18. openstack service create --name glance \
    19. --description "OpenStack Image" image
    20. ##创建镜像服务的 API 端点:
    21. openstack endpoint create --region RegionOne \
    22. image public http://controller:9292
    23. openstack endpoint create --region RegionOne \
    24. image internal http://controller:9292
    25. openstack endpoint create --region RegionOne \
    26. image admin http://controller:9292
    27. ##安全并配置组件
    28. ##安装软件包
    29. yum install openstack-glance
    30. ##编辑文件 /etc/glance/glance-api.conf 并完成如下动作:
    31. -------------------------------------------------------------
    32. [database]
    33. ...
    34. connection = mysql+pymysql://glance:glance@controller/glance
    35. [keystone_authtoken]
    36. ...
    37. auth_uri = http://controller:5000
    38. auth_url = http://controller:35357
    39. memcached_servers = controller:11211
    40. auth_type = password
    41. project_domain_name = default
    42. user_domain_name = default
    43. project_name = service
    44. username = glance
    45. password = glance
    46. [paste_deploy]
    47. ...
    48. flavor = keystone
    49. ----------------------------------------------------
    50. ##/etc/glance/glance-registry.conf``并完成如下动作:
    51. ----------------------------------------------------
    52. [database]
    53. ...
    54. connection = mysql+pymysql://glance:glance@controller/glance
    55. [keystone_authtoken]
    56. ...
    57. auth_uri = http://controller:5000
    58. auth_url = http://controller:35357
    59. memcached_servers = controller:11211
    60. auth_type = password
    61. project_domain_name = default
    62. user_domain_name = default
    63. project_name = service
    64. username = glance
    65. password = glance
    66. [paste_deploy]
    67. ...
    68. flavor = keystone
    69. ----------------------------------------------------
    70. ##写入镜像服务数据库:
    71. su -s /bin/sh -c "glance-manage db_sync" glance
    72. ##启动镜像服务,配置开机自启
    73. systemctl enable --now openstack-glance-api.service \
    74. openstack-glance-registry.service

    【注】控制节点上安装和配置镜像服务(glance)时。这个配置将镜像保存在本地文件系统中。安装和配置镜像服务之前,你必须创建创建一个数据库、服务凭证和API端点。

     

     

     

    1. ##验证操作
    2. ##获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    3. . admin-openrc
    4. ##下载源镜像:
    5. wget http://download.cirros-cloud.net/0.3.4/cirros-0.3.4-x86_64-disk.img
    6. ##使用 QCOW2 磁盘格式, bare 容器格式上传镜像到镜像服务并设置公共可见,这样所有的项目都可以访问它:
    7. openstack image create "cirros" \
    8. --file cirros-0.3.4-x86_64-disk.img \
    9. --disk-format qcow2 --container-format bare \
    10. --public
    11. ##确认镜像的上传并验证属性:
    12. openstack image list

    3.3 搭建计算节点

            使用OpenStack计算服务来托管和管理云计算系统。OpenStack计算服务是基础设施即服务(IaaS)系统的主要部分,模块主要由Python实现。

            OpenStack计算组件请求OpenStack Identity服务进行认证;请求OpenStack Image服务提供磁盘镜像;为OpenStack dashboard提供用户与管理员接口。磁盘镜像访问限制在项目与用户上;配额以每个项目进行设定(例如,每个项目下可以创建多少实例)。        

            OpenStack组件可以在标准硬件上水平大规模扩展,并且下载磁盘镜像启动虚拟机实例。

    OpenStack计算服务由下列组件所构成:

        nova-api 服务:
        接收和响应来自最终用户的计算API请求。此服务支持OpenStack计算服务API,Amazon EC2 API,以及特殊的管理API用于赋予用户做一些管理的操作。它会强制实施一些规则,发起多数的编排活动,例如运行一个实例。
        nova-api-metadata 服务:
        接受来自虚拟机发送的元数据请求。一般在安装nova-network服务的多主机模式下使用。
        nova-compute服务:
        一个持续工作的守护进程,通过Hypervior的API来创建和销毁虚拟机实例。
        nova-scheduler服务:
        拿到一个来自队列请求虚拟机实例,然后决定那台计算服务器主机来运行它。
        nova-conductor模块:
        媒介作用于nova-compute服务与数据库之间。它排除了由nova-compute服务对云数据库的直接访问。nova-conductor模块可以水平扩展。但是,不要将它部署在运行nova-compute服务的主机节点上。
        nova-cert模块:
        服务器守护进程向Nova Cert服务提供X509证书。用来为euca-bundle-image生成证书。
        nova-consoleauth 守护进程:
        授权控制台代理所提供的用户令牌。
        nova-novncproxy 守护进程:
        提供一个代理,用于访问正在运行的实例,通过VNC协议,支持基于浏览器的novnc客户端。
        nova-spicehtml5proxy 守护进程:
        提供一个代理,用于访问正在运行的实例,通过 SPICE 协议,支持基于浏览器的 HTML5 客户端。
        nova-xvpvncproxy 守护进程:

         提供一个代理,用于访问正在运行的实例,通过VNC协议,支持OpenStack特定的Java客户端。
        nova-cert 守护进程:
        X509 证书。
        nova客户端:
        用于用户作为租户管理员或最终用户来提交命令。
        队列:
        一个在守护进程间传递消息的中央集线器。常见实现有RabbitMQ __ , 以及如Zero MQ __等AMQP消息队列。
        SQL数据库:
        存储构建时和运行时的状态,为云基础设施。

    1. ##在control节点安装nova服务
    2. 1 用数据库连接客户端以 root 用户连接到数据库服务器;创建 nova_api 和 nova 数据库;对数据库进行正确的授权。
    3. ##登录
    4. mysql -u root -p
    5. ##创建
    6. CREATE DATABASE nova_api;
    7. CREATE DATABASE nova;
    8. ##授权
    9. GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'localhost' \
    10. IDENTIFIED BY 'nova';
    11. GRANT ALL PRIVILEGES ON nova_api.* TO 'nova'@'%' \
    12. IDENTIFIED BY 'nova';
    13. GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'localhost' \
    14. IDENTIFIED BY 'nova';
    15. GRANT ALL PRIVILEGES ON nova.* TO 'nova'@'%' \
    16. IDENTIFIED BY 'nova';
    17. 2 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    18. . admin-openrc
    19. 3 要创建服务证书,完成这些步骤:
    20. ##创建 nova 用户:
    21. openstack user create --domain default \
    22. --password-prompt nova
    23. ##给 nova 用户添加 admin 角色:
    24. openstack role add --project service --user nova admin
    25. ##创建 nova 服务实体:
    26. openstack service create --name nova \
    27. --description "OpenStack Compute" compute
    28. 4 创建 Compute 服务 API 端点 :
    29. ##公用
    30. openstack endpoint create --region RegionOne \
    31. compute public http://controller:8774/v2.1/%\(tenant_id\)s
    32. ##内部
    33. openstack endpoint create --region RegionOne \
    34. compute internal http://controller:8774/v2.1/%\(tenant_id\)s
    35. ##管理员
    36. openstack endpoint create --region RegionOne \
    37. compute admin http://controller:8774/v2.1/%\(tenant_id\)s
    38. 5 安全并配置组件
    39. ##安装软件包:
    40. yum install openstack-nova-api openstack-nova-conductor \
    41. openstack-nova-console openstack-nova-novncproxy \
    42. openstack-nova-scheduler
    43. ##编辑``/etc/nova/nova.conf``文件并完成下面的操作:
    44. ---------------------------------------------------
    45. [DEFAULT]
    46. ...
    47. enabled_apis = osapi_compute,metadata --只启用计算和元数据API
    48. rpc_backend = rabbit --配置 “RabbitMQ” 消息队列访问
    49. auth_strategy = keystone --配置认证服务访问
    50. my_ip = 192.168.19.71 --本地IP,用控制节点的管理接口的IP 地址。
    51. use_neutron = True --使用部分网络功能
    52. firewall_driver = nova.virt.firewall.NoopFirewallDriver
    53. [api_database]
    54. ...
    55. connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova_api
    56. [database]
    57. ...
    58. connection = mysql+pymysql://nova:NOVA_DBPASS@controller/nova
    59. [oslo_messaging_rabbit]
    60. ...
    61. rabbit_host = controller
    62. rabbit_userid = openstack
    63. rabbit_password = openstack
    64. [keystone_authtoken]
    65. ...
    66. auth_uri = http://controller:5000
    67. auth_url = http://controller:35357
    68. memcached_servers = controller:11211
    69. auth_type = password
    70. project_domain_name = default
    71. user_domain_name = default
    72. project_name = service
    73. username = nova
    74. password = nova
    75. [vnc] --配置VNC代理使用控制节点的管理接口IP地址
    76. ...
    77. vncserver_listen = $my_ip
    78. vncserver_proxyclient_address = $my_ip
    79. [glance] --配置镜像服务 API 的位置:
    80. ...
    81. api_servers = http://controller:9292
    82. [oslo_concurrency] --配置锁路径:
    83. ...
    84. lock_path = /var/lib/nova/tmp
    85. ---------------------------------------------------
    86. ##同步Compute 数据库:
    87. su -s /bin/sh -c "nova-manage api_db sync" nova
    88. su -s /bin/sh -c "nova-manage db sync" nova
    89. ##启动 Compute 服务并将其设置为随系统启动:
    90. systemctl enable --now openstack-nova-api.service \
    91. openstack-nova-consoleauth.service openstack-nova-scheduler.service \
    92. openstack-nova-conductor.service openstack-nova-novncproxy.service
    93. ##列出服务
    94. openstack compute service list

     computer1:提前设置ip,时间同步

    1. ##在computer1节点上配置nova服务
    2. 1 安装软件包
    3. yum install openstack-nova-compute
    4. 2 编辑``/etc/nova/nova.conf``文件并完成下面的操作:
    5. --------------------------------------------------
    6. [DEFAULT]
    7. ...
    8. rpc_backend = rabbit --消息队列
    9. auth_strategy = keystone --认证服务
    10. my_ip = 192.168.19.72 --计算节点IP
    11. use_neutron = True --网络服务
    12. firewall_driver = nova.virt.firewall.NoopFirewallDriver
    13. [oslo_messaging_rabbit]
    14. ...
    15. rabbit_host = controller
    16. rabbit_userid = openstack
    17. rabbit_password = openstack
    18. [keystone_authtoken]
    19. ...
    20. auth_uri = http://controller:5000
    21. auth_url = http://controller:35357
    22. memcached_servers = controller:11211
    23. auth_type = password
    24. project_domain_name = default
    25. user_domain_name = default
    26. project_name = service
    27. username = nova
    28. password = nova
    29. [vnc] --启用并配置远程控制台访问:
    30. ...
    31. enabled = True
    32. vncserver_listen = 0.0.0.0
    33. vncserver_proxyclient_address = $my_ip
    34. novncproxy_base_url = http://controller:6080/vnc_auto.html
    35. [glance] --配置镜像服务 API 的位置:
    36. ...
    37. api_servers = http://controller:9292
    38. [oslo_concurrency] --配置锁路径:
    39. ...
    40. lock_path = /var/lib/nova/tmp
    41. --------------------------------------------------
    42. 3 确定您的计算节点是否支持虚拟机的硬件加速。
    43. egrep -c '(vmx|svm)' /proc/cpuinfo
    44. --返回one or greater支持,返回0则不支持,使用 libvirt 来使用 QEMU 去代替 KVM
    45. --配置:/etc/nova/nova.conf
    46. -----------------
    47. [libvirt]
    48. ...
    49. virt_type = qemu
    50. -----------------
    51. 4 设置服务自启动
    52. systemctl enable --now libvirtd.service openstack-nova-compute.service
    1. ##验证操作
    2. 1 获得 admin 凭证来获取只有管理员能执行的命令的访问权限:
    3. . admin-openrc
    4. 2 列出服务组件,以验证是否成功启动并注册了每个进程:
    5. openstack compute service list

    3.4 搭建网络NetWorking

            OpenStack Networking(neutron),允许创建、插入接口设备,这些设备由其他的OpenStack服务管理。插件式的实现可以容纳不同的网络设备和软件,为OpenStack架构与部署提供了灵活性。OpenStack网络主要和OpenStack计算交互,以提供网络连接到它的实例。

    它包含下列组件:

        neutron-server:
        接收和路由API请求到合适的OpenStack网络插件,以达到预想的目的。
        OpenStack网络插件和代理:
        插拔端口,创建网络和子网,以及提供IP地址,这些插件和代理依赖于供应商和技术而不同,OpenStack网络基于插件和代理为Cisco 虚拟和物理交换机、NEC OpenFlow产品,Open vSwitch,Linux bridging以及VMware NSX 产品穿线搭桥。
        常见的代理L3(3层),DHCP(动态主机IP地址),以及插件代理。
        消息队列:
        大多数的OpenStack Networking安装都会用到,用于在neutron-server和各种各样的代理进程间路由信息。也为某些特定的插件扮演数据库的角色,以存储网络状态。

     

    1. ##先决条件
    2. 1 创建数据库
    3. ##连接到数据库:
    4. mysql -u root -p
    5. ##创建``neutron`` 数据库:
    6. CREATE DATABASE neutron;
    7. ##对``neutron`` 数据库授予合适的访问权限,使用合适的密码替换``NEUTRON_DBPASS``:
    8. GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'localhost' \
    9. IDENTIFIED BY 'neutron';
    10. GRANT ALL PRIVILEGES ON neutron.* TO 'neutron'@'%' \
    11. IDENTIFIED BY 'neutron';
    12. ##获得admin权限
    13. . admin-openrc
    14. 2 创建服务凭证
    15. ##创建``neutron``用户:
    16. openstack user create --domain default --password-prompt neutron
    17. ##添加``admin`` 角色到``neutron`` 用户:
    18. openstack role add --project service --user neutron
    19. ##创建``neutron``服务实体:
    20. openstack service create --name neutron \
    21. --description "OpenStack Networking" network
    22. 3 创建API
    23. openstack endpoint create --region RegionOne \
    24. network public http://controller:9696
    25. openstack endpoint create --region RegionOne \
    26. network internal http://controller:9696
    27. openstack endpoint create --region RegionOne \
    28. network admin http://controller:9696

     

            您可以部署网络服务使用选项1和选项2两种架构中的一种来部署网络服务。

    选项1采用尽可能简单的架构进行部署,只支持实例连接到公有网络(外部网络)。没有私有网络(个人网络),路由器以及浮动IP地址。只有``admin``或者其他特权用户才可以管理公有网络

            选项2在选项1的基础上多了layer-3服务,支持实例连接到私有网络。``demo``或者其他没有特权的用户可以管理自己的私有网络,包含连接公网和私网的路由器。另外,浮动IP地址可以让实例使用私有网络连接到外部网络,例如互联网

    1. ##配置控制节点的公共网络
    2. ##安装组件
    3. yum install openstack-neutron openstack-neutron-ml2 \
    4. openstack-neutron-linuxbridge ebtables
    5. ##配置服务组件
    6. ##编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
    7. -----------------------------------------------------------
    8. [DEFAULT]
    9. ...
    10. core_plugin = ml2
    11. service_plugins =
    12. rpc_backend = rabbit
    13. auth_strategy = keystone
    14. notify_nova_on_port_status_changes = True --设置网络拓扑
    15. notify_nova_on_port_data_changes = True
    16. [database]
    17. ...
    18. connection = mysql+pymysql://neutron:neutron@controller/neutron
    19. [oslo_messaging_rabbit]
    20. ...
    21. rabbit_host = controller
    22. rabbit_userid = openstack
    23. rabbit_password = openstack
    24. [keystone_authtoken]
    25. ...
    26. auth_uri = http://controller:5000
    27. auth_url = http://controller:35357
    28. memcached_servers = controller:11211
    29. auth_type = password
    30. project_domain_name = default
    31. user_domain_name = default
    32. project_name = service
    33. username = neutron
    34. password = neutron
    35. [nova]
    36. ...
    37. auth_url = http://controller:35357
    38. auth_type = password
    39. project_domain_name = default
    40. user_domain_name = default
    41. region_name = RegionOne
    42. project_name = service
    43. username = nova
    44. password = nova
    45. [oslo_concurrency]
    46. ...
    47. lock_path = /var/lib/neutron/tmp
    48. -----------------------------------------------------------
    49. ##配置 Modular Layer 2 (ML2) 插件--使用Linuxbridge机制来为实例创建layer-2虚拟网络基础设施
    50. ##编辑``/etc/neutron/plugins/ml2/ml2_conf.ini``文件并完成以下操作:
    51. --------------------------------------------------------------
    52. [ml2]
    53. ...
    54. type_drivers = flat,vlan --启用flat和VLAN网络:
    55. tenant_network_types = --禁用私有网络
    56. mechanism_drivers = linuxbridge --启用Linuxbridge机制:
    57. extension_drivers = port_security --启用端口安全扩展驱动:
    58. [ml2_type_flat]
    59. ...
    60. flat_networks = provider --配置公共虚拟网络为flat网络
    61. [securitygroup] --启用 ipset 增加安全组规则的高效性:
    62. ...
    63. enable_ipset = True
    64. --------------------------------------------------------------
    65. ##配置Linuxbridge代理--为实例建立layer-2虚拟网络并且处理安全组规则。
    66. ##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
    67. --------------------------------------------------------------
    68. [linux_bridge] ---将公共虚拟网络和公共物理网络接口对应起来
    69. physical_interface_mappings = provider:ens33
    70. [vxlan] ---禁止VXLAN覆盖网络
    71. enable_vxlan = False
    72. [securitygroup] --启用安全组并配置 Linuxbridge iptables firewall driver
    73. ...
    74. enable_security_group = True
    75. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    76. --------------------------------------------------------------
    77. ##配置DHCP代理
    78. ##编辑``/etc/neutron/dhcp_agent.ini``文件并完成下面的操作:
    79. --------------------------------------------------------------
    80. [DEFAULT] --配置Linuxbridge驱动接口,DHCP驱动并启用隔离元数据,这样在公共网络上的实例就可以通过网络来访问元数据
    81. ...
    82. interface_driver = neutron.agent.linux.interface.BridgeInterfaceDriver
    83. dhcp_driver = neutron.agent.linux.dhcp.Dnsmasq
    84. enable_isolated_metadata = True
    85. --------------------------------------------------------------
    86. ##配置元数据代理
    87. ##编辑``/etc/neutron/metadata_agent.ini``文件并完成以下操作:
    88. --------------------------------------------------------------
    89. [DEFAULT]
    90. ...
    91. nova_metadata_ip = controller
    92. metadata_proxy_shared_secret = controller
    93. --------------------------------------------------------------
    94. ##为计算节点配置网络服务
    95. ##编辑``/etc/nova/nova.conf``文件并完成以下操作:
    96. --------------------------------------------------------------
    97. [neutron] --启用元数据并设置代理
    98. ...
    99. url = http://controller:9696
    100. auth_url = http://controller:35357
    101. auth_type = password
    102. project_domain_name = default
    103. user_domain_name = default
    104. region_name = RegionOne
    105. project_name = service
    106. username = neutron
    107. password = neutron
    108. service_metadata_proxy = True
    109. metadata_proxy_shared_secret = controller
    110. --------------------------------------------------------------
    111. ##完成安装
    112. ##网络服务初始化脚本需要一个超链接 /etc/neutron/plugin.ini``指向ML2插件配置文件/etc/neutron/plugins/ml2/ml2_conf.ini``:
    113. ln -s /etc/neutron/plugins/ml2/ml2_conf.ini /etc/neutron/plugin.ini
    114. ##同步数据库:
    115. su -s /bin/sh -c "neutron-db-manage --config-file /etc/neutron/neutron.conf \
    116. --config-file /etc/neutron/plugins/ml2/ml2_conf.ini upgrade head" neutron
    117. ##重启计算API 服务:
    118. systemctl restart openstack-nova-api.service
    119. ##设置开机自启
    120. systemctl enable --enable neutron-server.service \
    121. neutron-linuxbridge-agent.service neutron-dhcp-agent.service \
    122. neutron-metadata-agent.service
    1. ##计算节点安装网络组件
    2. ##安装组件
    3. yum install openstack-neutron-linuxbridge ebtables ipset
    4. ##配置通用组件
    5. ##编辑``/etc/neutron/neutron.conf`` 文件并完成如下操作:
    6. ----------------------------------------------------------
    7. 在``[database]`` 部分,注释所有``connection`` 项,因为计算节点不直接访问数据库。
    8. [DEFAULT]
    9. ...
    10. rpc_backend = rabbit --消息队列
    11. auth_strategy = keystone
    12. [oslo_messaging_rabbit]
    13. ...
    14. rabbit_host = controller
    15. rabbit_userid = openstack
    16. rabbit_password = openstack
    17. [keystone_authtoken]
    18. ...
    19. auth_uri = http://controller:5000
    20. auth_url = http://controller:35357
    21. memcached_servers = controller:11211
    22. auth_type = password
    23. project_domain_name = default
    24. user_domain_name = default
    25. project_name = service
    26. username = neutron
    27. password = neutron
    28. [oslo_concurrency]
    29. ...
    30. lock_path = /var/lib/neutron/tmp
    31. ----------------------------------------------------------
    32. ##配置Linuxbridge代理
    33. ##编辑``/etc/neutron/plugins/ml2/linuxbridge_agent.ini``文件并且完成以下操作:
    34. ----------------------------------------------------------
    35. [linux_bridge]
    36. physical_interface_mappings = provider:ens33
    37. [vxlan] --禁止VXLAN覆盖网络:
    38. enable_vxlan = False
    39. [securitygroup] --启用安全组并配置 Linuxbridge iptables firewall driver:
    40. ...
    41. enable_security_group = True
    42. firewall_driver = neutron.agent.linux.iptables_firewall.IptablesFirewallDriver
    43. ----------------------------------------------------------
    44. ##为计算节点配置网络服务
    45. ##编辑``/etc/nova/nova.conf``文件并完成下面的操作:
    46. ----------------------------------------------------------
    47. [neutron]
    48. ...
    49. url = http://controller:9696
    50. auth_url = http://controller:35357
    51. auth_type = password
    52. project_domain_name = default
    53. user_domain_name = default
    54. region_name = RegionOne
    55. project_name = service
    56. username = neutron
    57. password = neutron
    58. ----------------------------------------------------------
    59. ##完成安装
    60. ##重启计算服务:
    61. systemctl restart openstack-nova-compute.service
    62. ##启动Linuxbridge代理并配置它开机自启动:
    63. systemctl enable --now neutron-linuxbridge-agent.service
    1. ##验证操做--列出加载的扩展来验证neutron-server进程是否正常启动
    2. . admin-openrc
    3. neutron ext-list

    至此核心组件搭建完成,可进行简单使用测试。

  • 相关阅读:
    2022 年安徽省职业院校技能大赛高职组“软件测试”赛项竞赛任务书
    微服务系列之服务注册发现 Consul
    虹科分享 | 麦氏比浊仪在药敏试验中的应用
    C# 语言的面向对象技术
    【C++】基础入门(一):域、命名空间、C++输入&输出
    【GlobalMapper精品教程】029:栅格重分类案例详解
    spark3.3.1 for CDH6.3.2 打包
    【SVM分类】基于matlab哈里斯鹰算法优化支持向量机SVM分类【含Matlab源码 2243期】
    黑*头条_第7章_kafka实战应用&文章自动审核
    cnpm的安装与使用
  • 原文地址:https://blog.csdn.net/qq_41056224/article/details/126657447