准备工作:两台CentOS7以上的虚拟机,(CentOS7之前的有许多命令不同)做好资源的分配;
准备镜像两块,CentOS7以上的一块、Iaas服务的基础镜像一块。(这Iaas平台的镜
像是先电下的一个)
节点名称 | 第一张网卡(有网关,外网用) | 第二张网卡(无网关,内网用) | |
控制节点 | controller | 192.168.137.27/24 | 192.168.200.27/24 |
计算节点 | compute | 192.168.137.37/24 | 192.168.200.37/24 |
创建虚拟机,内存给4g,处理器数量2个、内核2个,勾选上虚拟化引擎,如图:
要有两张网卡,我用的镜像是7.5-1804的那块,镜像官网下载
我们先创建一个虚拟机,后面一台直接复制这台,这样更省时间。
开启虚拟机,等待安装,语言根据爱好自选,下面有汉语,最小化安装,给硬盘配置,自己分配,别让系统去干(磁盘空间够的话,资源什么的可以往大了分配,我这磁盘空间不够就将就一下了)。如下:
等待它安装好哈······
网卡的话两张是NAT也行的,第一张的话有网关就行用做openstack里面实例的外网,第二张就当做内网用。
root登录,输入密码,进入网络配置文件(#符号后面跟着的是注释哈,不要写进去,我写是为了解释一下这些东西的):
cd /etc/sysconfig/network-scripts/
###编辑第一张网卡
vi ifcfg-ens33
###英文状态下按i键是进入输入模式,输好后按esc键退出输入模式,“:wq”是保存文档,“:q!”强制退出
###内容,写完后记得保存下来
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static #网卡状态,系统默认为DHCP分发IP模式,static为静态IP
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=51e4cbf2-1a7d-4c25-8d90-253c1d195ce4
DEVICE=ens33 #网卡设备名称
ONBOOT=yes #开机是否生效,系统默认为no,我们需要改为yes
IPADDR=192.168.137.27 #IP
GATEWAY=192.168.137.2 #网关,OpenStack默认可不加
NETMASK=255.255.255.0 #子网掩码,同PREFIX=24等效果
###编辑第二张网卡
vi ifcfg-ens34
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=ens34
UUID=6f6722fb-87b8-4c51-a13f-fe1c67f90b51
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.200.27
NETMASK=255.255.255.0
配置好网络后,重新启动网络,才能用连接工具连接上:
systemctl restart network #重新启动网络
ip a #可以看到网络的配置信息
做好这些配置后,直接关机,最好就做一个快照哈,以备出错的可能,我就错了很多次了。
后面我们就做另外一台了,直接复制(克隆)前面的那一台。
红色的地方要特别注意哈,这样才是完整的将前面做好配置的虚拟机完全复制出来。
开启复制的那台,修改ip,同前面的操作,只要改动ip就好。
最后我们就有两台虚拟机。
给虚拟机该主机名:
####计算节点主机名称,改完退出控制台,重新连接
hostnamectl set-hostname compute
logout
####控制节点主机名称,改完退出控制台,重新连接
hostnamectl set-hostname controller
logout
再而就是给控制节点做磁盘分区了:
lsblk #查看磁盘的信息
fdisk /dev/sda #磁盘分区
fdisk /dev/sda
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.
Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #删除一个分区
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu
n add a new partition #增加一个分区
o create a new empty DOS partition table
p print the partition table #打印磁盘分区情况表
q quit without saving changes
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)
#按n增加分区,让它分区号默认,一直回车,到了Last结束时,写入要给分区空间的大小
Partition type:
p primary (3 primary, 0 extended, 1 free)
e extended
Select (default e):
Using default response e
Selected partition 4
First sector (73154560-125829119, default 73154560):
Using default value 73154560
Last sector, +sectors or +size{K,M,G} (73154560-125829119, default 125829119): +10G
#按p可以查看分好后的结果
Command (m for help): p
Disk /dev/sda: 64.4 GB, 64424509440 bytes, 125829120 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: 0x00094d79
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 52183039 25041920 8e Linux LVM
/dev/sda3 52183040 73154559 10485760 83 Linux
/dev/sda4 73154560 94126079 10485760 5 Extended
#按w,最后就是保存磁盘分区信息,将分区的信息写入
#reboot重启后才能看到最后修改的信息
我这就只有sda一块,就只针对它了,做好分区后,重启,最终是多出sda3、sda4两个分区,一个有10G、另外一个1k(我也不晓得它为什么变成1k了,刚才写分区信息时都给了10G):
写两台虚拟机之间的映射关系:
vi /etc/hosts
#内容,只加ip和主机名。(两台做一样的映射关系)
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.137.27 controller #文件加控制节点IP和主机名
192.168.137.37 compute #文件加计算节点IP和主机名
另外一台可以用远程复制:
#scp远程安全复制命令
#root@ip:要复制的文件路径 复制到当前计算机的路径
scp [email protected]:/etc/hosts /etc/
yes #允许
#要输入远程复制主机的root登录密码
计算节点的配置做好了一半,回到给控制节点来:
给控制节点上传镜像,要挂载用的CentOS-7-x86_64-DVD-2009.iso和chinaskills_cloud_iaas.iso两块文件,再去创建两个挂载目录:
mkdir /opt/centos #在opt目录下创建了centos目录,用来挂载Centos...那块
mkdir /opt/iaas #在opt目录下创建了iaas目录,用来挂载Iaas服务镜像的那块
挂载镜像:
#将镜像(镜像所在路径)挂载在/opt/centos/目录下
mount CentOS-7-x86_64-DVD-2009.iso /opt/centos/
#将镜像(镜像所在路径)挂载在/opt/iaas/目录下
mount chinaskills_cloud_iaas.iso /opt/iaas/
结果:
这样的挂载方式每次开机重启,它镜像都会被系统卸载下来,所以我要给它永久挂载在目录上,一直使用:
####编辑系统挂载文件
vi /etc/fstab
####文件里面的内容增加
/root/CentOS-7-x86_64-DVD-2009.iso /opt/centos iso9660 defaults 0 0
/root/chinaskills_cloud_iaas.iso /opt/iaas iso9660 defaults 0 0
挂载好镜像后,开始配置本地yum源,要先把原有的那些repo文件删掉,我们自己配置自己写一个。控制节点如下:
###查看系统自带的哪些repo文件
ll /etc/yum.repos.d/
###删掉它目录下的所有(*代表所有)
rm -rf /etc/yum.repos.d/*
vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos ##centos系统yum来源的基础路径
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas/iaas-repo ##iaas服务,这里写的是挂载下iaas目录下的另一个路径
gpgcheck=0
enabled=1
清空yum缓存,生成yum缓存,查看yum是否生效:
命令:
###清空yum缓存
yum clean all
###生成yum缓存
yum makecache
###查看yum是否生效
yum list
控制节点安装vsftpd(ftp工具),指定vsftpd 路径,如下:
###本地用yum安装服务,install后接服务名
yum -y install vsftpd
###配置vsftpd服务的共享文件
vi /etc/vsftpd/vsftpd.conf
###头顶加上要共享的目录,由于该服务是给计算节点提供源,所以要将之前镜像挂载的目录共享给出去
anon_root=/opt
####保存退出
#####查看目录下文件的头几行(-n n是几就显示出几行来)
head -1 /etc/vsftpd/vsftpd.conf
设置临时防火墙规则,重启vsftpd服务及设置开机自启动:
###控制节点重启vsftpd
systemctl restart vsftpd
###控制节点设置开机生效规则
systemctl enable vsftpd
###控制、计算节点设置selinux规则
setenforce 0
###查看selinux规则
getenforce
###控制、计算节点关闭防火墙
systemctl stop firewalld
###计算节点测试访问控制节点资源
curl ftp://192.168.137.27
结果运行图:
将控制节点的/etc/vsftpd/vsftpd.conf 复制到计算节点上,更改baseurl的路径就行:
###远程复制命令
scp [email protected]:/etc/yum.repos.d/local.repo /etc/yum.repos.d/
###修改内容,计算节点/etc/yum.repos.d/local.repo内容为
[centos]
name=centos
baseurl=ftp://192.168.137.27/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=ftp://192.168.137.27/iaas/iaas-repo
gpgcheck=0
enabled=1
###/etc/yum.repos.d/下面不止一份repo文件,其它C开头的都是系统自带的,删了就行
rm -rf /etc/yum.repos.d/CentOS-*
结果:
基本上都准备好了,可以安装iaas的服务了。
查找iaas-的服务:
yum list | grep iaas-
安装iaas服务:
yum -y install iaas-xiandian.x86_64
安装好后,就给iaas服务配置文件了/etc/xiandian/openrc.sh:
####批量删除注释符,也就是#号,在查看状态下::%s/^#//g
####:(英文下冒号)%(表示全文)s(是替换功能)^(以什么开头)#(#字符开头)/(控格)/g(确认替换了)
####整体就是全文将以#字符开头的替换成空格
####同样的可以:%s/PASS=/PASS=000000/g
####整体就是全文将以PASS=字符的替换成PASS=000000
####内容
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.137.27 #控制节点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.137.37 #计算节点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.137.0/24 #同步时间的服务器IP与掩码
#--------------------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.137.27 #填本机IP(计算节点就填计算的IP)
#External Network Interface. example:eth1
INTERFACE_NAME=ens34 #第二张网卡名称
#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=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.137.37 #计算节点的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
将文件复制去计算节点里,在计算节点的文件就只需要改:
INTERFACE_IP=192.168.137.37 #填本机IP(计算节点就填计算的IP)
保存退出,就可以刷脚本了,脚本有人写好了,我们就直接用就好了,控制、计算节点都安装基础服务:
iaas-pre-host.sh
安装完成后可重启服务器,建议重启
刷完后是:
控制节点安装MySQL(数据库服务),keystone(认证服务),glance(镜像服务),dashboard(实现数据可视化服务),neutron(网络服务),nova(计算服务),cinder(块存储服务),swift(对象存储服务):
iaas-install-mysql.sh
iaas-install-keystone.sh
iaas-install-glance.sh
iaas-install-dashboard.sh
iaas-install-neutron-controller.sh
iaas-install-nova-controller.sh
iaas-install-cinder-controller.sh
iaas-install-swift-controller.sh
计算节点:
iaas-install-nova-compute.sh
iaas-install-neutron-compute.sh
iaas-install-cinder-compute.sh
iaas-install-swift-compute.sh
登录dashboard
浏览器访问,192.168.137.27/dashboard
域控写demo
用户名admin
密码000000
结果: