Openstack部署及运用

云计算(cloud computing)

基于互联网的相关服务的增加,使用和交互模式,通常涉及通过互联网来提供动态易扩展且经常是虚拟化的资源。云是网络,互联网的一种比喻说法。

从单机到云计算
早期 单机跑服务
中期 单机性能得到了非常大的提升,如果还是单机跑一个服务,服务器性能显得过剩。因此把很多服务器集中到一起,运行很多虚拟模式,每台虚拟机运行一个服务,这就是虚拟化
现在 美国国家标准与技术研究院(NIST)定义:云计算是一种按使用量付费的模式,这种模式提供可用的、便捷的、按需的网络访问, 进入可配置的计算资源共享池(资源包括网络,服务器,存储,应用软件,服务),这些资源能够被快速提供,只需投入很少的管理工作,或与服务供应商进行很少的交互。通常涉及通过互联网来提供 动态易扩展且经常是虚拟化的资源

云计算分类

Iaas

基础设施即服务

Infrastructure as a Service

提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU,内存,存储,网络和其他基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序

三种用法:公有云,私有云和混合云

Paas

平台即服务

Platform-as-a-Service

以服务器平台或者开发环境作为服务进行提供就是PaaS

不仅仅是单纯的基础平台,还提供技术支持服务,还进行应用系统开发,优化等服务

简单说,云环境中的应用基础设施服务,中间件即服务

SaaS

软件即服务

Soft-as-a-Service

通过inernet提供软件的模式,厂商将应用软件统一部署在自己的服务器上,客户可以根据自己实际需求,通过互联网向厂商定购所需的应用软件服务

现在用户向提供商租用基于web软件,不用维护软件,由提供商区全权管理,也提供离线操作和本地存储

Openstack

是由NASA(美国国家航空航天局)和Rackspace合作研发并发起的项目,是一套IaaS解决方案,开源的云计算管理平台,以Apache许可证为授权

Openstack主要组件
Horizon 管理其各种服务的,基于web的管理接口,通过图形界面实现创建用户,管理网络,启动实例等操作
Keystone

为其他服务器提供认证和授权的集中身份管理服务和目录服务

支持多种身份认证模式,如密码,令牌,AWS(亚马逊web服务器)登陆,为用户和其他服务器提供SSO认证服务

Neutron 软件定义网络服务,用于创建网络,子网,路由器,管理浮动IP地址,可以实现虚拟交换机集合路由器,可以在项目中创建VPN
Cinder w为虚拟机管理存储器卷的服务,为运行在Nova中的实例提供永久的块存储,快照进行数据备份,经常应用在实例存储环境中,如数据库文件
Nova

在节点上用于管理虚拟机的服务,在标准硬件上能够进行水平扩展

分布式的服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理,启动实例时,如果有则需要进行下载镜像

Glance 扮演虚拟机镜像注册的角色,允许用户为直接存储拷贝服务器镜像,这些镜像可以用于新建虚拟机的模板
[root@localhost etc(keystone_admin)]# openstack-status
== Nova services ==
openstack-nova-api(对外提供服务的窗口,接受并影响用户的compute API调用):                     active
openstack-nova-compute(安装到每个物理主机上的服务进程,接受请求后执行一批与虚拟机相关的操作):                 active
openstack-nova-network(网络控制):                 inactive  (disabled on boot)
openstack-nova-scheduler(接受虚拟机创建的请求,并决定在哪台物理机上启动该虚拟机的调度器):               active
openstack-nova-cert(提供了x509验证管理服务):                    active
openstack-nova-conductor(介于db和compute之间的组件,由它代为转交compute对代表db的请求):               active
openstack-nova-console(控制台服务,允许最终用户通过代理服务器访问他们虚拟机的控制台):                 inactive  (disabled on boot)
openstack-nova-consoleauth:             active
openstack-nova-xvpvncproxy:             inactive  (disabled on boot)
== Glance services ==
openstack-glance-api(接收来自外部的API镜像请求,包括发现,获取和存储):                   active
openstack-glance-registry(用于存储,处理,和获取镜像元数据):              active
== Keystone service ==
openstack-keystone(提供身份验证和授权):                     inactive  (disabled on boot)
== Horizon service ==
openstack-dashboard:                    active
== neutron services ==
neutron-server(用于接收来自外部的API请求,并将改请求交给合适的neutron来处理):                         active
neutron-dhcp-agent(为租户网络提供DHCP服务,每个插件都是使用这一个代理):                     active
neutron-l3-agent(为虚拟机访问外部网络提供3层转发服务):                       active
neutron-metadata-agent:                 active
neutron-openvswitch-agent:              active
neutron-metering-agent:                 active
== Cinder services ==
openstack-cinder-api(接受外部的API请求,把请求交给cinder-volume执行):                   active
openstack-cinder-scheduler(会找一个最佳的节点创建volume):             active
openstack-cinder-volume(负责与底层的块存储服务打交道,相应读写块设备请求,把请求交给块存储服务):                active
openstack-cinder-backup:                inactive  (disabled on boot)
== Ceilometer services ==
openstack-ceilometer-api:               inactive  (disabled on boot)
openstack-ceilometer-central:           active
openstack-ceilometer-compute:           active
openstack-ceilometer-collector:         active
openstack-ceilometer-notification:      active

额外:

openstack-nova-db 数据库表,记录虚拟机状态,虚拟机与物理机的对应关系,租户信息等数据内容

openstack-nova-objectstore   在Glance中注册镜像的s3接口服务

swift   proxy-server        属于swift系统的内部和外部之间,负责接受api或http请求

           container-server  用于管理容器或文件夹的映射关系

           account-server     仅用于账号管理

           object-server         管理在存储节点上的实际对象,还有一些定期执行的进程,比如repilication,auditor,updater,reapter

openstack-cinder-db      用于记录和维护块设备的信息

openstack-glance-db    存储元数据

工作原理:

以创建虚拟机为例,用户先接触到的是界面即horizon,通过horizon上的简单界面操作,一个创建虚拟机的请求被发送到openstack系统后端。接着指定虚拟机的操作系统,下载启动镜像,这件事情由glance提供,但这个镜像可能存储在swift上,所以需要与swift交互得到需要的镜像文件。

再创建虚拟机的时候 ,需要用到cinder提供块服务和neutron提供的网络服务,方便虚拟机有volume可以使用,能被分配到IP地址查询与外界网络链接,然后虚拟机资源的访问要经过keystone的认证之后才可以继续。

安装openstack

准备安装环境

1.在物理机上安装yum源,CentOS7-1708.iso  RHEL7-extras.iso  RHEL7OSP-10.iso(由于这里面有10个包,所以需要运行一个脚本来快速创建,脚本编写如下)

#!/bin/bash
cd /var/ftp/RHEL7OSP-10
for f in *
do
 if [ -d $f ];then
   cat <<EOF >>/tmp/osp10.repo
[$f]
name=$f
baseurl=ftp://192.168.4.254/RHEL7OSP-10/$f
enabled=1
gpgcheck=0
EOF
  fi
done
[root@guo ~]# cat /tmp/osp10.repo              //利用脚本生成repo文件,一会可以拷贝到虚拟机
[rhel-7-server-openstack-10-devtools-rpms]
name=rhel-7-server-openstack-10-devtools-rpms
baseurl=ftp://192.168.4.254/RHEL7OSP-10/rhel-7-server-openstack-10-devtools-rpms
enabled=1
gpgcheck=0
[rhel-7-server-openstack-10-optools-rpms]
name=rhel-7-server-openstack-10-optools-rpms
baseurl=ftp://192.168.4.254/RHEL7OSP-10/rhel-7-server-openstack-10-optools-rpms
enabled=1
gpgcheck=0
...
[root@guo ~]# mkdir /var/ftp/extras     /var/ftp/OSP10    /var/ftp/CentOS7
[root@guo ~]# vim /etc/fstab 
...
/root/456/CentOS7-1708.iso    /var/ftp/CentOS7  iso9660 defaults 0 0 
/root/456/RHEL7OSP-10.iso     /var/ftp/OSP10  iso9660 defaults 0 0 
/root/456/RHEL7-extras.iso     /var/ftp/extras iso9660 defaults 0 0 
[root@guo ~]# mount -a 

2.使用hosts文件进行域名解析

3.在物理机配置NTP服务器

--安装 chrony

[root@guo ~]# yum -y install chrony

--修改配置文件

[root@guo ~]# vim /etc/chrony.conf 
server ntp1.aliyun.com iburst
...
allow 0/0
...

--启动服务

[root@guo ~]# systemctl restart chronyd
[root@guo ~]# systemctl enable  chronyd

创建一台虚拟机,用于安装openstack

1.创建一台虚拟机,利用脚本创建,内存设置为9216Mib

[root@guo ~]# cent7clone.sh 
create vm numbers: 1
create  cent7node2 .... 				 [Done]

2.原有的网卡链接为private1  在添加一块网卡 型号为virto  网卡链接为private2

4.配置IP地址

ech0 : 192.168.4.1/24  192.168.4.254  192.168.4.254

ech1: 192.168.2.1/24 

[root@localhost ~]# bash  bin/configip.sh    //利用之前写好的脚本创建
interface: eth0
ip address: 192.168.4.1
prefix: 24
gateway: 192.168.4.254
dns: 192.168.4.254
[root@localhost ~]# ifdown eth0
[root@localhost ~]# ifup eth0
[root@localhost ~]# bash  bin/configip.sh 
interface: eth1
ip address: 192.168.2.1
prefix: 24
gateway: 
dns: 
[root@localhost ~]# ifdown eth1
[root@localhost ~]# ifup eth1
[root@localhost ~]# ping -c2 192.168.2.254
[root@localhost ~]# ping -c2 192.168.4.254

5.配置虚拟机的yum源

[root@localhost yum.repos.d]# vim local.repo 
[server]
name=server
baseurl=ftp://192.168.4.254/CentOS7.4
gpgcheck=0
enabled=1

[extras]
name=extras
baseurl=ftp://192.168.4.254/extras
gpgcheck=0
enabled=1
[root@guo ~]# scp /tmp/osp10.repo    [email protected]:/etc/yum.repos.d/
//用物理机将刚才创建的yum源传到虚拟机

[root@localhost yum.repos.d]# yum repolist
repolist: 10,731

6.配置域名解析(虚拟机)

[root@localhost ~]# vim /etc/hosts
...
192.168.4.1  node1.tedu.cn   node1
192.168.4.2  node1.tedu.cn   node2
192.168.4.254  host.tedu.cn   host

7.安装额外的软件包

[root@localhost ~]# yum -y install qemu-kvm  libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools

8.逻辑卷不需要做,因为安装的过程中会自动创建

9.导入签名 :

[root@localhost ~]# rpm --import    ftp://192.168.4.254/CentOS7.4/RPM-GPG-KEY-CentOS-7

10.安装openstack部署工具packstack

[root@localhost ~]# yum -y install openstack-packstack

11.在安装openstack过程中有大量的问题需要回答,可以提前生成应答文件

[root@localhost ~]# packstack --gen-answer-file answer.txt
Packstack changed given value  to required value /root/.ssh/id_rsa.pub
[root@localhost ~]# vim answer.txt 
...
 11 CONFIG_DEFAULT_PASSWORD=Taren1
...
 42 CONFIG_SWIFT_INSTALL=n
...
 75 CONFIG_NTP_SERVERS=192.168.4.254    
...
 98 CONFIG_COMPUTE_HOSTS=192.168.4.1                    //安装nova组件,构成nova节点,多个以,号分隔
...
 102 CONFIG_NETWORK_HOSTS=192.168.4.1                   //在所有计算节点上开启ovs网桥,vxlan技术,构成独立的广播域 98/102行默认环境可以不用更改
...
 333 CONFIG_KEYSTONE_ADMIN_PW=XXXXX                           //admin密码,可以在这里设置
...
 840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan          //驱动类型
...
 876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5
...
 910 CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex    //物理网桥的名称
...
 921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0          //br-ex桥的名称与eth0链接,管理eth0,网桥与那个物理网卡链接
...
 936 CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
...
 1179 CONFIG_PROVISION_DEMO=n                             //是否测试

12.安装openstack

注:安装过程一般需要20分钟或者更久,如果出错,根据日志文件进行排错

常见问题:磁盘空间不足,磁盘没有自动扩容,切换英文LANG=en_US.utf-8

                   yum源冲突,软件包不兼容

                  网络IP问题

[root@localhost ~]# packstack --answer-file answer.txt

 **** Installation completed successfully ******

Additional information:
 * File /root/keystonerc_admin has been created on OpenStack client host 192.168.4.1. To use the command line tools you need to source the file.
 * To access the OpenStack Dashboard browse to http://192.168.4.1/dashboard .
Please, find your login credentials stored in the keystonerc_admin in your home directory.
 * The installation log file is available at: /var/tmp/packstack/20190110-015935-vLchqE/openstack-setup.log
 * The generated manifests are available at: /var/tmp/packstack/20190110-015935-vLchqE/manifests

13.安装管理openstack服务的工具        

[root@node1 ~]# yum -y install openstack-utils
[root@node1 ~]# openstack-status         //查看服务状态,状态如果是active表示活跃,inactive 表示不活跃,如果出现fail 一定有问题
== Nova services ==
openstack-nova-api:                     active
openstack-nova-compute:                 active
openstack-nova-network:                 inactive  (disabled on boot)
openstack-nova-scheduler:               active
...
[root@node1 ~]# openstack-service  restart     //如果出现问题,重启,但是不建议重启,因为可能会需要一段时间

配置网络

配置ovs:开放的虚拟交换机

1.为br-ex网络配置IP地址,将eth0的地址写到br-ex上

[root@node1 ~]# cd /etc/sysconfig/network-scripts/
[root@node1 network-scripts]# vim ifcfg-br-ex
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO="static"
TYPE=OVSBridge
ONBOOT=yes
NM_CONTROLLED=no
IPADDR=192.168.4.1
PREFIX=24
GATEWAY=192.168.4.254
[root@node1 network-scripts]# vim ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
IPV6INT=no
BOORPROTO=none
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=br-ex

2.修改eth0配置文件(见上面),使之成为br-ex的一个接口

3.重启网卡

[root@node1 network-scripts]# # systemctl restart network      //如果不成功,则执行以下命令
[root@node1 network-scripts]# # ifdown eth0; ifdown br-ex; ifup eth0; ifup br-ex

Horizon配置--Dashboard仪表盘--基于python的django web框架进行开发

可以管理实例,镜像,创建密钥对,对实例添加卷,操作swift容器等,还可以在控制面板中使用终端或vnc

1.web服务器有一个bug,需要修改apache配置文件,否则内部错误

[root@node1 network-scripts]# vim /etc/httpd/conf.d/15-horizon_vhost.conf 
...
  WSGIProcessGroup apache
  WSGIApplicationGroup %(GLOBAL)                  //添加
[root@node1 network-scripts]# systemctl restart httpd
然后在物理机上访问 http://192.168.4.1

输入用户名,密码(自动生成)

[root@node1 ~]# cat keystonerc_admin 
unset OS_SERVICE_TOKEN
    export OS_USERNAME=admin                     //用户名
    export OS_PASSWORD=9a87903575354abc          //密码
    export OS_AUTH_URL=http://192.168.4.1:5000/v2.0
    export PS1='[\u@\h \W(keystone_admin)]\$ '
    
export OS_TENANT_NAME=admin
export OS_REGION_NAME=RegionOne

 2.创建项目

项目:一组隔离的资源,可以为每个客户创建项目,在早期的版本里,项目project也被称作租户tenant 项目相关信息保存到MariaDB中

默认会有两个项目,一个项目名为admin,给管理员admin使用的的项目,另一个为services 为组件提供服务

3.通过命令访问openstack ,需要初始化环境变量

[root@node1 ~]# source ~/keystonerc_admin 
[root@node1 ~(keystone_admin)]# openstack --help          //查看帮助

4.

列出所有项目 openstack  project list
查看项目信息 openstack project show 项目名
创建项目 openstack project  create 项目名
禁用和激活项目

openstack project set --disable/--enable 项目名

[root@node1 ~(keystone_admin)]# openstack project  create myproject 
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | 163d6225fcf9473693db96ab8e871082 |
| name        | myproject                        |
+-------------+----------------------------------+
[root@node1 ~(keystone_admin)]# openstack  project list
+----------------------------------+-----------+
| ID                               | Name      |
+----------------------------------+-----------+
| 163d6225fcf9473693db96ab8e871082 | myproject |
| 1d5fd0c363ad4b4f997fedd80aa926d9 | admin     |
| 957614d9d18c4c29af8df53c0e4ba2e6 | services  |
+----------------------------------+-----------+
[root@node1 ~(keystone_admin)]# openstack project show myproject 
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| enabled     | True                             |
| id          | 163d6225fcf9473693db96ab8e871082 |
| name        | myproject                        |
| properties  |                                  |

[root@node1 ~(keystone_admin)]# openstack project set --disable myproject 
[root@node1 ~(keystone_admin)]# openstack project show myproject 
+-------------+----------------------------------+
| Field       | Value                            |
+-------------+----------------------------------+
| description | None                             |
| enabled     | False                            |
| id          | 163d6225fcf9473693db96ab8e871082 |
| name        | myproject                        |
| properties  |                                  |
+-------------+----------------------------------+
[root@node1 ~(keystone_admin)]# openstack project set --enable  myproject 

用户管理

admin用户在packstack安装时创建,非管理员用户保存到MariaDB中

非管理员用户:启动实例,创建卷和快照、镜像,分配浮动IP,创建网络和路由器,防火墙及规则,规则策略,查看网络拓扑,项目使用情况等

界面创建用户,指定他可以访问的项目,

命令管理用户

[root@node1 ~(keystone_admin)]# openstack user create --password 123456 user2
//创建user2用户,密码为123456
[root@node1 ~(keystone_admin)]# openstack user set  --email [email protected]  user2
//设置user2的email地址
[root@node1 ~(keystone_admin)]# openstack user set  --disable user2  //禁用user2
[root@node1 ~(keystone_admin)]# openstack user set  --enable  user2  //激活user2
root@node1 ~(keystone_admin)]# openstack role add --user user2 --project myproject  _member_ 
//指定user2可以访问myproject,角色为_member_
[root@node1 ~(keystone_admin)]# openstack user set --password redhat user2
//修改密码为redhat
[root@node1 ~(keystone_admin)]# openstack role remove --project myproject  --user user2 _member_
//将user2从myproject中移除
[root@node1 ~(keystone_admin)]# openstack user delete user2   //删除user2
[root@node1 ~(keystone_admin)]# openstack user list           //列出所有用户
[root@node1 ~(keystone_admin)]# openstack user show user1     //查看user1的信息

配额管理

管理源可以通过配额限制,防止过度使用,配额基本项目,限制每个项目可以使用多少资源

资源参数:

vcpu 指定每个项可用的vcpu核心数
云主机数量 项目一共=可以使用多少虚拟机
可以创建多少个云磁盘数量
内存 所有虚拟机也就是每个项目可以使用最大内存
注入文件大小 指定每个项目内容大小
注入文件路径 指定每个项目注入的文件路径长度
注入文件 指定每个项目允许注入的文件数目
实例 指定每个项目可创建的虚拟机实例数目
密钥对 指定每个项目创建的密钥数
[root@node1 ~(keystone_admin)]# nova quota-defaults    //列出项目的缺省配额    
[root@node1 ~(keystone_admin)]# nova quota-show --tenant  myproject
//列出myproject的配额
[root@node1 ~(keystone_admin)]# nova quota-update  --floating-ips 20 myproject
//修改浮动IP地址配额

云主机类型

资源的模板,定义了一台云主机使用的资源,如内存大小,磁盘容量和CPU核心数,默认有几个类型,可以自定义

云主机类型参数

名称:云主机类型名称

ID:云主机类型ID,系统自动生成一个UUID

VCPUs:虚拟CPU数目

RAM(MB):内存大小

Root disk(GB):外围磁盘大小,如果希望使用本地磁盘,设置为0

临时磁盘:第二个外围磁盘

swap磁盘:交换磁盘大小

[root@node1 ~(keystone_admin)]# openstack flavor list     //列出所有的云主机类型            
[root@node1 ~(keystone_admin)]# openstack flavor create --public demo.tiny --id auto --ram 512 --disk 10 --vcpus 1 
//创建一个云主机类型(上图)
[root@node1 ~(keystone_admin)]# openstack flavor delete demo.tiny  //删除云主机类型 

 镜像基础

在这里指虚拟磁盘文件,磁盘文件中安装了可启动的操作系统,管理功能由Glance服务提供,它形成了穿件虚拟机实例最底层的块结构

Glance磁盘格式

raw :非结构华磁盘镜像格式

vhd:VMware ,Xen ,Microsoft , VirtualBox等

vmdk:Vmwarede geshi

vdi:VirtualBox虚拟机和QEMU支持磁盘格式

iso:光盘格式

qcow2:QEMU支持的磁盘格式,空间自动扩展,并支持写时复制cow

镜像服务:

维护了镜像的一致性,提供了服务器镜像的拷贝,快照功能,可以作为模板快速建立,启动服务器

上传镜像时,容器格式必须指定,指定磁盘文件格式是否包含了虚拟机元数据

镜像容器:

bare:镜像中没有容器或元数据封装

ovf:一种开源的文件规范,描述了一个开源,安全,有效,可拓展的便携式虚拟打包以及软件分布格式

ova:OVA归档文件

aki/ami:亚马逊内核/主机镜像

利用openstack上传镜像

网络管理

项目网络 由Neutron提供的项目内部网络,网络间可用VLAN隔离
外部网络 可以让虚拟机接入外部网络,但需要配置浮动Ip地址
提供商网络 经实例链接到现有网路,实现虚拟机实例与外部系统共享同一二层网络

1.创建内外部网络:外部网络(只有admin有权限设置),wan网  --子网 subnet1--IP 192.168.4.0/24  网关 192.168.4.254   不激活dhcp

                                   内部网络     lan网   --子网 subnet2 --IP192.168.10.0/24  网关192.168.10.1  激活dhcp 网段为

                                    192.168.10.101~192.168.10.200

2.配置路由器:新建路由器route1  外部网络wan    在添加接口子网 lan:192.168.10.0/24 ip 192.168.10.1

安全管理

安全组 :相当于防火墙,控制对虚拟机实例的访问,在高层定义了那些协议和网络是被授权可以访问虚拟机实例的

                每个项目可以定义自己的安全组,项目成员编辑默认的安全规则,可以添加新的安全规则,默认default安全组

规则:每个规则都有出和入两个方向,可以指定ip协议地址

默认有一个规则,default,组内主机可以对外访问,但是外界主机不能访问default安全组中的主机,default内部的主机可以相互访问

创建安全组

新建一个安全组,默认有一个规则,允许组内主机访问外界所有主机,向其中添加一条规则,允许ssh服务

创建云主机

给云主机起个名称

选取源,之前创建的镜像

选择云主机类型,磁盘一定要大于要安装的云主机源

选择内部网络lan

安全组选择自己创建的一个组

这个是创建之后的状态

浮动IP

创建一个地址映射,使得外界主机可以访问云主机,这个浮动IP不会出现在云主机的网卡配置上,外界访问浮动IP就可以访问云主机了

管理浮动IP的关联,可以在打开的界面点击IP地址,然后根据提示分配浮动IP

目前状态下我们都可以ssh到这台云主机,因为目前这个组group1之前开通了远程,但是不能ping通

注:如果ssh报错  WARNING :REMOTE HOST IDENTIFICATION HAS CHANGED!说明这个ip地址之前记录果,但是不是现在的主机

根据提示,将 /root/.ssh/known_hosts 里面对应的ip删除,或者删除整个文件

[root@guo ~]# vim /root/.ssh/known_hosts 
...
192.168.1.193 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLbeZn0oixXQQEAEclKnr1zideN3MmtD9EfVZwn7NJu8qcJ/UJB4DnHsAfe+y0hOkv0bF+ek23RuH3YfeT4WWMY=
192.168.4.1 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBLCuALe6GqyFMPd7OXZH7LcVgo8YkvDXEWSbn3lAX+5qp7Tpzkt1addmjLOpwHVEp30qI7RJlZd6XanAmM0cJIo=
192.168.4.2 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJAQccqrDaJN9tk0tEKLZxNLvpq0tVKa7YuZAhB1/HCTX+4VCAlbjVL+o1ltdGrXsAqzsFTGw9hFDVruT/wJWKg=
192.168.4.12 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBF3/vcskzmaQwAaphIq4tlzcrxvdh0G119vMGLL8v4qp/XZ3SxwwNGzYe92aC296CIo9A7kGnSQi8lAOM5RAQ/o=
[root@guo ~]# ssh -X 192.168.4.12
The authenticity of host '192.168.4.12 (192.168.4.12)' can't be established.
ECDSA key fingerprint is SHA256:KrsYlQpdRaKNN0tv0Bom+UMc4DBvUQuimbtSTihHy0k.
ECDSA key fingerprint is MD5:b0:f8:0c:5f:14:9e:67:59:7a:2d:ce:2a:70:3a:ba:8f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '192.168.4.12' (ECDSA) to the list of known hosts.
[email protected]'s password: 
X11 forwarding request failed on channel 0
Last login: Fri Jan 11 10:29:23 2019 from 192.168.4.1
[root@host-192-168-10-108 ~]# 

需要修改安全组规则:

添加icmp规则

验证测试物理机,虚拟机,云主机,可以相互ping通。如果想拥有其他规则。则修改对应规则即可

[root@host-192-168-10-108 ~]# ping 192.168.4.1
PING 192.168.4.1 (192.168.4.1) 56(84) bytes of data.
64 bytes from 192.168.4.1: icmp_seq=1 ttl=63 time=1.48 ms
64 bytes from 192.168.4.1: icmp_seq=2 ttl=63 time=0.698 ms

[root@guo ~]# ping 192.168.4.12
PING 192.168.4.12 (192.168.4.12) 56(84) bytes of data.
64 bytes from 192.168.4.12: icmp_seq=1 ttl=63 time=1.03 ms
64 bytes from 192.168.4.12: icmp_seq=2 ttl=63 time=0.563 ms

[root@localhost cinder(keystone_admin)]# ping 192.168.4.12
PING 192.168.4.12 (192.168.4.12) 56(84) bytes of data.
64 bytes from 192.168.4.12: icmp_seq=1 ttl=63 time=0.643 ms

安装额外节点nova

创建一个虚拟机100G磁盘,2块网卡,内存(根据实际情况,因为我这个环境是16G,openstack已经用了9G,所以本次看情况给nova)

[root@guo images]# qemu-img create   -f qcow2  -b cent7.img  openstack.img 100G
Formatting 'openstack.img', fmt=qcow2 size=107374182400 backing_file='cent7.img' encryption=off cluster_size=65536 lazy_refcounts=off 
[root@guo images]# qemu-img create   -f qcow2  -b cent7.img  nova01.img 100G
Formatting 'nova01.img', fmt=qcow2 size=107374182400 backing_file='cent7.img' encryption=off cluster_size=65536 lazy_refcounts=off 

[root@guo bin]# cp node.xml /tmp/node1.xml
[root@guo tmp]# vim node1.xml 
<domain type='kvm'>
  <name>node1</name>
...
 <source file='/var/lib/libvirt/images/openstack.img'/>
...
[root@guo bin]# cp node.xml /tmp/node2.xml
[root@guo tmp]# vim node2.xml 
<domain type='kvm'>
  <name>node2</name>
...
 <source file='/var/lib/libvirt/images/nova01.img'/>
...
[root@guo tmp]# virsh define /tmp/node1.xml 
定义域 node1(从 /tmp/node1.xml)

[root@guo tmp]# virsh define /tmp/node2.xml 
定义域 node2(从 /tmp/node2.xml)

扩容磁盘(两台都需要操作)

[root@localhost ~]# growpart /dev/vda 1  
[root@localhost ~]# df -Th
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/vda1      xfs       100G  1.1G   99G    2% /

配置IP 及 主机名 ifcfg-eth0  /etc/hosts(两台主机都要写)

[root@guo tmp]# virsh
virsh # domiflist node1
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet2      network    vbr        virtio      52:54:00:33:18:6f  192.168.1.10(实际配置的网卡,命令不显示网卡ip)
vnet3      network    private1   virtio      52:54:00:7c:c4:55  192.168.4.10

virsh # domiflist node2
接口     类型     源        型号      MAC
-------------------------------------------------------
vnet0      network    vbr        virtio      52:54:00:4e:f5:6b  192.168.1.11
vnet1      network    private1   virtio      52:54:00:b0:1b:74  192.168.4.11
[root@localhost ~]# ping www.baidu.com          //看是否可以联通外网,注意网卡,防火墙
PING www.a.shifen.com (119.75.217.26) 56(84) bytes of data.
^C64 bytes from 119.75.217.26: icmp_seq=1 ttl=54 time=3.91 ms
...
[root@localhost ~]# vim /etc/hosts

192.168.1.11 node2
192.168.1.10 node1
192.168.1.254 host

检查时间同步   chronyc  sources -v

[root@guo ~]# vim /etc/chrony.conf               //物理机作为时间服务同步
...
server ntp1.aliyun.com iburst
allow 0/0
[root@guo ~]# systemctl restart chronyd.service 

[root@localhost ~]# vim /etc/chrony.conf           //两台虚拟机都需要同步
[root@localhost ~]# systemctl restart chronyd
[root@localhost ~]# chronyc sources -v
...
^* 192.168.1.254                 3   6    17     5    -43us[ -408us] +/-   25ms

检查dns 域名解析服务   /etc/resolv.conf

; generated by /usr/sbin/dhclient-script
nameserver 192.168.1.254                  
search localdomain                        //可以不配,如果写,需要写在nameserver下面

配置yum 源  (12个yum源,10731包)

 # RHEL7OSP-10.iso
rhel-7-server-rhceph-2-osd-rpms           rhel-7-server-rhceph-2-mon-rpms 
rhel-7-server-openstack-10-devtools-rpms  rhel-7-server-rhceph-2-tools-rpms
rhel-7-server-openstack-10-optools-rpms   rhel-7-server-rhscon-2-agent-rpms
rhel-7-server-openstack-10-rpms           rhel-7-server-rhscon-2-installer-rpms
rhel-7-server-openstack-10-tools-rpms     rhel-7-server-rhscon-2-main-rpms
# CentOS7-1708.iso  RHEL7-extras.iso
[root@localhost ~]# yum repolist
repolist: 10,731

安装依赖包 qemu-kvm   libvirt-daemon   libvirt-daemon-driver-qemu  libvirt-client   python-setuptools

[root@localhost ~]# yum install qemu-kvm  libvirt-daemon libvirt-daemon-driver-qemu libvirt-client python-setuptools          //两台机器均需安装

安装openstack-packstack(安装nova不需要安装)

[root@localhost ~]# yum -y install openstack-packstack

创建应答文件 packstack  --gen-answer-file=answer.ini

[root@localhost ~]# packstack --gen-answer-file=answer.ini
[root@localhost ~]# vim answer.ini 
...
42 CONFIG_SWIFT_INSTALL=n
75 CONFIG_NTP_SERVERS=192.168.1.254
98 CONFIG_COMPUTE_HOSTS=192.168.1.10,192.168.1.11
102 CONFIG_NETWORK_HOSTS=192.168.1.10,192.168.1.11
333 CONFIG_KEYSTONE_ADMIN_PW=123456
840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan
876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5
910 CONFIG_NEUTRON_OVS_BRIDGE_MAPPINGS=physnet1:br-ex
921 CONFIG_NEUTRON_OVS_BRIDGE_IFACES=br-ex:eth0
936 CONFIG_NEUTRON_OVS_TUNNEL_IF=eth1
1179 CONFIG_PROVISION_DEMO=n

安装 openstack 和 nova : packstack --answer-file=answer.ini

[root@localhost ~]# packstack --gen-answer-file=answer.ini
[email protected]'s password:                      //输入主机密码
[email protected]'s password: 

猜你喜欢

转载自blog.csdn.net/weixin_43800781/article/details/86149672