先电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 |
创建完成后如图:
图3 创建controller
图4 创建compute
小提示:
创建虚拟机后可以在安装的不同阶段创建快照,这样方便重复实验,也便于实验回退,推荐在创建虚拟机时、安装操作系统后、配置完系统环境后这3个阶段创建快照,方便使用。
创建完毕虚拟机后记得在虚拟机设置-->CPU设置中打开虚拟化功能。
安装操作系统
关闭网卡自动命名
在Cent OS的更新中,有了网卡自动命名的功能,但是我们在安装OpenStack时不需要这个,所以在安装系统之前先关闭自动命名。
在开机引导镜像安装时使用tab
键进入编辑模式,输入net.ifnames=0 biosdevname=0
来关闭网卡自动命名。
图5 关闭网卡自动命名
图6 成功关闭网卡自动命名
小提示:
并不是所有服务器关闭自动命名后都是eth0的格式,也有enp2s0等格式。
如果在这一步没有成功也不用担心,并不影响后续的安装配置。
系统分区
在硬盘分区中,需要安装存储服务的硬盘保持空白,系统盘分区不需要/home
目录。
小提示:
如果是在实验环境中进行安装,root密码可以设置的简单点,方便为主,但在生产环境中一定要注意密码问题。
安装系统时时区也要记得修改。
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
命令查看网卡配置
小提示:
在配置完毕网卡后就可以使用SSH工具远程连接到虚拟机进行后面的配置了。
使用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
小提示:
在compute节点安装服务时,必须要在controller节点安装完毕后才能安装,不然会出现无法挂载的情况。
安装顺序打眼一看就在环境变量配置文件里面,顺序差别不大。
结尾
到这里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
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论