logo logo
关于我们

技术分享

技术分享 VMware+CentOS安装单机版OpenStack

VMware+CentOS安装单机版OpenStack

2020-08-05

目录

1 部署前准备

1.1 虚拟机安装及配置

1.2 CentOS源替换

1.3 VMTools安装

1.4 虚拟机网络配置

2 OpenStack All-in-one安装

2.1 准备

2.2 添加软件源

2.3 安装

3 OpenStack网络配置

3.1 获取本机IP等信息

3.2 ifcfg文件生成和配置

3.3 OpenStack网络创建

3.3.1 用命令行创建公共网络和公共子网

3.3.2 创建Project

3.3.3 创建用户

3.3.4 为用户创建私有网络及子网

3.3.5 创建Router

3.3.6 创建接口

3.4 OpenStack创建实例

3.4.1 创建镜像

3.4.2 创建安全组

3.4.3 创建实例

3.4.4 为实例分配浮动IP

3.4.5 登录实例

4 问题处理

4.1 ubuntu更新失败问题


1 部署前准备

1.1 虚拟机安装及配置

本文属于入门学习阶段,不建议直接在机器上安装OpenStack,因为部署过程可能会有很多问题,我们需要虚拟机的快照功能,帮助我们及时返回系统正常状态。后期实际部署时,依据虚拟机安装经验,一样可以部署成功。

虚拟机的安装步骤不再赘述,下面给出本文使用的虚拟机软件、操作系统、及虚拟机硬件配置:

 

名称

配置

备注

虚拟机软件

VMWare

采用的VMware Workstation Pro14

操作系统

CentOS 7 64位

本文采用RDO的方式安装OpenStack,RDO是RedHat维护的,而CentOS又是RedHat的一个版本,所以采用CentOS最合适。

安装时,选择安装图形界面。系统语言,本文选择的是英文,如果你的英文没问题的话,尽量也选择英文系统,一开始用中文系统后续的OpenStack使用起来总有些问题,不知是不是这个原因。

虚拟机硬件需求

内存:>=16G

硬盘:>=100G

如果分配给虚拟机的硬件无法达到这个要求,不要考虑安装了,因为OpenStack非常耗资源,一般的个人PC能安装上,但是跑起来非常卡。

 

1.2 CentOS源替换

CentOS默认的源是国外地址,为了防止后续的操作中存在无法访问的地址问题,我们把CentOS的源更换为国内阿里源,执行命令如下(没有特殊说明的话,后续的命令都是用root用户执行的):

 

//首先切换到root用户

$ su

 

//进入到源文件夹

$ cd /etc/yum.repos.d

 

//备份文件

$ mv CentOS-Base.repo CentOS-Base.repo.bak

 

//获取阿里源,替换默认的源

$ wget -O CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

 

//执行更新命令,更新系统

$ yum update

 

1.3 VMTools安装

安装VMware Tools,本文后面会用到虚拟机的共享文件夹功能,而该功能是由VMware Tools提供的。VMware Tools的具体安装步骤不再赘述,网上有很多,这里说下需要注意的地方。因为我们前面执行更新命令,更新了系统,所以可能会导致出现“kernel headers不匹配”的问题,不管会不会出现,在安装VMTools前,执行下面的命令:

 

$ yum update kernel -y

//这一步么先重启系统

$ yum install kernel-headers kernel-devel-$(uname -r) gcc make -y

//然后重启系统,安装VMware Tools

 

1.4 虚拟机网络配置

OpenStack的安装,需要关闭NetworkManager,在关闭的情况下也要能保证正常上网,所以我们需要对虚拟机网络进行配置。

(一)编辑ifcfg-ens33文件

这个文件可能不同的系统名称不一样,有些可能是ifcfg-eth0,也可能是其他,以自己系统为准。可以通过ifconfig命令,在联网状态下,查看那个网关名下有IP、netmask、broadcast来确定具体是哪个文件,我的如下:

 

//进入network-scripts文件夹

$ cd /etc/sysconfig/network-scripts/

 

//打开ifcfg-ens33文件

$ vi ifcfg-ens33

 

//修改ifcfg-ens33文件

NAME改为eth0

DEVICE改为eth0

ONBOOT改为yes

增加HWADDR=MAC地址(从虚拟机设置-->网络适配器-->高级,页面中获取)

 

//修改ifcfg-ens33文件名

$ mv ifcfg-ens33 ifcfg-eth0

 

(二)修改grub文件

//进入default文件夹

$ cd /etc/default

 

//打开grub文件

$ vi grub

 

//修改grub文件

在GRUB_CMD_LINELINUX项中,增加net.ifnames=0 biosdevname=0,与原有值之间空格隔开

 

//更新配置

$ grub2-mkconfig -o /boot/grub2/grub.cfg

 

(三)虚拟机网络适配器模式

适配器配置如下图

 

2 OpenStack All-in-one安装

我们主要是测试研究使用,所以没有安装成分布式架构,选择了All-in-one模式,也就是所有的组件都安装在一台机器上。

2.1 准备

为了防止防火墙、NetworkManager这些网络组件可能造成的问题,我们需要在安装OpenStack之前对这些组件做一些配置,命令如下:

 

$ systemctl disable firewalld

$ systemctl stop firewalld

$ systemctl disable NetworkManager

$ systemctl stop NetworkManager

$ systemctl enable network

$ systemctl start network

 

2.2 添加软件源

我们使用RDO模式安装OpenStack,所以首先需要添加rdo源,命令如下:

$ yum install -y https://rdoproject.org/repos/rdo-release.rpm

$ yum install -y centos-release-openstack-rocky

$ yum-config-manager --enable openstack-rocky

$ yum update -y

 

2.3 安装

安装很简单,一条命令即可,只是安装的时间可能比较长,我大概等待1个小时左右安装完毕。所以只要不报错,你就耐心等待安装完成即可。安装命令如下:

$ packstack --allinone --provision-demo=n --os-neutron-ovs-bridge-mappings=extnet:br-ex --os-neutron-ovs-bridge-interfaces=br-ex:eth0 --os-neutron-ml2-type-drivers=vxlan,flat

安装完成后,在“/root/keystons_admin”文件中,有Dashboard的访问地址,以及admin用户的密码。

3 OpenStack网络配置

为了让OpenStack上创建的虚拟机能够访问外网,并且,外网也能访问该虚拟机,需要我们对CentOS的网络,以及OpenStack的网络进行配置。

3.1 获取本机IP等信息

后续我们的操作,需要用到本机IP、DNS、Gateway等,所以,首先要获取这些信息,获取命令如下:

//获取ip

$ ifconfig -a //一般是eth0这个对应的地址为IP地址

 

//获取DNS

$ cat /etc/resolv.conf

 

//获取Gateway

$ netstat -rn

 

//获取netmask

255.255.255.0 //不用额外获取,一般就用这个值

 

3.2 ifcfg文件生成和配置

(一)生成ifcfg-br-ex文件

在路径“/etc/sysconfig/network-scripts/”下创建文件ifcfg-br-ex,文件内容如下:

DEVICE=br-ex

DEVICETYPE=ovs

TYPE=OVSBridge

BOOTPROTO=static

IPADDR=192.168.122.212 # 你的IP地址

NETMASK=255.255.255.0 # 你的netmask

GATEWAY=192.168.122.1 # 你的gateway

DNS1=192.168.122.1 # 你的DNS

ONBOOT=yes

 

(二)修改ifcfg-eth0文件

ifcfg-eth0文件修改之前,请先备份,然后直接将文件内容换为下面的内容:

DEVICE=eth0

TYPE=OVSPort

DEVICETYPE=ovs

OVS_BRIDGE=br-ex

ONBOOT=yes

 

(三)生成ifcfg-bond0文件

在路径“/etc/sysconfig/network-scripts/”下创建文件ifcfg-bond0,文件内容如下:

DEVICE=bond0

DEVICETYPE=ovs

TYPE=OVSPort

OVS_BRIDGE=br-ex

ONBOOT=yes

BONDING_MASTER=yes

BONDING_OPTS="mode=802.3ad"

上述操作完成后,重启虚拟机系统即可。

3.3 OpenStack网络创建

3.3.1 用命令行创建公共网络和公共子网

参考文章地址点这里

//进入“/root/”文件夹

$ cd /root

 

//切换到admin身份

$ . keystonerc_admin

 

//创建公共网络

$ neutron net-create external_network --provider:network_type flat --provider:physical_network extnet --router:external

 

//创建公共子网

$ neutron subnet-create --name public_subnet --enable_dhcp=False --allocation-pool=start=192.168.122.10,end=192.168.122.20 \

--gateway=192.168.122.1 external_network 192.168.122.0/24

上面需要注意的地方是创建公共子网的时候,gateway与你虚拟机的gateway保持一致,其他IP比如start、end、external_network这些要保证与你的IP网段是一致的,比如你的IP是“192.168.114.8”,那这些网段必须也是“192.168.114”而不是上表中的“192.168.122”。

 

3.3.2 创建Project

Project我的理解是一个租户的概念,任何资源都是以租户为单位而存在的,所以,我们先创建Project。以admin的身份登录Dashboard,参照下图开始创建Project

 

 

然后在弹出的页面中,填充Project的name即可,其他都可以不同填采用默认值,直接创建Project

 

3.3.3 创建用户

Project创建完毕,我们要为这个Project创建一个用户,这样才能够通过Dashboard去管理该Project中的资源。参照下图,开始创建用户:

在弹出的页面中,只用填写带“*”的必填项,其他采用默认值。

需要注意的是,有个“Project”选项,这里选择刚刚创建的Project。

选择完毕后,直接创建用户即可。

3.3.4 为用户创建私有网络及子网

用上一步创建的用户登录Dashboard,按照下图开始创建私有网络

 

在弹出页面的第一个Tab页中,只要填写网络名称即可,其他保持默认:

 

第二个Tab页,填写子网信息,其中需要注意的是“Network Address”这项,比如你的IP是“192.168.114.1”,那么这里你可以填写“192.168.100.0/24”,也就是保持“192.168”不变,第三段可以自己定义但不能与IP或者其他私有网段重复,第四段从0开始。“Gateway IP”这一项可以不填,默认会根据你填写的“Network Address”直接分配一个给你,比如“192.168.100.1”。

第三个Tab页保持默认即可,然后创建网络

 

3.3.5 创建Router

router是用来连接公网和私网的,为了让上一步创建的私网能够进行内外网交互,我们需要创建一个Router,按下图开始创建:

在弹出的页面中,填写Router的名字,选择外网(也就是我们用命令行创建的公网),其他保持默认,点击创建即可:

 

3.3.6 创建接口

我们需要为私网创建一个接口,把它暴露给创建的私网子网,以此保证能够内外网正常通信。按照下图开始创建接口:

 

进入到详情页面,选择“Interfaces”标签,点击创建接口:

 

在弹出页面,选择刚刚创建的私网子网,其他保持默认或不填,创建即可:

 

3.4 OpenStack创建实例

3.4.1 创建镜像

实例依托于镜像,镜像就是一个操作系统的镜像文件,本文选择Ubuntu为例来创建。你可以按照这篇文章的说明,选择其他系统镜像。你可能是在本机下载的镜像文件,需要传输到虚拟机中,这时候就要用到VMTools提供的共享文件夹功能了,因为这样最方便,无需再从本机拷贝到虚拟机。

用admin账户登录Dashboard,在“Admin”菜单下的“Images”创建,千万不要到“Project”下创建,按照下图开始镜像创建:在弹出的页面中除了必填项,其他选择默认即可,需要注意的是,按照上面给的文章地址,你下载的镜像文件格式一般都要选择“QCOW2”,然后创建镜像即可:

3.4.2 创建安全组

因为我们的实例要开放各种端口,并且支持SSH访问,所以我们首先创建一个安全组。按照下图创建:

在弹出框中,只用填写安全组名称即可:

然后,在安全组列表页面,找到我们刚刚创建的安全组,选择“Manage Rules”操作:

在Rule列表页面,点击“Add Rule”按钮添加规则:

添加下列五个规则:

Egress IPv4 ICMP – 0.0.0.0/0 (CIDR)

Ingress IPv4 ICMP – 0.0.0.0/0 (CIDR)

Ingress IPv4 TCP 1 – 65535 0.0.0.0/0 (CIDR)

Egress IPv4 TCP 1 – 65535 0.0.0.0/0 (CIDR)

Egress IPv4 TCP - 22(SSH)

创建过程如下图:

 

 到此,安全组规则创建完毕。

 

3.4.3 创建实例

用刚刚创建的用户登录Dashboard。创建实例有一个问题,你无论是创建Ubuntu还是CentOS的实例,默认情况下只能采用私钥的方式登录,也就是说,你在OpenStack实例的Console中根本无法登录,它需要用户名和密码,而默认情况你根本不知道密码是什么(用户名Ubuntu一般就是ubuntu,CentOS一般就是centos)。在正式创建之前,我们需要更改一个配置文件。

(一)修改配置文件

修改配置文件是为了让我们在创建实例的时候,OpenStack能允许我们自己注入密码。

//修改文件

$ vi /etc/nova/nova.conf

 

//找到“inject_password”将其值更改为True

inject_password=True

修改完后重启系统。

(二)创建镜像

在Instances菜单页面点击“Launch Instance”

 

弹出页面中“Details”标签页,只需要填写name,其他保持默认:在“Source”标签页,选择可用的镜像,这里需要注意的是“Create New Volume”选项,选择No,因为选择Yes会在创建的时候报一些奇怪的错误,暂时没找到问题所在。

在“Flavor”标签页,主要是选择实例的配置规格,因为后续我要在实例中安装docker,并且Ubuntu镜像本身也不小,所以选择了“mi.small”,你可以根据自己的需求来:

在“Networks”页面,选择我们已经创建的私网:

在“Security Groups”标签页,选择我们创建的安全组:

在“Key Pair”标签页,因为我们没创建过RSA秘钥,所以这里直接点击“Create Key Pair”,一定要注意保留好创建后的私钥。:

保留好私钥后,我们在"~/.ssh/"文件夹下,创建一个与KeyPair同名的文件,并把私钥黏贴进去,方便我们后续用SSH+私钥的方式访问实例。

在“Configuration”页面中添加如图所示的内容,就是给我们的实例对应的用户名一个密码,其他采用默认值:需要填写的内容给出如下:

 

#!/bin/sh

passwd centos<<EOF

123456

123456

EOF

sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config

service ssh restart

到此,未提到的标签页内容可以不用管,直接点击“Launch Instance”创建实例即可。创建实例需要等待一段时间,待实例状态为Active,电源状态为Running,即可访问:

 

3.4.4 为实例分配浮动IP

分配浮动IP,这样外网就可以通过这个IP访问实例。按照下图进行操作:

在弹出页面点击“+”号:

接下来在“Pool”这里选择我们创建的外网,然后点击“Allocate IP”:

这时候会返回上一个页面,点击“Associate”即可。

3.4.5 登录实例

(一)Console登录实例

可以通过OpenStack提供的Console登录实例,但这种速度很慢,方法如下:

在新的页面中点击Send CtrlAltDel,不然不接受键盘输入。等让你输入用户名密码时,直接输入用户名ubuntu以及创建实例时定义的密码即可。(但是,创建实例时定义的密码需要等一段不知多久的时间才能生效,有可能还不行,所以如果你不巧碰到了不行的情况,那就用SSH+私钥的方式登录吧。)

(二)SSH登录实例

SSH登录有两种方式,一种是SSH+私钥,一种是SSH+用户+密码。第二种方式由于密码生效时间的不确定性,所以接下来主要介绍第一种方式。两种都很简单,SSH的方式比Console方式用起来要顺畅很多,Console实在是不方便又很卡。

//进入到SSH文件夹

$ cd ~/.ssh/

 

//找到我们前面保存私钥的那个文件,并用下列命令运行

$ ssh -i ITzGeek-Key ubuntu@192.168.1.201

 

//命令详解

ITzGeek-Key ------ 私钥所在的文件名

ubuntu ------------ 实例对应的登录名

192.168.1.201 ----- 实例分配到的Float IP

 

 

//通过下面的命令修改root密码

$ sudo passwd root

如果你用ssh命令登录报“拒绝连接”,那有可能是你的实例还未完全启动成功,需要等一段时间,你可以查看Console的输出,如果输出需要你输入用户名密码的信息,那么再尝试用ssh登录,一般就可以了。

4 问题处理

4.1 ubuntu更新失败问题

在OpenStack中创建ubuntu实例后,执行“sudo apt-get update”命令,有时候会报下面的错误:

这是由于未设置妥当的DNS服务器导致的,解决方式如下:

//修改文件

$ sudo vi /etc/resolv.conf

//添加内容

nameserver 8.8.8.8

//保存后,再执行更新操作即可

$ sudo apt-get update

需要注意的是,resolv.conf这个文件,无论是ubuntu还是centos,系统重启后都会恢复原样,强制不恢复的方法可在网上搜索,我一般都是每次重启重新修改一下。

 

云祺备份软件,云祺容灾备份系统,虚拟机备份,数据库备份,文件备份,实时备份,勒索软件,美国,图书馆
  • 标签:
  • 行业资讯

您可能感兴趣的新闻 换一批

现在下载,可享30天免费试用

立即下载

请添加好友为您提供支持
jia7jia_7

请拨打电话
为您提供支持

400-9955-698