第一部分:IaaS 云计算基础架构平台

环境要求

  • 系统 CentOS-7-x86_64
  • 节点 数量 2
    • 控制节点 Controller
    • 计算节点 Compute
  • 软件 XianDian-IaaS-v2.2

任务一、IaaS 云平台搭建

基础环境

  1. 使用命令行方式设置主机名,防火墙以及 SELinux 设置如下:

    • 要求

      1. 设置控制节点主机名 controller;计算节点主机名:compute。
      2. 各个节点关闭防火墙,设置开机不启动。
      3. 设置各个节点 selinux 状态为 permissive。
    • 配置命令

      • Controller

        1
        2
        3
        4
        5
        6
        hostnamectl set-hostname controller
        systemctl stop firewalld
        systemctl disable firewalld
        setenforce 0
        echo '192.168.100.10 controller' >> /etc/hosts
        echo '192.168.100.20 compute' >> /etc/hosts
      • Compute

        1
        2
        3
        4
        5
        6
        hostnamectl set-hostname compute
        systemctl stop firewalld
        systemctl disable firewalld
        setenforce 0
        echo '192.168.100.10 controller' >> /etc/hosts
        echo '192.168.100.20 compute' >> /etc/hosts
  2. 使用命令查询控制/计算节点的主机名

    查询控制/计算节点的主机名

  3. 使用命令查询控制/计算节点 selinux 的状态。

    查询控制计算节点 selinux 的状态

  4. 在控制节点上通过 SecureFX 上传两个镜像文件 CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,通过命令行创建两个目录,并将以上镜像文件分别挂载到上述两个目录下。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    cd /opt
    mkdir CentOS-7 XianDian-IaaS
    # 临时挂载 重启失效
    mount CentOS-7-x86_64-DVD-1511.iso CentOS-7
    mount XianDian-IaaS-v2.2.iso XianDian-IaaS
    # 永久挂载 重启保留
    echo "/opt/CentOS-7-x86_64-DVD-1511.iso /opt/CentOS-7 iso9660 defaults 0 0" >>/etc/fstab
    echo "/opt/XianDian-IaaS-v2.2.iso /opt/XianDian-IaaS iso9660 defaults 0 0" >>/etc/fstab
    mount -a
  5. 在控制节点上通过 SecureFX 上传两个镜像文件 CentOS-7-x86_64-DVD-1511.iso, XianDian-IaaS-v2.2.iso 到 opt 下,使用命令创建 /opt 下两个目录,并将以上镜像文件分别挂载到上述两个目录下,并使用命令查看挂载的情况(需显示挂载的文件系统类型和具体的大小)

    查看挂载

  6. 配置控制节点本地 yum 源文件 local.repo ,搭建 ftp 服务器指向存放 yum 源路径;配置计算节点 yum 源文件 ftp.repo 使用之前配置的控制节点 ftp 作为 yum 源,其中的两个节点的地址使用主机名表示。使用 cat 命令查看上述控制/计算节点的 yum 源全路径配置文件。

    • 配置控制节点本地 yum 源文件 local.repo

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      rm -rf /etc/yum.repos.d/CentOS-*
      vi /etc/yum.repos.d/local.repo

      [CentOS]
      name = CentOS
      baseurl = file:///opt/CentOS-7
      gpgcheck = 0
      enabled = 1

      [XianDian-IaaS]
      name = XianDian-IaaS
      baseurl = file:///opt/XianDian-IaaS/iaas-repo
      gpgcheck = 0
      enabled = 1
    • 搭建 ftp 服务器指向存放 yum 源路径

      1
      2
      3
      4
      5
      6
      7
      8
      yum install -y vsftpd

      vi /etc/vsftpd/vsftpd.conf

      anon_root=/opt

      systemctl restart vsftpd
      systemctl enable vsftpd
    • 配置计算节点 yum 源文件 ftp.repo

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      rm -rf /etc/yum.repos.d/CentOS-*
      vi /etc/yum.repos.d/ftp.repo

      [CentOS]
      name = CentOS
      baseurl = ftp://controller/CentOS-7
      gpgcheck = 0
      enabled = 1

      [XianDian-IaaS]
      name = XianDian-IaaS
      baseurl = ftp://controller/XianDian-IaaS/iaas-repo
      gpgcheck = 0
      enabled = 1
    • 使用 cat 命令查看上述控制/计算节点的 yum 源全路径配置文件

      查看控制/计算节点的 yum 源全路径配置文件

  7. 在控制节点和计算节点分别安装 iaas-xiandian 软件包,完成配置文件中基本变量的配置,并根据提供的参数完成指定变量的配置。

    • 安装

      1
      yum install -y iaas-xiandian
    • 修改配置

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      18
      19
      20
      21
      22
      23
      24
      25
      26
      27
      28
      29
      30
      31
      32
      33
      34
      35
      36
      37
      38
      39
      40
      41
      42
      43
      44
      45
      46
      47
      48
      49
      50
      51
      52
      53
      54
      55
      56
      57
      58
      59
      60
      61
      62
      63
      64
      65
      66
      67
      68
      69
      70
      71
      72
      73
      74
      75
      76
      77
      78
      79
      80
      81
      82
      83
      84
      85
      86
      87
      88
      89
      90
      91
      92
      93
      94
      95
      96
      97
      98
      99
      100
      101
      102
      103
      104
      105
      106
      107
      108
      109
      110
      111
      112
      113
      ##--------------------system Config--------------------##
      ##Controller Server Manager IP. example:x.x.x.x
      HOST_IP=192.168.100.10

      ##Controller Server hostname. example:controller
      HOST_NAME=controller

      ##Compute Node Manager IP. example:x.x.x.x
      HOST_IP_NODE=192.168.100.20

      ##Compute Node hostname. example:compute
      HOST_NAME_NODE=compute

      ##--------------------Rabbit Config ------------------##
      ##user for rabbit. example:openstack
      RABBIT_USER=openstack

      ##Password for rabbit user .example:000000
      RABBIT_PASS=000000

      ##--------------------MySQL Config---------------------##
      ##Password for MySQL root user . exmaple:000000
      DB_PASS=000000

      ##--------------------Keystone Config------------------##
      ##Password for Keystore admin user. exmaple:000000
      DOMAIN_NAME=demo
      ADMIN_PASS=000000
      DEMO_PASS=000000

      ##Password for Mysql keystore user. exmaple:000000
      KEYSTONE_DBPASS=000000

      ##--------------------Glance Config--------------------##
      ##Password for Mysql glance user. exmaple:000000
      GLANCE_DBPASS=000000

      ##Password for Keystore glance user. exmaple:000000
      GLANCE_PASS=000000

      ##--------------------Nova Config----------------------##
      ##Password for Mysql nova user. exmaple:000000
      NOVA_DBPASS=000000

      ##Password for Keystore nova user. exmaple:000000
      NOVA_PASS=000000

      ##--------------------Neturon Config-------------------##
      ##Password for Mysql neutron user. exmaple:000000
      NEUTRON_DBPASS=000000

      ##Password for Keystore neutron user. exmaple:000000
      NEUTRON_PASS=000000

      ##metadata secret for neutron. exmaple:000000
      METADATA_SECRET=000000

      ##External Network Interface. example:eth1
      INTERFACE_NAME=eno33554960

      ##First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
      minvlan=101

      ##Last Vlan ID in VLAN RANGE for VLAN Network. example:200
      maxvlan=200

      ##--------------------Cinder Config--------------------##
      ##Password for Mysql cinder user. exmaple:000000
      CINDER_DBPASS=000000

      ##Password for Keystore cinder user. exmaple:000000
      CINDER_PASS=000000

      ##Cinder Block Disk. example:md126p3
      #BLOCK_DISK=

      ##--------------------Trove Config--------------------##
      ##Password for Mysql Trove User. exmaple:000000
      TROVE_DBPASS=000000

      ##Password for Keystore Trove User. exmaple:000000
      TROVE_PASS=000000

      ##--------------------Swift Config---------------------##
      ##Password for Keystore swift user. exmaple:000000
      SWIFT_PASS=000000

      ##The NODE Object Disk for Swift. example:md126p4.
      #OBJECT_DISK=

      ##The NODE IP for Swift Storage Network. example:x.x.x.x.
      #STORAGE_LOCAL_NET_IP=

      ##--------------------Heat Config----------------------##
      ##Password for Mysql heat user. exmaple:000000
      HEAT_DBPASS=000000

      ##Password for Keystore heat user. exmaple:000000
      HEAT_PASS=000000

      ##--------------------Ceilometer Config----------------##
      ##Password for Mysql ceilometer user. exmaple:000000
      #CEILOMETER_DBPASS=

      ##Password for Keystore ceilometer user. exmaple:000000
      #CEILOMETER_PASS=

      ##--------------------AODH Config----------------##
      ##Password for Mysql AODH user. exmaple:000000
      #AODH_DBPASS=

      ##Password for Keystore AODH user. exmaple:000000
      #AODH_PASS=
    • 初始化环境

      修改配置文件后 Controller 与 Compute 节点执行

      1
      iaas-pre-host.sh

Mysql 搭建

  1. 根据平台安装步骤安装至数据库服务,使用一条命令安装提供的 iaas-install-mysql.sh 脚本并查看脚本运行的时间。

    • 命令

      1
      time /usr/local/bin/iaas-install-mysql.sh
    • 查询结果

      20200923001601

  2. 使用 root 用户登录数据库,查询数据库列表信息。

    • 命令

      1
      show databases;
    • 查询结果

      Database
      information_schema
      mysql
      performance_schema
  3. 使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息。

    • 命令

      1
      2
      use mysql;
      show databases;
    • 查询结果

      Tables_in_mysql
      column_stats
      columns_priv
      db
      ~~~~~~~~~~~~~~~~~~
      time_zone_transition
      time_zone_transition_type
      user
  4. 使用 root 用户登录数据库,使用 mysql 数据库,查询所有表的信息,并查询表 user 中的特定的信息。

    • 命令

      1
      2
      use mysql;
      select host,user,password from user;
    • 查询结果

      host user password
      localhost root *032197AE5731D4664921A6CCAC7CFCE6A0698693
      controller root *032197AE5731D4664921A6CCAC7CFCE6A0698693
      127.0.0.1 root *032197AE5731D4664921A6CCAC7CFCE6A0698693
      ::1 root *032197AE5731D4664921A6CCAC7CFCE6A0698693

Keystone 搭建

安装 keystone

1
iaas-install-keystone.sh
  1. 按要求安装完 keystone 脚本后,在数据库中查询 keystone 用户的远程访问权限信息。

    • 命令

      1
      2
      use keystone;
      desc access_token;
    • 查询结果

      Field Type Null Key Default Extra
      id varchar(64) NO PRI NULL
      access_secret varchar(64) NO NULL
      authorizing_user_id varchar(64) NO MUL NULL
      project_id varchar(64) NO NULL
      role_ids text NO NULL
      consumer_id varchar(64) NO MUL NULL
      expires_at varchar(64) YES NULL
  2. 列出数据库 keystone 中的所有表。

    • 命令

      1
      2
      use keystone;
      show tables;
    • 查询结果

      Tables_in_keystone
      access_token
      assignment
      config_register
      ~~~~~~~~~~~~~~~~
      user
      user_group_membership
      whitelisted_config
  3. 使用相关命令,查询角色列表信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      openstack role list
    • 查询结果

      ID Name
      29efe97c88094fe9918d0f4a79e1cdc0 admin
      64162db17b814429a765801262d868ec user
  4. 使用相关命令,查询 admin 项目信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      openstack project show admin
    • 查询结果

      Field Value
      description Admin Project
      domain_id eedf9531120c47b8aafd363a7dc270b2
      enabled True
      id 61e03e709d2a45c0b5bee652a78495e0
      is_domain False
      name admin
      parent_id eedf9531120c47b8aafd363a7dc270b2
  5. 使用相关命令,查询用户列表信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      openstack user list
    • 查询结果

      ID Name
      6ea45f0655ef4c4e90a3b3de71391b0b admin
      8c357b77079a4504adc4026336a49396 demo
  6. 使用相关命令,查询 admin 用户详细信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      openstack user show admin
    • 查询结果

      Field Value
      domain_id eedf9531120c47b8aafd363a7dc270b2
      enabled True
      id 6ea45f0655ef4c4e90a3b3de71391b0b
      name admin
  7. 使用相关命令,查询服务列表信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      openstack service list
    • 查询结果

      ID Name Type
      bc83adcd6dfe4d0f81ed030384b99d9e keystone identity
  8. 使用一条命令将 keystone 的数据库导出为当前路径下的 keystone.sql 文件,并使用命令查询文件 keystone.sql 的大小。

    • 命令

      1
      2
      mysqldump -uroot -p000000 keystone > keystone.sql
      du -h keystone.sql
    • 查询结果

      20200923011258

Glance 搭建

安装 Glance

1
iaas-install-glance.sh
  1. 使用镜像文件 CentOS_7.2_x86_64_XD.qcow2 创建 glance 镜像名为 CentOS7.2,格式为 qcow2 。

    1
    2
    3
    4
    5
    source /etc/keystone/admin-openrc.sh
    glance image-create --name "CentOS7.2" \
    --disk-format qcow2 \
    --container-format bare \
    --progress < /opt/XianDian-IaaS/images/CentOS_7.2_x86_64_XD.qcow2
  2. 使用相关命令查询镜像列表,并查询 CentOS7.2 镜像的详细信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      glance image-list
    • 查询结果

      ID Name
      3e6b8387-f943-42c8-84d7-599de6045cce CentOS7.2
    • 命令

      1
      glance image-show 3e6b8387-f943-42c8-84d7-599de6045cce
    • 查询结果

      Property Value
      checksum ea197f4c679b8e1ce34c0aa70ae2a94a
      container_format bare
      created_at 2020-09-23T02:43:55Z
      disk_format qcow2
      id 3e6b8387-f943-42c8-84d7-599de6045cce
      min_disk 0
      min_ram 0
      name CentOS7.2
      owner 61e03e709d2a45c0b5bee652a78495e0
      protected False
      size 400752640
      status active
      tags []
      updated_at 2020-09-23T02:43:57Z
      virtual_size None
      visibility private
  3. 使用相关命令,在一条命令中查询 glance 组件中所有服务的状态信息。

    • 命令

      1
      systemctl status openstack-glance-registry.service openstack-glance-api.service
    • 查询结果

      20200923014941

Nova 搭建

  1. 根据平台安装步骤安装至 nova 计算服务,在控制节点使用提供的脚本 iaas-install-nova-controller.sh、在计算节点使用提供的脚本 iaas-install-nova-compute.sh,安装 nova 组件。

    • Controller

      1
      iaas-install-nova-controller.sh
    • Compute

      1
      iaas-install-nova-compute.sh
  2. 使用相关命令查询计算节点虚拟机监控器的状态。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova hypervisor-list
    • 查询结果

      ID Hypervisor hostname State Status
      1 compute up enabled
  3. 使用相关命令查询 nova 服务状态列表。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova service-list
    • 查询结果

      Id Binary Host Zone Status State Updated_at Disabled Reason
      1 nova-conductor controller internal enabled up 2020-09-23T03:02:07.000000 -
      2 nova-scheduler controller internal enabled up 2020-09-23T03:02:07.000000 -
      3 nova-consoleauth controller internal enabled up 2020-09-23T03:02:07.000000 -
      6 nova-compute compute nova enabled up 2020-09-23T03:02:06.000000 -
  4. 使用相关命令查询网络的列表信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova network-list
    • 查询结果

      ID Label Cidr
      a38f5073-1583-415b-ba1f-a55ede04a982 ext-net -
      9c3d91c8-19ea-4c7b-b64e-8fab1319db3f demo-net -
  5. 使用相关命令查询 nova 资源使用情况的信息。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova quota-show
    • 查询结果

      Quota Limit
      instances 10
      cores 20
      ram 51200
      floating_ips 10
      fixed_ips -1
      metadata_items 128
      injected_files 5
      injected_file_content_bytes 10240
      injected_file_path_bytes 255
      key_pairs 100
      security_groups 10
      security_group_rules 20
      server_groups 10
      server_group_members 10
    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova host-list
    • 查询结果

      host_name service zone
      controller conductor internal
      controller scheduler internal
      controller consoleauth internal
      compute compute nova
    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      nova host-describe compute
    • 查询结果

      HOST PROJECT cpu memory_mb disk_gb
      compute (total) 2 3776 49
      compute (used_now) 0 512 0
      compute (used_max) 0 0 0

Neutron 搭建

安装 Neutron

  • Neutron Controller 安装

    1
    iaas-install-neutron-controller.sh
  • Neutron Controller 安装

    1
    iaas-install-neutron-compute.sh
  1. 根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配置为 GRE 网络。

    • Controller

      1
      iaas-install-neutron-controller-gre.sh
    • Compute

      1
      iaas-install-neutron-compute-gre.sh
  2. 根据平台安装步骤安装至 neutron 网络服务,在控制节点和计算节点通过提供的 neutron 脚本,完成 neutron 服务在控制节点和计算节点的安装,并配置为 VLAN 网络。

    • Controller

      1
      iaas-install-neutron-controller-vlan.sh
    • Compute

      1
      iaas-install-neutron-compute-vlan.sh
  3. 使用相关命令查询网络服务的列表信息,并以下图的形式打印出来。

    • 命令

      1
      2
      source /etc/keystone/admin-openrc.sh
      neutron agent-list | cut - d"|" -f3,8,6
    • 查询结果

      id agent_type host availability_zone alive admin_state_up binary
      152c3f41-01bc-41aa-845e-59cc758c39e9 Metadata agent controller :-) True neutron-metadata-agent
      2cc96c3f-6694-4953-bde2-591992460192 Open vSwitch agent compute :-) True neutron-openvswitch-agent
      42a56c45-bbb7-4d17-acf2-f74a78ce880b Open vSwitch agent controller :-) True neutron-openvswitch-agent
      5da7d5df-981c-406c-b3a5-8a9016c94365 Loadbalancer agent controller :-) True neutron-lbaas-agent
      666ffedc-3aee-4c90-adf0-755c80e97eae DHCP agent controller nova :-) True neutron-dhcp-agent
      66746db4-3771-40bb-8bdc-03ba8ee083d9 L3 agent controller nova :-) True neutron-l3-agent
      8201a541-93ab-4d1d-82ac-b61d1f96a304 Metadata agent compute :-) True neutron-metadata-agent
  4. 使用相关命令查询网络服务的列表信息中的“binary”一列。

    • 命令行查询

      • 命令

        1
        2
        3
        source /etc/keystone/admin-openrc.sh
        neutron agent-list | cut -c 119-160
        neutron agent-list | cut -d "|" -f 8
      • 查询结果

        binary
        neutron-metadata-agent
        neutron-openvswitch-agent
        neutron-openvswitch-agent
        neutron-lbaas-agent
        neutron-dhcp-agent
        neutron-l3-agent
        neutron-metadata-agent
    • 数据库查询

      • 命令

        1
        2
        use neutron;
        select agents.binary from agents;
      • 查询结果

        binary
        neutron-metadata-agent
        neutron-openvswitch-agent
        neutron-openvswitch-agent
        neutron-lbaas-agent
        neutron-dhcp-agent
        neutron-l3-agent
        neutron-metadata-agent
  5. 使用相关命令查询网络服务 DHCP agent 的详细信息。

  6. 使用 ovs-vswitchd 管理工具的相关命令查询计算节点的网桥列表信息。

  7. 使用 ovs-vswitchd 管理工具的相关命令查询控制节点的网桥 br-ex 的端口列表信息。

  8. 创建云主机外部网络 ext-net,子网为 ext-subnet,云主机浮动 IP 可用网段为 192.168.200.100 ~ 192.168.200.200,网关为 192.168.200.1。创建云主机内部网络 int-net1,子网为 int-subnet1,云主机子网 IP 可用网段为 10.0.0.100 ~ 10.0.0.200,网关为10.0.0.1;创建云主机内部网络int-net2,子网为 int-subnet2,云主机子网 IP 可用网段为 10.0.1.100 ~ 10.0.1.200,网关为 10.0.1.1。添加名为 ext-router 的路由器,添加网关在 ext-net 网络,添加内部端口到 int-net1 网络,完成内部网络 int-net1 和外部网络的连通。

  9. 使用相关命令查询所创建路由器的详细信息。

  10. 使用相关命令查询所创建子网的列表信息,并查看内网子网的详细信息。

  11. 使用相关命令查询所创建网络的列表信息。