先电iaas V2.4搭建记录

写在前面

今天花了1天的时间终于成功的搭建出来了先电的iaas平台,现在不叫先电了,叫国基北盛了。那么就在晚上来复盘下搭建的过程,并进行记录,这样也算是温故知新了。

在这篇记录中,我将会对一些小技巧或者以前经常出错的地方进行标记。

环境配置

在进行项目部署之前,我们照例对应用环境进行盘点。

下面是系统配置:

操作系统 Win10 20H2 家庭版
CPU R5 4600H 6C12T
RAM 16GB
虚拟机 VMware workstation

节点规划

在进行安装之前我们要先对节点进行规划,本次我们采用双节点的方式安装OpenStack,我们划分出控制和计算两个节点,具体规划如下:

项目 controller compute
计算机名 controller compute
网卡1 192.168.100.10 192.168.100.20
网卡2 192.168.253.10 192.168.253.20
系统版本 Cent OS 7_x64_1804 Cent OS 7_x64_1804
仓库 本地仓库 本地仓库

网络规划

安装环境的网络规划为两路网络,192.168.100.0/24 规划到服务器之间进行管理;192.168.253.0/24 作为外部网络访问,在完成平台安装后用于云主机访问外部网络。拓扑图如下:

网段 功能
192.168.100.0/24 服务器集群管理网络
192.168.253.0/24 外部网络

网络拓扑图

图1 网络拓扑图

节点任务规划

控制节点部署多个服务的控制端(controller),计算节点部署基础的运算服务外同时部署块存储(cinder)和对象存储(swift)服务,具体规划如下:

节点规划图

图2 节点服务规划图

安装部署

创建虚拟机

在使用搭建平台之前,使用VMware创建虚拟机来模拟实验环境,现将虚拟机配置整理如下表:

项目 controller compute
CPU 4 4
RAM 4 GB 4GB
硬盘1 40 GB 40 GB
硬盘2 50 GB
硬盘3 50 GB
网卡1 仅主机模式 仅主机模式
网卡2 NAT NAT
系统镜像 CentOS-7-x86_64-DVD-1804.iso CentOS-7-x86_64-DVD-1804.iso

创建完成后如图:

创建controller节点

图3 创建controller

创建compute节点

图4 创建compute

小提示:

  1. 创建虚拟机后可以在安装的不同阶段创建快照,这样方便重复实验,也便于实验回退,推荐在创建虚拟机时、安装操作系统后、配置完系统环境后这3个阶段创建快照,方便使用。

  2. 创建完毕虚拟机后记得在虚拟机设置-->CPU设置中打开虚拟化功能。

安装操作系统

关闭网卡自动命名

在Cent OS的更新中,有了网卡自动命名的功能,但是我们在安装OpenStack时不需要这个,所以在安装系统之前先关闭自动命名。

在开机引导镜像安装时使用tab键进入编辑模式,输入net.ifnames=0 biosdevname=0来关闭网卡自动命名。

关闭网卡自动命名

图5 关闭网卡自动命名

成功关闭网卡自动命名

图6 成功关闭网卡自动命名

小提示:

  1. 并不是所有服务器关闭自动命名后都是eth0的格式,也有enp2s0等格式。

  2. 如果在这一步没有成功也不用担心,并不影响后续的安装配置。

系统分区

在硬盘分区中,需要安装存储服务的硬盘保持空白,系统盘分区不需要/home目录。

小提示:

  1. 如果是在实验环境中进行安装,root密码可以设置的简单点,方便为主,但在生产环境中一定要注意密码问题。

  2. 安装系统时时区也要记得修改。

Cent OS配置

配置计算机名

直接使用hostnamectl set-hostname controller/compute来修改计算机名,修改完毕后断开终端再连接就可以了。

配置网卡

在Cent OS中,网卡配置是以文件的方式存放在/etc/sysconfig/netowrk-script/目录中,网卡配置模板如下:

# 本次展示的配置模板是controller节点的eth0网卡,是服务器集群的管理网络 
[root@controller ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0 TYPE=Ethernet 
PROXY_METHOD=none 
BROWSER_ONLY=no 
BOOTPROTO=none # 网络工作模式,dhcp是自动获取,static是静态配置,none是不配置 
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=9d76c747-b93a-4691-b902-503549484390 
DEVICE=eth0 # 网卡驱动名 
ONBOOT=yes # 是由启动网卡,yes启动,no关闭 IPADDR=192.168.100.10 # IP地址 PREFIX=24 # 子网掩码,也可写作NETMASK=255.255.255.0 
GATEWAY=192.168.100.1 # 默认网关 
IPV6_PRIVACY=no​

配置完毕网卡后需要重启网络服务,命令为:systemctl restart network,也可以使用ip a命令查看网卡配置。

 

图7 使用ip a命令查看网卡配置

小提示:

  1. 在配置完毕网卡后就可以使用SSH工具远程连接到虚拟机进行后面的配置了。

  2. 使用SSH工具远程连接服务器用起来非常方便,轻松管理多台服务器。

hosts文件配置

hosts文件能够在本地建立静态的IP到主机名映射文件,简单说就是可以使用计算机名转换出对方的IP。

Cent OS中hosts文件在/etc/hosts,使用vi编辑器直接在后面添加即可,下面我将展示两种添加方法:

# 第一种方法:直接打开进行编辑
vi /etc/hosts
	# 在末尾添加
	192.168.100.10 controller
	192.168.100.20 compute
# 第二种方法:使用echo命令追加
echo 192.168.100.10 controller >> /etc/hosts
echo 192.168.100.20 compute >> /etc/hosts

 

 

关闭防火墙

systemctl stop firewalld && systemctl disable firewalld	# 先关闭防火墙,然后取消开机启动

 

关闭SELinux

setenforce 0 && sed -i -e "s/=enforcing/=permissive/" /etc/selinux/config	# 先临时关闭,接着修改配置文件直接关闭

存储服务分区

对于存储服务使用的分区来说,并没有什么区别,所以在此只展示分区的的方法,本次分区使用的parted工具。

# 演示对象为compute节点的sdb硬盘
lsblk	# 使用lsblk命令来查看硬盘分区情况
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   40G  0 disk 	
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   39G  0 part 
  ├─centos-root 253:0    0 35.1G  0 lvm  /
  └─centos-swap 253:1    0  3.9G  0 lvm  [SWAP]
sdb               8:16   0   50G  0 disk 
sdc               8:32   0   50G  0 disk 
sr0              11:0    1  4.2G  0 rom
# 开始进行分区
parted /dev/sdb 	# 进入sdb硬盘
GNU Parted 3.1
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p			# 查看硬盘信息
Error: /dev/sdb: unrecognised disk label
Model: VMware, VMware Virtual S (scsi)                                    
Disk /dev/sdb: 53.7GB	# 硬盘大小
Sector size (logical/physical): 512B/512B
Partition Table: unknown	# 硬盘分区表类型	unkown 未知,gpt GPT分区
Disk Flags: 
(parted) mklabel      		# 创建分区表                                                    
New disk label type? gpt              # 分区类型gpt                                    
(parted) mkpart cindet 0G 50G	# 创建分区 分区名:cinder 初始点:0G 结束点:50G
(parted) p                                                                
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 53.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name    Flags
 1      1049kB  50.0GB  50.0GB               cindet			# 分区完成

(parted) q          # 退出
# 格式化分区
mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=3051712 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=12206848, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=5960, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

配置本地仓库

 

controller节点配置本地仓库

本次搭建我们以私有云为主,所以我们需要使用本地仓库来实现软件的安装。

上传镜像文件到服务器

使用SFTP工具上传镜像到服务器,我们需要上传系统镜像CentOS-7-x86_64-DVD-1804.iso和iaas镜像 。

复制镜像内容到指定目录

在编写yum仓库文件之前,我们先规划出来镜像文件存放位置。我们在/opt目录下创建centos目录来存放系统镜像,将iaas镜像内容直接存放到/opt下即可。

mkdir /opt/centos	# 创建文件夹
mount -o loop CentOS-7-x86_64-DVD-1804.iso /mnt	# 挂在系统镜像到/mnt目录作为中转
cp -rvf /mnt/* /opt/centos	# 复制系统镜像到/opt/centos目录
umount /mnt		# 取消挂载,方便iaas镜像挂载
mount -o loop iaas.iso	/mnt	# 挂载iaas镜像到/mnt 目录
cp -rvg /mnt/* /opt
umount /mnt

编写yum文件

在Cent OS中,仓库列表在/etc/yum.repo.d/目录下,我们备份系统自带的yum文件,然后创建自己的yum文件并进行测试。

mv /etc/yum.repo.d/* /media		# 备份原始yum文件
cat /etc/yum.repo.d/centos.repo	# 创建centos.repo文件,下面内容时文件内的内容,大体布局如下
[centos]						# 节点分割
name=centos					# 仓库名称
baseurl=file:///opt/centos	# 仓库连接
enabled=1						# 启动仓库
gpgcheck=0					# 关闭GPG检查

[iaas]
name=iaas
baseurl=file:///opt/iaas-repo
enabled=1
gpgcheck=o
# 检测yum文件的正确性
yum clean all	# 清楚yum缓存
yum list		# 查看yum列表	有输出就说明正确

安装配置vsftpd

vsftpd是Cent OS下常用的FTP服务器端,我们使用vsftpd作为FTP工具为计算节点提供远程仓库连接,这样其他节点只用配置yum文件不需要在本地部署仓库,节约了存储空间。

yum install -y vsftpd		# 安装
echo anon_root=/opt/ >> /etc/vsftpd/vsftpd.conf		# 配置匿名用户默认目录为/opt目录
systemctl start vsftpd && systemctl enable vsftpd	# 开启服务器并添加到开机启动

 到此基础配置中controller节点已经配置完成,接下来我们开始compute节点的基础配置

compute节点配置远程仓库

compute节点的配置比较简单,只用添加一分yum文件就可以了,下面附上yum文件。

cat /etc/yum.repo.d/ftp.repo
[centos]
name=centos
baseurl=ftp://192.168.100.10/centos
enabled=1
gpgcheck=0

[iaas]
name=iaas
baseurl=ftp://192.168.100.10/iaas-repo
enabled=1
gpgcheck=0

 配置iaas安装环境变量

在完成操作系统的基础配置后,我们就可以安装iaas基础平台,来配置环境变量用于安装OpenStack。

# 在controller和compute节点安装iaas-xiandian软件包
yum install -y iaas-xiandian
# 编辑openrc.sh文件,成品如下
cat /etc/xiandian/openrc.sh
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.10		# 控制节点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.20		# 计算节点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		# 服务器管理网段

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

#Password for rabbit user .example:000000
RABBIT_PASS=000000		# Rabbit密码

#--------------------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		# 本机IP地址,这是网络服务调用,所以使用主机自己的IP

#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=1						# 最小Vlan

#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=300						# 最大Vlan 要大于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

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

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

#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.100.20		# swift主机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

 环境变量这一块也就这些内容,配置好以后发送到compute节点,稍作修改就可以使用了。

scp /etc/xiandian/openrc.sh root@192.168.100.20:/etc/xiandian       # 使用SCP命令发送到compute节点

安装OpenStack服务

在所有节点安装iaas-pre-host服务,完成主机初始化,并退出终端重新进入。

iaas-pre-host.sh

controller节点

# 安装服务顺序
iaas-install-mysql.sh
iaas-install-keystone.sh
iaas-install-glance.sh
iaas-install-nova-controller.sh
iaas-install-neutron-controller.sh
iaas-install-dashboard.sh
iaas-install-cinder-controller.sh
iaas-install-swift-controller.sh

compute节点

# 安装顺序
iaas-install-nova-compute.sh
iaas-install-netruon-compute.sh
iaas-install-cinder-compute.sh
iaas-install-swift-controller.sh

小提示:

  1. 在compute节点安装服务时,必须要在controller节点安装完毕后才能安装,不然会出现无法挂载的情况。

  2. 安装顺序打眼一看就在环境变量配置文件里面,顺序差别不大。

结尾

到这里OpenStack已经安装完毕了,可以进入dashboard里面看一看。

晚上10点开始写,现在已经凌晨1点了,因此不再赘述过多的内容,剩下的使用等内容等后面总结出来再开始编写。

OpenStack的学习是一个积累的过程,厚积薄发,没有特别难的内容,经过长时间的积累,大家都能够轻松学会OpenStack的部署。虚拟机是一个非常方便的工具,其中快照功能非常好用,方便我们在跌倒的地方努力站起来,善用周边的工具,这样就能够学会更多的内容。

过几天开始整理一些常用命令这类的Linux基础知识,进行整理,方便使用和学习。

版权声明:
作者:EzioTA
链接:http://blog.acdts.top/eziota/%e5%85%88%e7%94%b5iaas-v2-4%e6%90%ad%e5%bb%ba%e8%ae%b0%e5%bd%95/
来源:ETA's Blog
文章版权归作者所有,未经允许请勿转载。

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