PS: 原创作品,严禁用于商业目的。如有任何技术问题,欢迎和我交流:w104118078  (微信号)

一、基础环境准备

OpenStack云平台搭建需要两个节点:controller(控制节点),compute(计算节点)

控制节点(controller)规划如下:

        一块200G的硬盘。两块网卡,第一块网卡(桥接模式)IP地址使用192.168.100.100,第二块网卡(仅主机模式)IP地址使用192.168.200.100

计算节点(compute)规划如下:

        一块200G的硬盘和一块100G的硬盘。两块网卡,第一块网卡(桥接模式)IP地址使用192.168.100.200,第二块网卡(仅主机模式)IP地址使用192.168.200.200。

PS:  在VMware中将仅主机模式的DHCP服务关闭,并将网络分配地址更改为192.168.200.0        255.255.255.0

云平台搭建需要使用centos7.0版本的镜像和chinaskills_cloud_iaas.iso镜像,镜像提供如下:

centos7.0镜像链接:https://pan.baidu.com/s/1v0xOq7N6WSofosa7AEMb-A?pwd=chjx

iaas镜像链接:https://pan.baidu.com/s/1stR_BCNPUEYrIrOpzjItAA?pwd=chjx 


二、搭建OpenStack云平台

controller节点配置:

## 1.controller 网络配置

[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=233.5.5.5
DNS2=114.114.114.114
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=ens33
UUID=4933c159-8fcb-4646-a29f-6b5c8b4e79f
DEVICE=ens33
ONBOOT=yes

[root@controller ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.200.100
NETMASK=255.255.255.0
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=ens34
UUID=932fef43-d94a-4a84-9b3f-428a85af8858
DEVICE=ens34
ONBOOT=yes

## 2.修改主机名

[root@localhost ~]# hostnamectl set-hostname controller

[root@controller ~]# bash 

## 3.修改 hosts 文件将 IP 地址映射为主机名

[root@controller ~] vi /etc/hosts
192.168.100.100 controller
192.168.100.200 compute

## 4.关闭防火墙

[root@controller ~]# systemctl disable firewalld

[root@controller ~]# systemctl stop firewalld

## 5.设置seLinux

SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)

状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭

[root@controller ~]# setenforce 0        # 临时设置等级,重启失效

[root@controller ~]# vi /etc/selinux/conf        #  重启后,永久生效
SELINUX=permissive

## 6.配置Yum源

上传 CentOS 7 ISO镜像文件和iaas ISO镜像文件到controller主机root目录下面

[C:\~]$ scp D:\chinaskills_cloud_iaas.iso root@192.168.200.100:/root

[C:\~]$ scp D:\CentOS-7-x86_64-DVD-1804.iso root@192.168.200.100:/root

[root@controller ~]# ls
anaconda-ks.cfg  CentOS-7-x86_64-DVD-1804.iso  chinaskills_cloud_iaas.iso

挂载镜像到opt目录下(临时挂载,重启失效)

[root@controller ~]# mount -o loop chinaskills_cloud_iaas.iso /opt/iaas/
mount: /dev/loop is write-protected, mounting read-only

[root@controller ~]# mount -o loop CentOS-7-x86_64-DVD-1804.iso /opt/centos/
mount: /dev/loop is write-protected, mounting read-only

——————————————————————————————————————————————————————————————————————————————————————

[root@controller ~]# vi /etc/fstab       # 永久挂载

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=fda6f1d5-b8c5-4401-a68b-b2ab67ed8370 /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0

#添加以下内容
#镜像名称								挂载路径			格式		
/root/CentOS-7-x86_64-DVD-1804.iso      /opt/centos     iso9660 defaults        0 0
/root/chinaskills_cloud_iaas.iso        /opt/iaas       iso9660 defaults        0 0

[root@controller ~]# gzip /etc/yum.repo.d/*        # 使原yum源失效

[root@controller ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@controller ~]# yum clean all        # 清除yum源缓存

[root@controller ~]# yum repolist        # 验证yum源

## 7.搭建vsftpd

[root@controller ~]# yum install -y vsftpd

[root@controller ~]# echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf    # 修改vsftp 共享服务根目录

[root@controller ~]# systemctl enable vsftpd

[root@controller ~]# systemctl start vsftpd

## 8.时间同步配置

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

[root@controller ~]# vi /etc/chrony.conf        # 修改配置文件

server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.100.0/24
local stratum 10
logdir /var/log/chrony

[root@controller ~]# systemctl restart chronyd        # 重启chrony服务

[root@controller ~]# systemctl enable chronyd         # 设置开机自启动

compute节点配置:

## 1.compute 网络配置

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.100.200
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
DNS1=233.5.5.5
DNS2=114.114.114.114
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=ens33
UUID=4933c159-8fcb-4646-a29f-6b5c8b4e79f8
DEVICE=ens33
ONBOOT=yes

[root@compute ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens34
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=192.168.200.200
NETMASK=255.255.255.0
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=ens34
UUID=932fef43-d94a-4a84-9b3f-428a85af8858
DEVICE=ens34
ONBOOT=yes

## 2.修改主机名

[root@localhost ~]# hostnamectl set-hostname compute

[root@compute ~]# bash 

## 3.修改 hosts 文件将 IP 地址映射为主机名

[root@compute ~] vi /etc/hosts
192.168.100.100 compute
192.168.100.200 compute

## 4.关闭防火墙

[root@compute ~]# systemctl disable firewalld

[root@compute ~]# systemctl stop firewalld

## 5.设置seLinux

SELinux有两个级别:
强制、警告
setenforce 0 :表示警告(Permissive)
setenforce 1 :表示强制(Enforcing)

状态分为以下三种:
SELINUX=enforcing #selinux开启,级别为强制
SELINUX=permissive #selinux开启,级别为警告
SELINUX=disabled #selinux关闭

[root@compute ~]# setenforce 0        # 临时设置等级,重启失效

[root@compute ~]# vi /etc/selinux/conf        #  重启后,永久生效
SELINUX=permissive

## 6.配置Yum源

[root@compute ~]# gzip /etc/yum.repo.d/*        # 使原yum源失效

[root@compute ~]# vi /etc/yum.repo.d/local.repo
[centos]
name=centos
baseurl=ftp://controller/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://controller/iaas/iaas-repo
gpgcheck=0
enabled=1

[root@compute ~]# yum clean all        # 清除yum源缓存

[root@compute ~]# yum repolist        # 验证yum源

## 7.时间同步设置

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

[root@compute ~]# vi /etc/chrony.conf

server controller iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony

[root@compute ~]# systemctl restart chronyd        # 重启chrony服务

[root@compute ~]# chronyc sources -v
# 结尾显示为 ^* controller  则是同步成功

## 8.设置硬盘分区

[root@compute ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part 
  ├─centos-root 253:0    0   17G  0 lvm  /
  └─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0  200G  0 disk 
sr0              11:0    1  4.2G  0 rom

[root@compute ~]# fdisk /dev/sdb

Command (m for help): n
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-419430399, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-419430399, default 419430399): +25G    # 输入 +25G ,将sdb 硬盘分区1 设置为25G大小

Command (m for help): n
Select (default p): p
Partition number (2-4, default 2): 
First sector (52430848-419430399, default 52430848): 
Using default value 52430848
Last sector, +sectors or +size{K,M,G} (52430848-419430399, default 419430399): +25G    # 
 输入 +20G ,将sdb 硬盘分区2 设置为25G大小
Partition 2 of type Linux and of size 25 GiB is set

Command (m for help): w        # 输入w更新磁盘并退出
The partition table has been altered!

三、正式搭建OpenStack云平台

controller节点配置:

[root@controller ~]# yum install -y iaas-xiandian

[root@controller ~]# vi /etc/xiandian/openrc.sh
命令模式下输入::%s/^#//g                # 将#号去掉

 
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.100        #controller节点的IP地址
 
#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.200        #compute节点的IP地址
 
#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        #controller节点所在的网段
 
#--------------------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.100        #本机IP地址
 
#External Network Interface. example:eth1
INTERFACE_NAME=ens33
 
#External Network The Physical Adapter. example:provider
Physical_NAME=provider
 
#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=sdb1        #compute节点的存储块
 
#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
 
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdb2        #compute节点的存储块
 
#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.100.200    #compute节点的IP地址
 
#--------------------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

[root@controller ~]# source /etc/xiandian/openrc.sh        # 环境配置生效

[root@controller ~]# scp /etc/xiandian/openrc.sh root@compute:/etc/xiandian/openrc.sh    # 将controller节点的脚本拷贝到compute节点

compute节点配置:

[root@compute ~]# yum install -y iaas-xiandian

[root@compute ~]# vi /etc/xiandian/openrc.sh        # 修改脚本

INTERFACE_IP=192.168.100.200        #本机IP地址

 刷脚本:

controller节点:

  安装OpenStack包,配置域名解析,防火墙和Selinux,安装NTP服务等
​[root@controller ~]# iaas-pre-host.sh         # 刷完脚本后需要重启

PS:注意使用临时挂载的话,controller节点重启后,需要重新挂载yum源

  安装RabbitMQ服务、Mysql、memcahce等
[root@controller ~]# iaas-install-mysql.sh


  安装keystone服务包,创建Keystone数据库,配置数据库连接
[root@controller ~]# iaas-install-keystone.sh

  安装Glance镜像服务包,创建Glance数据库,配置数据库连接
[root@controller ~]# iaas-install-glance.sh

  安装nova
[root@controller ~]# iaas-install-nova-controller.sh

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

  安装Dashboard
[root@controller ~]# iaas-install-dashboard.sh

compute节点:

  安装OpenStack包,配置域名解析,防火墙和Selinux,安装NTP服务等
[root@compute ~]# iaas-pre-host.sh            # 刷完脚本后需要重启

  安装nova
[root@compute ~]# iaas-install-nova-compute.sh

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

四、 登录OpenStack云平台

在浏览器界面输入192.168.100.100/dashboard

Logo

一起探索未来云端世界的核心,云原生技术专区带您领略创新、高效和可扩展的云计算解决方案,引领您在数字化时代的成功之路。

更多推荐