一、基础环境

controller:8G、4cpus、100G磁盘

compute:8G、4cpus、100G磁盘、20G磁盘

镜像文件:

CentOS-7-x86_64-DVD-2009

链接: https://pan.baidu.com/s/14zfhCHgXQcrXM8bFPc96pA   提取码: 9482 

chinaskills_cloud_iaas_v2.0.3

链接: https://pan.baidu.com/s/1ajHVabsfg7KIpBrLzNo4QQ      提取码: qkf5 

主机名 网卡类型 IP地址
controller NAT 192.168.220.10
controller 仅主机 192.168.110.10
compute NAT 192.168.220.20
compute 仅主机 192.168.110.20

二、系统配置

controller节点

  • 关闭防火墙

[root@controller ~]# systemctl stop firewalld.service
[root@controller ~]# systemctl disable firewalld.service
[root@controller ~]# systemctl status firewalld.service
  • 关闭NetworkManager服务

[root@controller ~]# systemctl stop NetworkManager
[root@controller ~]# systemctl disable NetworkManager
[root@controller ~]# systemctl status NetworkManager
  • 关闭selinux保护

[root@controller ~]# vi /etc/selinux/config
SELINUX=disabled
  • 配置网卡

## NAT网卡
[root@controller network-scripts]# vi ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.220.10"
PREFIX="24"
GATEWAY="192.168.220.2"
DNS1="114.114.114.114"

## 仅主机网卡
[root@controller network-scripts]# vi ifcfg-ens34
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens34"
DEVICE="ens34"
ONBOOT="yes"
IPADDR="192.168.110.10"
PREFIX="24"

## 重启网络,是网卡配置生效
[root@controller network-scripts]# systemctl restart network
  • 配置域名解析

[root@controller ~]# echo '192.168.110.10 controller' >> /etc/hosts
[root@controller ~]# echo '192.168.110.20 compute' >> /etc/hosts
[root@controller ~]# cat /etc/hosts
192.168.110.10 controller
192.168.110.20 compute

上述配置完成后,可进行拍摄快照、关机,克隆出compute节点

compute节点

  •  配置网卡

## NAT网卡
[root@compute network-scripts]# vi ifcfg-ens33
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.220.20"
PREFIX="24"
GATEWAY="192.168.220.2"
DNS1="114.114.114.114"

## 仅主机网卡
[root@compute network-scripts]# vi ifcfg-ens34
TYPE="Ethernet"
BOOTPROTO="static"
NAME="ens34"
DEVICE="ens34"
ONBOOT="yes"
IPADDR="192.168.110.20"
PREFIX="24"

三、 配置Yum源

 controller节点

[root@controller ~]# ls
anaconda-ks.cfg  chinaskills_cloud_iaas_v2.0.3.iso
# 在/opt目录下创建两个子目录,花括号 `{}` 是 Bash 的扩展语法,允许一次性创建多个目录。
[root@controller ~]# mkdir /opt/{centos7,iaas}
[root@controller ~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
# 将ISO镜像中的所有文件提取到指定的目录
[root@controller ~]# cp -rvf /mnt/* /opt/centos7/
[root@controller ~]# umount /mnt/

-o 为只读,loop以回环设备形式进行挂载,可查阅其中内容
挂载物理光驱:直接使用 mount,无需 -o loop;
挂载 ISO 文件:需 -o loop。

[root@controller ~]# mount -o loop ./chinaskills_cloud_iaas_v2.0.3.iso /mnt
mount: /dev/loop0 is write-protected, mounting read-only
[root@controller ~]# cp -rvf /mnt/* /opt/iaas
[root@controller ~]# umount /mnt/

[root@controller ~]# rm -f /etc/yum.repos.d/* 
# 配置controller节点Yum安装源文件local.repo,指向本地文件目录路径。
[root@controller ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos7-2009
baseurl=file:///opt/centos7
gpgcheck=0
enabled=1
[openstack]
name=openstack-train
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@controller ~]# yum clean all && yum repolist
Loaded plugins: fastestmirror
Cleaning repos: centos openstack
Cleaning up list of fastest mirrors
Loaded plugins: fastestmirror
Determining fastest mirrors
centos                                                   | 3.6 kB     00:00
openstack                                                | 2.9 kB     00:00
(1/3): centos/group_gz                                     | 153 kB   00:00
(2/3): openstack/primary_db                                | 597 kB   00:00
(3/3): centos/primary_db                                   | 3.3 MB   00:00
repo id                           repo name                               status
centos                            centos7-2009                            4,070
openstack                         openstack-train                           954
repolist: 5,024

# 在controller节点使用Yum安装vsftpd服务,并将/opt目录下的文件共享出去。
[root@controller ~]# yum install -y vsftpd
Installed:
  vsftpd.x86_64 0:3.0.2-28.el7                                                  
Complete!
# 添加匿名访问用户
[root@controller ~]# echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf
[root@controller ~]# systemctl start vsftpd
[root@controller ~]# systemctl enable vsftpd

 compute节点

# 配置compute节点Yum安装源文件local.repo,指向controller节点的共享文件目录路径。

[root@compute ~]# rm -f /etc/yum.repos.d/* 
[root@compute ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos7-2009
baseurl=ftp://controller/centos7
gpgcheck=0
enabled=1
[openstack]
name=openstack-train
baseurl=ftp://controller/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@compute ~]# yum clean all && yum repolist
Loaded plugins: fastestmirror
Cleaning repos: centos openstack
Cleaning up list of fastest mirrors
Loaded plugins: fastestmirror
Determining fastest mirrors
centos                                                   | 3.6 kB     00:00
openstack                                                | 2.9 kB     00:00
(1/3): centos/group_gz                                     | 153 kB   00:00
(2/3): openstack/primary_db                                | 597 kB   00:00
(3/3): centos/primary_db                                   | 3.3 MB   00:00
repo id                           repo name                               status
centos                            centos7-2009                            4,070
openstack                         openstack-train                           954
repolist: 5,024

四、时间同步配置

controller节点

compute节点 

[root@controller ~]# yum install -y chrony
[root@compute ~]# yum install -y chrony

[root@controller ~]# vi /etc/chrony.conf
# 将以下配置行删除或注释掉:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# 添加阿里云提供的ntp服务器
server ntp.aliyun.com iburst
# 当外网的ntp服务器不可用时,可采用本地时间作为同步标准
local stratum 1
# 设置同网段的主机使用本机的ntp服务
allow 192.168.110.0/24

[root@controller ~]# systemctl restart chronyd && systemctl enable chronyd

[root@compute ~]# vi /etc/chrony.conf
# 将以下配置行删除或注释掉:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
# 添加控制节点的时间同步服务器,使计算节点与控制节点进行对时
server controller iburst

[root@compute ~]# systemctl restart chronyd && systemctl enable chronyd
# 测试时间是否同步
[root@compute ~]# chronyc sources

 五、划分分区

compute节点

# 需要给cinder、swift和manila服务各提供一块空白分区,总共需要三个分区

[root@compute ~]# lsblk
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    253:0    0  40G  0 disk
└─sda1 253:1    0  40G  0 part /
sdb    253:16   0  20G  0 disk
sdc    253:32   0   1M  0 disk


# 对/dev/sdb进行分区
[root@controller ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0xa80a782d.

# 输入命令 n(即new partitio)后的交互界面,表示开始创建新分区
Command (m for help): n
# 输入 p 创建主分区(最多 4 个)
# 若需创建逻辑分区,需先创建扩展分区(输入 e)
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
# 创建主分区
Select (default p): p
# 设置分区编号,若首次分区,默认分配编号 1,即生成 /dev/sdb1
Partition number (1-4, default 1):
# 起始扇区(First sector)通常保持默认值(直接回车)
First sector (2048-41943039, default 2048):
Using default value 2048
# 结束扇区(Last sector),设置分区大小为7G,直接回车则使用默认结束扇区(即剩余最大可用空间)
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): +7G
Partition 1 of type Linux and of size 7 GiB is set

Command (m for help): n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
Partition number (2-4, default 2):
First sector (14682112-41943039, default 14682112):
Using default value 14682112
Last sector, +sectors or +size{K,M,G} (14682112-41943039, default 41943039): +7G
Partition 2 of type Linux and of size 7 GiB is set

Command (m for help): n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): p
Partition number (3,4, default 3):
First sector (29362176-41943039, default 29362176):
Using default value 29362176
#直接回车,分得剩余最大可用空间
Last sector, +sectors or +size{K,M,G} (29362176-41943039, default 41943039):
Using default value 41943039
Partition 3 of type Linux and of size 6 GiB is set

# 输入 p(即print partition tabl)会显示当前磁盘 /dev/sdb 的分区表信息
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0xa80a782d

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    14682111     7340032   83  Linux
/dev/sdb2        14682112    29362175     7340032   83  Linux
/dev/sdb3        29362176    41943039     6290432   83  Linux

Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.


# 更新/dev/sdb分区
[root@compute ~]# partprobe /dev/sdb

[root@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   99G  0 part
  ├─centos-root 253:0    0   50G  0 lvm  /
  ├─centos-swap 253:1    0  7.9G  0 lvm  [SWAP]
  └─centos-home 253:2    0 41.1G  0 lvm  /home
sdb               8:16   0   20G  0 disk
├─sdb1            8:17   0    7G  0 part
├─sdb2            8:18   0    7G  0 part
└─sdb3            8:19   0    6G  0 part
sr0              11:0    1  4.4G  0 rom


# 格式化分区
[root@compute ~]# mkfs.xfs /dev/sdb1
[root@compute ~]# mkfs.xfs /dev/sdb2
[root@compute ~]# mkfs.xfs /dev/sdb3

六、 Openstack云平台部署

controller节点执行脚本的顺序:

mysql组件 -- keystone组件 -- glance组件 -- nova-controller组件 -- neutron-controller组件 -- dashboard组件 -- cinder-controller组件 -- swift-controller组件

compute节点执行脚本的顺序

nova-compute组件 -- neutron-compute组件 -- cinder-compute组件 -- swift-compute组件

跑完controller节点,再跑compute节点!!!

1、配置环境变量

controller节点

compute节点​

# 安装OpenStack云平台的安装脚本软件包
[root@controller ~]# yum install -y openstack-iaas
[root@compute ~]# yum install -y openstack-iaas

# 修改环境变量
[root@controller ~]# vi /etc/openstack/openrc.sh
# 删除每行前1个字符,再按ESC键输入:wq保存退出
:%s/^.\{1\}//
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.110.10   

#Controller HOST Password. example:000000
HOST_PASS=root     #controller节点root用户密码

#Controller Server hostname. example:controller
HOST_NAME=controller

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

#Compute HOST Password. example:000000
HOST_PASS_NODE=root    #compute节点root用户密码

#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.110.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

#--------------------Placement Config----------------------##
#Password for Mysql placement user. exmaple:000000
PLACEMENT_DBPASS=000000

#Password for Keystore placement user. exmaple:000000
PLACEMENT_PASS=000000

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

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

#--------------------Neutron 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=ens33   # NAT网卡

#External Network The Physical Adapter. example:provider
Physical_NAME=provider

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

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

#--------------------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=sdb1   

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

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

#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.110.20   # compute节点IP

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

#Password for Keystore trove user. exmaple:000000
TROVE_PASS=000000

#--------------------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 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

#--------------------ZUN Config----------------##
#Password for Mysql ZUN user. exmaple:000000
ZUN_DBPASS=000000

#Password for Keystore ZUN user. exmaple:000000
ZUN_PASS=000000

#Password for Keystore KURYR user. exmaple:000000
KURYR_PASS=000000

#--------------------OCTAVIA Config----------------##
#Password for Mysql OCTAVIA user. exmaple:000000
OCTAVIA_DBPASS=000000

#Password for Keystore OCTAVIA user. exmaple:000000
OCTAVIA_PASS=000000

#--------------------Manila Config----------------##
#Password for Mysql Manila user. exmaple:000000
MANILA_DBPASS=000000

#Password for Keystore Manila user. exmaple:000000
MANILA_PASS=000000

#The NODE Object Disk for Manila. example:md126p5.
SHARE_DISK=sdb3

#--------------------Cloudkitty Config----------------##
#Password for Mysql Cloudkitty user. exmaple:000000
CLOUDKITTY_DBPASS=000000

#Password for Keystore Cloudkitty user. exmaple:000000
CLOUDKITTY_PASS=000000

#--------------------Barbican Config----------------##
#Password for Mysql Barbican user. exmaple:000000
BARBICAN_DBPASS=000000

#Password for Keystore Barbican user. exmaple:000000
BARBICAN_PASS=000000


# 将文件传给计算节点
[root@controller ~]# scp /etc/openstack/openrc.sh root@compute:/etc/openstack/openrc.sh

 2、部署Openstack云平台基础环境

controller节点

compute节点​

[root@controller ~]# iaas-pre-host.sh
[root@controller ~]# reboot

[root@compute ~]# iaas-pre-host.sh
[root@compute ~]# reboot

 3、部署Mariadb数据库及Rabbit消息队列服务

 controller节点

[root@controller ~]# iaas-install-mysql.sh

 4、部署keystone服务

 controller节点

[root@controller ~]# iaas-install-keystone.sh

5、部署Glance服务

 controller节点

[root@controller ~]# iaas-install-glance.sh

6、部署Nova服务

 controller节点

 compute节点

[root@controller ~]# iaas-install-nova-controller.sh
# 执行完上面的脚本后,在compute节点执行脚本部署Nova组件的计算服务,这样就将compute节点的CPU、内存及磁盘资源添加到OpenStack云平台的资源池中了。
[root@compute ~]# iaas-install-nova-compute.sh

7、部署Neutron服务

 controller节点

 compute节点

[root@controller ~]# iaas-install-neutron-controller.sh
[root@compute ~]# iaas-install-neutron-compute.sh

8、部署Dashboard服务

controller节点

[root@controller ~]# iaas-install-dashboard.sh
安装完成后,可使用浏览器访问openstack云平台
地址:http://192.168.110.10/dashboard
域:demo  用户名:admin  密码:000000

9、部署Cinder服务

controller节点

compute节点

[root@controller ~]# iaas-install-cinder-controller.sh
[root@compute ~]# iaas-install-cinder-compute.sh

10、部署Swift服务

controller节点

compute节点

[root@controller ~]# iaas-install-swift-controller.sh
[root@compute ~]# iaas-install-swift-compute.sh

七、创建cirros云主机

1、上传镜像

controller节点

# 导入环境变量
[root@controller ~]# source /etc/keystone/admin-openrc.sh
# 将cirros镜像上传到Glance服务中
[root@controller ~]# glance image-create --name cirros --disk-format qcow2 --container-format bare < /opt/iaas/images/cirros-0.3.4-x86_64-disk.img

2、创建net网络

controller节点

[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]# openstack network create net 
[root@controller ~]# openstack subnet create sub-net --subnet-range 192.168.220.0/24 --gateway 192.168.110.1 --network net

3、创建云主机

回到openstack的dashboard页面,创建云主机

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐