文章目录
前言
OpenStack的搭建及其繁琐复杂容易出错。用脚本可以有效的提高效率。本章节就是用先电的脚本带你快速部署一套稳定的openstack平台。镜像下载:先电2.4镜像百度网盘下载提取码: d8pt:
一、基础环境准备
主机最低配置:
主机名 | cpu | 内存 | 网络1 | 网络2 | 磁盘1 | 磁盘2 | 磁盘3 |
---|---|---|---|---|---|---|---|
controller | 2 | 4GB | eth0 192.168.100.10 | eth1 192.168.200.10 | 64GB | ||
compute01 | 2 | 4GB | eth0 192.168.100.20 | eth1 192.168.200.20 | 64GB | 100GB | 100GB |
必须:
- CPU虚拟化
- 两块网卡
- compute节点至少要有两块格外硬盘(cinder可以用分区代替Swift不推荐!)
所需软件(这里的软件可以根据自己喜好进行下载):
操作系统 | SSH客户端(大家根据自己喜欢的进行选择) | 版本号(可以是其他版本) | 下载地址 |
---|---|---|---|
Mac os(最低版本为10.15) | Secure CRT | 9.1 | 下载 |
Windows10 | XShell | 6.0 | 下载 |
二、基础环境安装
centos7安装这里就不写了。百度一大堆。
推荐:Mac用VMware Fusion
win10用VMware Workstation Pro
Linux用VMware Workstation Pro
建议:为了增加部署的成功率最好一大步一个快照。要不然就是很痛苦的。
1.主机基础环境
1.1设置IP地址
安装完系统以后要设置IP地址
controller节点和compute01节点都要执行
注意:网卡名和IP地址记得修改成自己的。(查看IP:
ip a
)
① 设置eth0网卡状态为none并激活网卡并添加IP
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/g' /etc/sysconfig/network-scripts/ifcfg-eth0
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth0
cat >> /etc/sysconfig/network-scripts/ifcfg-eth0 <<EOF
IPADDR=192.168.100.10
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
EOF
② 设置eth1网卡状态为none并激活网卡并添加IP
sed -i 's/BOOTPROTO=dhcp/BOOTPROTO=none/g' /etc/sysconfig/network-scripts/ifcfg-eth1
sed -i 's/ONBOOT=no/ONBOOT=yes/g' /etc/sysconfig/network-scripts/ifcfg-eth1
cat >> /etc/sysconfig/network-scripts/ifcfg-eth1 <<EOF
IPADDR=192.168.200.10
NETMASK=255.255.255.0
GATEWAY=192.168.200.1
EOF
③ 重启网卡
systemctl restart network
1.2修改主机名并添加IP
① 修改主机名(controller节点和compute01节点都要运行注意主机名)
hostnamectl set-hostname controller
bash
② 添加主机名
cat >> /etc/hosts <<EOF
192.168.100.10 controller
192.168.100.20 compute01
EOF
③ 用scp命令直接拷贝到compute01节点上
scp /etc/hosts root@192.168.100.20:/etc/hosts
1.3 关闭防火墙和SeLinux
controller节点和compute节点都要执行
① 关闭防火墙自启
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
② 关闭selinux
建议:先临时设置在修改配置文件。
解释:修改配置文件是要重启后才能生效,而临时修改立马生效直到重启以后变成Enforcing。
(1)设置selinux状态为Permissive
setenforce 0
查看状态:
(2)修改config配置文件为Permissive
sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config
1.4 配置yum源
我使用的是虚拟机自定义网络不需要连接互联网,所以需要自己搭建yum源。
① 删除源yum源
rm -rf /etc/yum.repos.d/*
② 在/opt/目录创建centos7-repo文件夹
mkdir /opt/centos7-repo
③ 挂载镜像:
(1) 查看镜像设备
lsblk
显示结果:
(2)挂载centos7镜像
mount /dev/sro /tmp
(3)复制centos7软件到/opt/centso7-repo
cp -rvf /tmp/Packages/ /opt/centos7-repo/
cp -rvf /tmp/repodata/ /opt/centos7-repo/
(4)卸载centos镜像
umount /tmp/
(5)断开centos镜像挂载iaas镜像
步骤:
1.点击断开
2.点击选择连接镜像
3.选择完以后点击确定
4查看是否连接
(6)挂载iaas镜像
mount /dev/sr0 /tmp
(7)复制/tmp/iaas-repo 到/opt/目录下
cp -rvf /tmp/iaas-repo/ /opt/
(8)卸载iaas镜像
umount /tmp/
④ 创建repo文件
touch /etc/yum.repos.d/iaas.repo
⑤ 编写repo文件
cat > /etc/yum.repos.d/iaas.repo <<EOF
[centos]
name=centos7
baseurl=file:///opt/centos7-repo/
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file:///opt/iaas-repo/
gpgcheck=0
enabled=1
EOF
⑥ 测试yum源
yum repolist
运行结果:
⑦ 搭建ftp服务(为了方便我这里用ftp服务,也可以选择搭建http服务)
(1)安装vsftpd
yum install vsftpd -y
(2)添加配置
cat >> /etc/vsftpd/vsftpd.conf <<EOF
anon_root=/opt/
EOF
(3)启动ftp
systemctl start vsftpd
systemctl restart vsftpd
systemctl enable vsftpd
systemctl status vsftpd
(4)查看:
⑧ 用scp命令拷贝到compute01节点上(主机名记得修改自己的)
scp /etc/yum.repos.d/iaas.repo root@compute01:/etc/yum.repos.d/iaas.repo
⑨ 修改compute01节点的repo文件
sed -i 's/baseurl=file:\/\/\/opt\/centos7-repo\//baseurl=ftp:\/\/controller\/centos7-repo\//g' /etc/yum.repos.d/iaas.repo
sed -i 's/baseurl=file:\/\/\/opt\/iaas-repo\//baseurl=ftp:\/\/controller\/iaas-repo\//g' /etc/yum.repos.d/iaas.repo
⑩ 测试yum源:
yum repolist
显示结果:
1.5 安装基础软件
在controller节点和compute01节点上安装以下命令
(1)centos7基础软件
yum install -y vim bash-completion net-tools
(2)iaas基础软件
yum install iaas-xiandian -y
2. OpenStack基础环境
先电已经把OpenStack的基础环境和各个组件都用shell脚本写好了在 /usr/local/bin/ 目录下。我们只要修改一下配置文件就行了。其他的可以运行脚本自动安装并设置。
2.1.修改配置文件
先电配置里面用的是双#。根据情况需要自己查看,不会用或者不懂sed命令的自己手动清理
(1)给配置文件去掉#
controller节点:
sed -i 's/#//' /etc/xiandian/openrc.sh
(2)编辑配置文件(为了方便我这里用他默认的配置)
#--------------------system Config--------------------##
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.10
#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.10
#Compute HOST Password. example:000000
HOST_PASS_NODE=000000
#Compute Node hostname. example:compute
HOST_NAME_NODE=controller
#--------------------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
#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=domain
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
#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=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=sdb
#--------------------Swift Config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000
#The NODE Object Disk for Swift. example:md126p4.
OBJECT_DISK=sdc
#The NODE IP for Swift Storage Network. example:x.x.x.x.
STORAGE_LOCAL_NET_IP=192.168.100.20
#--------------------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
(3)用scp拷贝到compute01
scp /etc/xiandian/openrc.sh root@compute01:/etc/xiandian/openrc.sh
(4)修改compute01节点的openrc.sh
sed -i 's/HOST_IP_NODE=192.168.100.10/HOST_IP_NODE=192.168.100.20/g' /etc/xiandian/openrc.sh
sed -i 's/HOST_NAME_NODE=controller/HOST_NAME_NODE=compute01/g' /etc/xiandian/openrc.sh
sed -i 's/INTERFACE_IP=192.168.100.10/INTERFACE_IP=192.168.100.20/g' /etc/xiandian/openrc.sh
2.2安装OpenStack基础环境
建议:在这一步之前打快照。
注意:不要重复运行脚本包括后面的各组件脚本。出错了直接用快照恢复。
进到/usr/local/bin/目录下运行iaas-pre-host.sh脚本
controller节点和compute01节点都要运行。
sh /usr/local/bin/iaas-pre-host.sh
安装数据库(只能安装在controller节点,compute01节点勿安。)
./iaas-install-mysql.sh
安装完以后最好检查环境配置好了没。(特别是时间服务器。如果起不来或者有问题后面nova脚本也会报错。)
查看各节点的所有服务信息
lsof -i |grep 0t0
查看NTP服务状态
systemctl status chronyd
chronyc sources
如果出现^?就是没有同步,可能是正在启动没启动完等待一两分钟在进行查看如果还是^?,那就在controller节点和compute01节点检查配置文件。 用了以上方法还是^?直接恢复快照重新安装(这个是最有效的办法)。
三、 运行各OpenStack组件脚本
现在就是开始运行脚本,这一步是最爽的(前面的配置文件一定要配置正确,要不然这一步是最痛苦的。一直恢复快照重新安装。)
进入/usr/local/bin/目录下运行脚本
1. 组件脚本安装
① 安装keystone(认证组件)服务
./iaas-install-keystone.sh
② 安装glance(镜像服务)服务
./iaas-install-glance.sh
③ 安装nova(计算服务)服务
(1)controller节点安装nova服务
./iaas-install-nova-controller.sh
(2)compute01节点安装nova服务
./iaas-install-nova-compute.sh
④ 安装neutron(网络服务)服务
(1)controller节点
./iaas-install-neutron-controller.sh
(2)compute01节点
./iaas-install-neutron-compute.sh
⑤ 安装dashboard(仪表板)服务
controller节点
./iaas-install-dashboard.sh
⑥ 安装cinder(块存储服务)服务
(1)controller节点
./iaas-install-cinder-controller.sh
(2)compute01节点
./iaas-install-cinder-compute.sh
⑦ 安装Swift(对象存储服务)服务
(1)controller节点
./iaas-install-swift-controller.sh
(2)compute01节点
./iaas-install-swift-compute.sh
⑧ 安装Heat(编配服务)服务
controller节点
./iaas-install-heat.sh
⑨ 安装Zun(容器管理服务)服务
(1)controller节点
./iaas-install-zun-controller.sh
(2)compute01节点
./iaas-install-zun-compute.sh
⑩ 安装Ceilomter(监控服务)服务
(1)controller
./iaas-install-ceilomter-controller.sh
(2)compute01节点
./iaas-install-ceilomter-compute.sh
⑪ 安装Aodh(监控服务)服务
controller节点
./iaas-install-aodh.sh
现在已经彻底安装好OpenStack的所有服务。可以访问web界面来创建openstack云主机资源。
web界面:http://主机IP/dashboard
2. 组件服务检查
查看所有服务状态
openstack-stutas
到这里搭建的已经算是结束了。不过还需要创建云主机进行测试。这个下一章写。
参考:
OpenStack管理员指南