这一部分开始就是OpenStack真正意义上的正文部分了
1. 硬盘分区
在前文中,我们创建虚拟机使用了两个硬盘,一个100G一个50G,这里我们将要对这个50G硬盘进行分区,为后面运行组件安装的脚本做准备。
fdisk /dev/sdb
分出2个20G和1个5G
2. 安装ntp进行时间同步
controller节点配置:
yum -y install ntp #安装ntp服务
vi /etc/ntp.conf #进入编辑ntp的配置文件
添加以下内容(删除默认的server规则)
server 127.127.1.0
fudge 127.127.1.0 stratum 10
进行保存之后重启ntp服务并设为开机自启动
systemctl restart ntpd
systemctl enable ntpd
compute节点设置:
yum -y install ntpdate #安装ntpdate服务
systemctl enable ntpdate #设为开机自启动
ntpdate controller #同步时间
3. 预部署脚本的安装和配置
所有节点先安装先电版本的脚本包(因为iaas的ISO文件里用的是这个版本的脚本包)
yum install iaas-xiandian -y
安装之后对脚本配置文件进行修改
vi /etc/xiandian/openrc.sh #进入脚本的配置文件
默认配置文件:
##--------------------system Config--------------------##
##Controller Server Manager IP. example:x.x.x.x
#HOST_IP=
##Controller HOST Password. example:000000
#HOST_PASS=
##Controller Server hostname. example:controller
#HOST_NAME=
##Compute Node Manager IP. example:x.x.x.x
#HOST_IP_NODE=
##Compute HOST Password. example:000000
#HOST_PASS_NODE=
##Compute Node hostname. example:compute
#HOST_NAME_NODE=
##--------------------Chrony Config-------------------##
##Controller network segment IP. example:x.x.0.0/16(x.x.x.0/24)
#network_segment_IP=
##--------------------Rabbit Config ------------------##
##user for rabbit. example:openstack
#RABBIT_USER=
##Password for rabbit user .example:000000
#RABBIT_PASS=
##--------------------MySQL Config---------------------##
##Password for MySQL root user . exmaple:000000
#DB_PASS=
##--------------------Keystone Config------------------##
##Password for Keystore admin user. exmaple:000000
#DOMAIN_NAME=
#ADMIN_PASS=
#DEMO_PASS=
##Password for Mysql keystore user. exmaple:000000
#KEYSTONE_DBPASS=
##--------------------Glance Config--------------------##
##Password for Mysql glance user. exmaple:000000
#GLANCE_DBPASS=
##Password for Keystore glance user. exmaple:000000
#GLANCE_PASS=
##--------------------Nova Config----------------------##
##Password for Mysql nova user. exmaple:000000
#NOVA_DBPASS=
##Password for Keystore nova user. exmaple:000000
#NOVA_PASS=
##--------------------Neturon Config-------------------##
##Password for Mysql neutron user. exmaple:000000
#NEUTRON_DBPASS=
##Password for Keystore neutron user. exmaple:000000
#NEUTRON_PASS=
##metadata secret for neutron. exmaple:000000
#METADATA_SECRET=
##Tunnel Network Interface. example:x.x.x.x
#INTERFACE_IP=
##External Network Interface. example:eth1
#INTERFACE_NAME=
##External Network The Physical Adapter. example:provider
#Physical_NAME=
##First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
#minvlan=
##Last Vlan ID in VLAN RANGE for VLAN Network. example:200
#maxvlan=
##--------------------Cinder Config--------------------##
##Password for Mysql cinder user. exmaple:000000
#CINDER_DBPASS=
##Password for Keystore cinder user. exmaple:000000
#CINDER_PASS=
##Cinder Block Disk. example:md126p3
#BLOCK_DISK=
##--------------------Swift Config---------------------##
##Password for Keystore swift user. exmaple:000000
#SWIFT_PASS=
##The NODE Object Disk for Swift. example:md126p4.
#OBJECT_DISK=
##The NODE IP for Swift Storage Network. example:x.x.x.x.
#STORAGE_LOCAL_NET_IP=
##--------------------Heat Config----------------------##
##Password for Mysql heat user. exmaple:000000
#HEAT_DBPASS=
##Password for Keystore heat user. exmaple:000000
#HEAT_PASS=
##--------------------Zun Config-----------------------##
##Password for Mysql Zun user. exmaple:000000
#ZUN_DBPASS=
##Password for Keystore Zun user. exmaple:000000
#ZUN_PASS=
##Password for Mysql Kuryr user. exmaple:000000
#KURYR_DBPASS=
##Password for Keystore Kuryr user. exmaple:000000
#KURYR_PASS=
##--------------------Ceilometer Config----------------##
##Password for Gnocchi ceilometer user. exmaple:000000
#CEILOMETER_DBPASS=
##Password for Keystore ceilometer user. exmaple:000000
#CEILOMETER_PASS=
##--------------------AODH Config----------------##
##Password for Mysql AODH user. exmaple:000000
#AODH_DBPASS=
##Password for Keystore AODH user. exmaple:000000
#AODH_PASS=
##--------------------Barbican Config----------------##
##Password for Mysql Barbican user. exmaple:000000
#BARBICAN_DBPASS=
##Password for Keystore Barbican user. exmaple:000000
#BARBICAN_PASS=
对配置文件以下内容进行一些修改
指针放在最上边最左边,按Ctrl+V然后按Shift+G最后按x键,可以一键删除第一列的“#”
HOST_IP=10.10.10.100 #controller节点IP
HOST_NAME=controller
HOST_IP_NODE=10.10.10.200 #compute节点IP
HOST_PASS_NODE=000000
HOST_NAME_NODE=compute
network_segment_IP=all #网段
RABBIT_USER=openstack
DOMAIN_NAME=demo #按照搭建要求写,我这里写demo
METADATA_SECRET=000000
INTERFACE_IP=10.10.10.100 #外网IP(compute节点就写为10.10.10.200)
INTERFACE_NAME=ens33 #外网网卡名
Physical_NAME=provider
minvlan=101
maxvlan=200
BLOCK_DISK=sdb1 #空白分区名
OBJECT_DISK=sdb2 #空白分区名
STORAGE_LOCAL_NET_IP=10.10.10.200 #compute节点IP
其他所有PASS都填000000
vi的命令模式下输入 :%s/PASS=/PASS=000000 #将PASS=替换为PASS=000000
最终配置结果:
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=10.10.10.100
#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=10.10.10.200
#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=all
#--------------------Rabbit Config ------------------##
#user for rabbit. example:openstack
RABBIT_USER=openstack
#Password for rabbit user .example:000000
RABBIT_PASS=000000000000
#--------------------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=10.10.10.100 #compute节点这里为10.10.10.200
#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
#--------------------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=10.10.10.200
#--------------------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
修改完成之后,执行预部署脚本(温馨提示:执行这个包括后面所有脚本之前一定一定一定要设置快照或者备份!!!不要问我为什么,问就是血的教训)
iaas-pre-host.sh
执行完成这个脚本之后,需要用reboot命令重启一次。
4. 安装openstack组件
4.1 controller节点安装MySQL数据库
iaas-install-mysql.sh
4.2 controller节点安装keystone认证服务
iaas-install-keystone.sh
4.3 controller节点安装glance镜像服务
iaas-install-glance.sh
4.4 所有节点安装Nova计算服务
iaas-install-neutron-controller.sh #controller节点
iaas-install-neutron-compute.sh #compute节点
注:如果你和我一样使用的是CentOS7.9版本运行完出现依赖问题或者报错,多半是libxslt 依赖冲突(我们自带的这个依赖版本太高需要降级)
需要恢复到执行这个脚本之前的快照然后运行下面命令
# 查看可用版本
yum list libxslt --showduplicates
# 降级到 1.1.28-5.el7
sudo yum downgrade libxslt-1.1.28-5.el7
还有就是需要手动安装
sudo yum install openstack-nova-api openstack-nova-conductor openstack-nova-scheduler
运行完这些再重新运行上面的iaas-neutron脚本
4.5 controller节点安装Dashboard控制面板服务
iaas-install-dashboard.sh
4.6 浏览器访问controller节点IP进行登录
浏览器输入: controller节点IP/dashboard #比如我的就是10.10.10.100/dashboard
4.7 全部节点安装Swift对象存储服务
iaas-install-swift-controller.sh #controller节点
iaas-install-swift-compute.sh #compute节点
4.8 全部节点安装Cinder存储服务
iaas-install-cinder-controller.sh #controller节点
iaas-install-cinder-compute.sh #compute节点