OpenStack Wiki-2 OpenStack 安装

安装准备

本次安装以2020年技能大赛发放的文件进行安装演示,具体信息如下:

文件准备

安装文件表

文件名 用途 备注
CentOS-7-x86_64-DVD-1804.iso CentOS 7.5 系统安装包
chinaskills_cloud_iaas.iso OpenStack安装包

节点规划

本次安装采用双节点方式进行安装,分为控制节点(controller)和结算节点(compute),具体服务和配置规划如下:

节点配置表:

项目 controller compute
CPU 4 6
RAM 4GB 8GB
硬盘 50GB 100GB 50GB安装系统 50GB分配给存储服务
网卡1 eth0,eth1 eth0,eth1
eth0 192.168.100.10/24 192.168.100.20/24
eth1 192.168.200.10/24 192.168.200.20/24

节点服务表1

controller compute
MySQL

Keystone

Glance

Nova-controller

Neutron-controller

Dashboard

Cinder-controller

Swift-controller

Zun-controller

Heat

Ceilometer-controller

Aodh

Nova-compute

Nova-compute

Neutron-compute

Cinder-compute

Swift-compute

Zun-compute

Ceilometer-compute

操作系统配置

安装Centos7.5

在主机中安装CentOS7.5,安装过程中注意一下内容:

  1. 检查网络环境,正确配置网络,确保网络畅通。

    1. 主机网络配置

    2. 虚拟机网络配置/交换机网络配置

    3. 节点网络配置

  2. 安装时关闭网卡自动命名功能,方便后面配置和使用

    1. 在镜像启动界面使用tab进入配置模式,使用命令关闭网卡自动命名2

      net.ifnames=0 biosdevname=0

      镜像启动界面

      镜像启动界面

      使用命令关闭网卡自动命名

      image-20210419083504732

      成功修改后在安装界面就可以看到

      image-20210419083753962

  3. 为了后面配置方便,root用户密码设置为000000

  4. 现在不支持创建空白分区,在compute节点分区时需手动调整分区

    image-20210419084407947

配置操作系统

在安装OpenStack前需要对系统基本环境进行配置,确保网络能够畅通,基本功能能够实现。

具体配置内容包括:网络,防火墙和SELinux,hosts,yum,硬盘分区,

修改计算机名

在安装完毕操作系统后我们要及时修改计算机的名字,放在在多台设备之间识别。

 # 修改controller节点计算机名
 hostnamectl set-hostname controller
 # 修改compute节点计算机名
 hostnamectl set-hostname compute

网络配置

网络配置具体包括网卡的配置和IP地址的配置。在新安装操作系统后,系统默认情况下网卡时关闭的,需要我们自己去配置网卡配置文件,启用网卡并配置正确的IP地址。

我们根据我们之前规划的配置来配置网卡:

controller

 # controller 节点
 # eth0
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=static
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=yes
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=eth0
 UUID=d6f7794f-228f-4dec-b366-9208abf548b2
 DEVICE=eth0
 ONBOOT=yes
 IPADDR=192.168.100.10
 PREFIX=24
 GATEWAY=192.168.100.1
 
 # eth1
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=static
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=yes
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=eth1
 UUID=ad39e6b9-3bda-4b83-a858-d3bc896843be
 DEVICE=eth1
 ONBOOT=yes
 IPADDR=192.168.200.10
 PREFIX=24
 GATEWAY=192.168.200.1

compute

 # compute节点
 # eth0
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=static
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=yes
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=eth0
 UUID=a888f576-e392-42ea-a423-f64578b3b6b1
 DEVICE=eth0
 ONBOOT=yes
 IPADDR=192.168.100.20
 PREFIX=24
 GATEWAY=192.168.100.1
 
 # eth1
 TYPE=Ethernet
 PROXY_METHOD=none
 BROWSER_ONLY=no
 BOOTPROTO=static
 DEFROUTE=yes
 IPV4_FAILURE_FATAL=no
 IPV6INIT=yes
 IPV6_AUTOCONF=yes
 IPV6_DEFROUTE=yes
 IPV6_FAILURE_FATAL=no
 IPV6_ADDR_GEN_MODE=stable-privacy
 NAME=eth1
 UUID=87dc4173-18a1-43c9-b939-c6427fde7dc8
 DEVICE=eth1
 ONBOOT=yes
 IPADDR=192.168.200.20
 PREFIX=24
 GATEWAY=192.168.200.1

在配置完毕网卡后我们要重启网络服务来启用网卡,重启网络服务命令是:systmectl restart network

hosts文件配置

hosts文件的作用是将一些常用的网站域名与其对应的IP地址建立一个关系库,功能类似于我们的DNS服务器,但是在一些局域网的环境下没有架设DNS服务器,可以使用hosts文件来指定远程主机。

我们在环境中使用了两个节点,所以在hosts文件中指定两台主机。

 # 查看修改完的hosts文件
 at /etc/hosts
 127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
 ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
 192.168.100.10 controller   # 控制节点IP
 192.168.100.20 compute      # 计算节点IP

防火墙和SELinux

我们的OpenStack平台集成了安全组的管理,为了避免多个防火墙之间的冲突,我们需要关闭本机自带的防火墙和SELinux。

防火墙

 # 关闭防火墙
 systemctl stop firewalld
 # 取消防火墙开机自启
 systemctl disable firewalld
 # 查看防火墙状态
 systemctl status firewalld
 ● firewalld.service - firewalld - dynamic firewall daemon
    Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; vendor preset: enabled)
    Active: inactive (dead)  # ?这里显示防火墙状态已经关闭
      Docs: man:firewalld(1)
 
 Apr 19 18:24:43 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
 Apr 19 18:24:43 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
 Apr 19 19:13:57 localhost.localdomain systemd[1]: Stopping firewalld - dynamic firewall daemon...
 Apr 19 19:13:58 localhost.localdomain systemd[1]: Stopped firewalld - dynamic firewall daemon.

SELinux

 # 临时修改SELinux
 setenforce 0
 # 永久关闭SELinux
 sed -i -e "s/=enforcing/=permissive/" /etc/selinux/conf
 # 查看SELinux状态
 getenforce

配置yum仓库

YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

在我们的集群中,管理节点一般不访问外部网络,因此我们要在本地搭建yum仓库来实现软件下载等操作,同时搭建ftp服务方便其他节点访问下载。

  1. 准备文件

    1. 上传文件到controller节点

      在服务器管理中我们上传文件一般使用'sftp'协议进行连接上传,本次使用Xftp工具进行上传:

      使用Xftp上传文件

      文件成功上传到controller节点

    2. 将镜像分别挂载到各自的目录

       # 创建对应的文件夹
       mkdir /opt/centos /opt/openstack
       ls /opt/
       centos  openstack
       
       # 复制镜像内文件到目录
       # 挂载centos镜像到一个临时的目录'mnt'
       mount -o loop /root/CentOS-7-x86_64-DVD-1804.iso /mnt/
       mount: /dev/loop0 is write-protected, mounting read-only
       # 复制镜像里面的文件到对应的目录
       cp -rvf /mnt/* /opt/centos/
       # 解除挂载,方便一会挂载另一个镜像
       umount /mnt/
       # iaas镜像操作
       mount -o loop /root/chinaskills_cloud_iaas.iso /mnt/
       mount: /dev/loop0 is write-protected, mounting read-only
       cp -rvf /mnt/* /opt/openstack/
       umount /mnt
  2. 编写yum仓库文件

    1. controller节点的文档

       # controller节点yum文档内容
       # 因为controller节点使用的是本地文件,所以在链接一栏使用本地文件链接。
       [centos]
       name=centos
       baseurl=file:///opt/centos/
       gpgcheck=0
       enabled=1
       
       [iaas]
       name=openstack
       baseurl=file:///opt/openstack/iaas-repo/
       gpgcheck=0
       enabled=1
    2. compute节点的文档

       # compute节点内容
       # 因为compute节点使用的是controller的ftp服务,所以链接一栏填写远程ftp服务器地址
       [centos]
       name=centos
       baseurl=ftp://192.168.100.10/centos/
       gpgcheck=0
       enabled=1
       
       [iaas]
       name=openstack
       baseurl=ftp://192.168.100.10/openstack/iaas-repo
       gpgcheck=0
       enabled=1
  3. 测试yum仓库

    测试仓库是否正确可以使用下面的命令

     # 清空仓库缓存
     yum clean all
     # 生成缓存文件
     yum makecache
     
     #############
     # 仓库正确输出内容如下
     yum makecache
     Loaded plugins: fastestmirror
     Determining fastest mirrors
     centos                                                                  | 3.6 kB  00:00:00     
     iaas                                                                    | 2.9 kB  00:00:00     
     (1/7): centos/group_gz                                                  | 166 kB  00:00:00     
     (2/7): centos/primary_db                                                | 3.1 MB  00:00:00     
     (3/7): centos/filelists_db                                              | 3.1 MB  00:00:00     
     (4/7): centos/other_db                                                  | 1.3 MB  00:00:00     
     (5/7): iaas/primary_db                                                  | 1.4 MB  00:00:00     
     (6/7): iaas/filelists_db                                                | 3.2 MB  00:00:00     
     (7/7): iaas/other_db                                                    | 618 kB  00:00:00     
     Metadata Cache Created

硬盘分区

我们在安装前的规划中,在compute节点需要安装两个存储服务,在安装服务之前我们要提前划分分区规划。

 # 检查硬盘分区表
 # lsblk
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sda               8:0    0  100G  0 disk 
 ├─sda1            8:1    0    1G  0 part /boot
 └─sda2            8:2    0 48.9G  0 part 
   ├─centos-root 253:0    0   41G  0 lvm  /
   └─centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
 sr0              11:0    1  4.2G  0 rom  
 
 # 进入分区工具
 # parted /dev/sda
 GNU Parted 3.1
 Using /dev/sda
 Welcome to GNU Parted! Type 'help' to view a list of commands.
 (parted) p                                                                
 Model: VMware, VMware Virtual S (scsi)
 Disk /dev/sda: 107GB
 Sector size (logical/physical): 512B/512B
 Partition Table: msdos
 Disk Flags: 
 
 Number  Start   End     Size    Type     File system  Flags
  1      1049kB  1075MB  1074MB  primary  xfs          boot
  2      1075MB  53.6GB  52.5GB  primary               lvm
 
 # 开始分区
 (parted) mkpart cinder 55G 90G
 parted: invalid token: cinder
 Partition type?  primary/extended? p                                      
 File system type?  [ext2]? xfs
 Start? 55G                                                                
 End? 95G
 (parted) mkpart                                                           
 Partition type?  primary/extended? p                                      
 File system type?  [ext2]? xfs                                            
 Start? 95G                                                                
 End? 105G                                                                 
 (parted) p                                                                
 Model: VMware, VMware Virtual S (scsi)
 Disk /dev/sda: 107GB
 Sector size (logical/physical): 512B/512B
 Partition Table: msdos
 Disk Flags: 
 
 Number  Start   End     Size    Type     File system  Flags
  1      1049kB  1075MB  1074MB  primary  xfs          boot
  2      1075MB  53.6GB  52.5GB  primary               lvm
  3      55.0GB  95.0GB  40.0GB  primary
  4      95.0GB  105GB   10.0GB  primary
 
 # 格式化分区
 mkfs.xfs /dev/sda
 sda   sda1  sda2  sda3  sda4  
 # mkfs.xfs /dev/sda3 
 meta-data=/dev/sda3              isize=512    agcount=4, agsize=2441408 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0, sparse=0
 data     =                       bsize=4096   blocks=9765632, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal log           bsize=4096   blocks=4768, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 # mkfs.xfs /dev/sda4
 meta-data=/dev/sda4              isize=512    agcount=4, agsize=610368 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0, sparse=0
 data     =                       bsize=4096   blocks=2441472, imaxpct=25
          =                       sunit=0      swidth=0 blks
 naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
 log      =internal log           bsize=4096   blocks=2560, version=2
          =                       sectsz=512   sunit=0 blks, lazy-count=1
 realtime =none                   extsz=4096   blocks=0, rtextents=0
 

安装OpenStack

我们本次安装的OpenStack是由国基北盛提供的安装包,同时也包含了自动安装脚本,我们可以快捷使用脚本进行安装。

配置环境变量

在使用脚本进行安装前,需要对环境变量进行预配置,方便安装脚本获取对应信息。

安装环境变量工具

配置环境变量使用的脚本已经打包在iaas-xiandian的软件包中,安装软件就可以获取安装脚本和环境变量文件。

 # 两个节点同时安装iaas-xiandian软件包
 # yum install -y iaas-xiandian

iaas-xiandian安装后脚本列表

文件名 路径 用途
openrc.sh /etc/xiandian/openrc.sh 环境变量文件
iaas-install-aodh.sh /usr/local/bin/ aodh服务安装脚本
iaas-install-barbican.sh /usr/local/bin/ barbican服务安装脚本
iaas-install-ceilometer-compute.sh iaas-install-ceilometer-controller.sh /usr/local/bin/ ceilometer服务安装脚本
iaas-install-cinder-compute.sh iaas-install-cinder-controller.sh /usr/local/bin/ cinder服务安装脚本
iaas-install-dashboard.sh /usr/local/bin/ dashboard服务安装脚本
iaas-install-glance.sh /usr/local/bin/ glance服务安装脚本
iaas-install-heat.sh /usr/local/bin/ heat服务安装脚本
iaas-install-keystone.sh /usr/local/bin/ keystone服务安装脚本
iaas-install-mysql.sh /usr/local/bin/ MySQL服务安装脚本
iaas-install-neutron-compute.sh iaas-install-neutron-controller.sh /usr/local/bin/ neutron服务安装脚本
iaas-install-nova-compute.sh iaas-install-nova-controller.sh /usr/local/bin/ nova服务安装脚本
iaas-install-swift-compute.sh iaas-install-swift-controller.sh /usr/local/bin/ swift服务安装脚本
iaas-install-zun-compute.sh iaas-install-zun-controller.sh /usr/local/bin/ zun服务安装脚本
iaas-pre-host.sh /usr/local/bin/ 系统环境配置脚本
iaas-uninstall-all.sh /usr/local/bin/ 卸载脚本

配置环境变量

配置完毕的openrc.sh文件如下

 # 配置完毕的openrc.sh文件
 #--------------------system Config--------------------##
 #Controller Server Manager IP. example:x.x.x.x
 HOST_IP=192.168.100.10
 
 #Controller HOST Password. example:000000 
 HOST_PASS=000000
 
 #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 HOST Password. example:000000 
 HOST_PASS_NODE=000000
 
 #Compute Node hostname. example:compute
 HOST_NAME_NODE=compute
 
 #--------------------Chrony Config-------------------##
 #Controller network segment IP.  example:x.x.0.0/16(x.x.x.0/24)
 network_segment_IP=192.168.100.0/24
 
 #--------------------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
 
 #Tunnel Network Interface. example:x.x.x.x
 INTERFACE_IP=192.168.100.10
 
 #External Network Interface. example:eth1
 INTERFACE_NAME=eth1
 
 #External Network The Physical Adapter. example:provider
 Physical_NAME=provider
 
 #First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
 minvlan=100
 
 #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=sda3
 
 #--------------------Swift Config---------------------##
 #Password for Keystore swift user. exmaple:000000
 SWIFT_PASS=000000
 
 #The NODE Object Disk for Swift. example:md126p4.
 OBJECT_DISK=sda4
 
 #The NODE IP for Swift Storage Network. example:x.x.x.x.
 STORAGE_LOCAL_NET_IP=192.168.100.20
 
 #--------------------Heat Config----------------------##
 #Password for Mysql heat user. exmaple:000000
 HEAT_DBPASS=000000
 
 #Password for Keystore heat user. exmaple:000000
 HEAT_PASS=000000
 
 #--------------------Zun Config-----------------------##
 #Password for Mysql Zun user. exmaple:000000
 ZUN_DBPASS=000000
 
 #Password for Keystore Zun user. exmaple:000000
 ZUN_PASS=000000
 
 #Password for Mysql Kuryr user. exmaple:000000
 KURYR_DBPASS=000000
 
 #Password for Keystore Kuryr user. exmaple:000000
 KURYR_PASS=000000
 
 #--------------------Ceilometer Config----------------##
 #Password for Gnocchi ceilometer user. exmaple:000000
 CEILOMETER_DBPASS=000000
 
 #Password for Keystore ceilometer user. exmaple:000000
 CEILOMETER_PASS=000000
 
 #--------------------AODH Config----------------##
 #Password for Mysql AODH user. exmaple:000000
 AODH_DBPASS=000000
 
 #Password for Keystore AODH user. exmaple:000000
 AODH_PASS=000000
 
 #--------------------Barbican Config----------------##
 #Password for Mysql Barbican user. exmaple:000000
 BARBICAN_DBPASS=000000
 
 #Password for Keystore Barbican user. exmaple:000000
 BARBICAN_PASS=000000

使用脚本安装openstack

在配置完毕系统环境和环境变量脚本后,直接使用脚本安装openstack即可。

安装脚本顺序表

controller compute
iaas-pre-host.sh iaas-pre-host.sh
iaas-install-mysql.sh
iaas-install-keystone.sh
iaas-install-glance.sh
iaas-install-nova-controller.sh iaas-install-nova-compute.sh
iaas-install-neutron-controller.sh iaas-install-neutron-compute.sh
iaas-install-dashboard.sh
iaas-install-cinder-controller.sh iaas-install-cinder-compute.sh
iaas-install-swift-controller.sh iaas-install-swift-compute.sh
iaas-install-zun-conotroller.sh iaas-install-zun-compute.sh
iaas-install-heat.sh
iaas-install-ceilometer-controller.sh iaas-install-ceilometer-computer.sh
iaas-install-aodh.sh

网页访问OpenStack页面

在安装完Dashboard后就可以在浏览器访问web页面来查看。

访问地址:ip/dashboard:192.168.100.10/dashboard

网页打开界面


[1]  节点服务有两种,带-controller和带-controller尾缀,带-controller的表示控制节点使用的服务。
[2]  网卡自动重命名:一致性网络设备命名法,在RHEL及CentOS 7上,由于systemd 和 udev 引入了一种新的网络设备命名方式 —— 一致网络设备命名(CONSISTENT NETWORK DEVICE NAMING),可以根据固件、拓扑、位置信息来设置固定名字,带来的好处是命名自动化,名字完全可预测,在硬件坏了以后更换也不会影响设备的命名,这样可以让硬件的更换无缝化,带来的不利是新的设备名称比传统的名称难以阅读。

版权声明:
作者:EzioTA
链接:http://blog.acdts.top/eziota/openstack-wiki-2-openstack-%e5%ae%89%e8%a3%85/
来源:ETA's Blog
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>
文章目录
关闭
目 录