zl程序教程

您现在的位置是:首页 >  其他

当前栏目

先电脚本双节点搭建OpenStackQ版(一)

2023-04-18 17:00:22 时间


前言

OpenStack的搭建及其繁琐复杂容易出错。用脚本可以有效的提高效率。本章节就是用先电的脚本带你快速部署一套稳定的openstack平台。镜像下载:先电2.4镜像百度网盘下载提取码: d8pt:

一、基础环境准备

主机最低配置:

主机名cpu内存网络1网络2磁盘1磁盘2磁盘3
controller24GBeth0 192.168.100.10eth1 192.168.200.1064GB
compute0124GBeth0 192.168.100.20eth1 192.168.200.2064GB100GB100GB

必须:

  • CPU虚拟化
  • 两块网卡
  • compute节点至少要有两块格外硬盘(cinder可以用分区代替Swift不推荐!)

所需软件(这里的软件可以根据自己喜好进行下载):

操作系统SSH客户端(大家根据自己喜欢的进行选择)版本号(可以是其他版本)下载地址
Mac os(最低版本为10.15)Secure CRT9.1下载
Windows10XShell6.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

查看状态:
Pasted image 20220211125325.png

(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

显示结果:
Pasted image 20220210212509.png

(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镜像
Pasted image 20220210214235.png
步骤:
1.点击断开
2.点击选择连接镜像
3.选择完以后点击确定
4查看是否连接
Pasted image 20220210214957.png

(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

运行结果:
Pasted image 20220211101849.png
⑦ 搭建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)查看:
Pasted image 20220211160737.png
Pasted image 20220211165503.png

⑧ 用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

显示结果:
Pasted image 20220211191248.png

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

Pasted image 20220213171246.png
在这里插入图片描述
查看NTP服务状态

systemctl status chronyd
chronyc sources

Pasted image 20220213154134.png
Pasted image 20220213154243.png
如果出现^?就是没有同步,可能是正在启动没启动完等待一两分钟在进行查看如果还是^?,那就在controller节点和compute01节点检查配置文件。 用了以上方法还是^?直接恢复快照重新安装(这个是最有效的办法)。

三、 运行各OpenStack组件脚本

现在就是开始运行脚本,这一步是最爽的(前面的配置文件一定要配置正确,要不然这一步是最痛苦的。一直恢复快照重新安装。)

进入/usr/local/bin/目录下运行脚本
Pasted image 20220212211848.png

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
Pasted image 20220221080549
Pasted image 20220221080855

2. 组件服务检查

查看所有服务状态

openstack-stutas

Pasted image 20220222164532.png
到这里搭建的已经算是结束了。不过还需要创建云主机进行测试。这个下一章写。

参考:
OpenStack管理员指南