虚拟化技术的底层构成:
内核的虚拟化模块(KVM):从内核集去提供虚拟化及CPU指令集的支持,要求CPU支持,(CPU有VMX指令集)
硬件仿真层(QEMU):虚拟一些周边设备,鼠标、键盘、网卡、声卡、显卡
libvirt:负责管理虚拟机,与虚拟机进行交互
用户接口:virt-manager(图形界面)、virsh(命令行)
虚拟机:配置文件、硬盘(镜像文件)
qcow2 写拷贝技术
前端盘(img) 后端盘(qcow2) xml文件一般不会更改
1.配置yum仓库
CentOS7-1708光盘内容作为仓库源
配置 RHEL7-extars内容加入仓库源
RHEL7OSP-10光盘中包含多个目录,每个目录都是仓库源(可以使用脚本生成)
配置 yum仓库
警告:仅yum配置的第一个源(系统源)为gpgcheck=1需要导入公钥,其他的都是gpgcheck=0,否则安装会报错。
]# mkdir /var/ftp/system
]# mkdir /var/ftp/extras
]# mkdir /var/ftp/HEL7OSP
]# vim /etc/fstab
/iso/RHEL7OSP-10.iso /var/ftp/HEL7OSP iso9660 defaults 0 0
/iso/CentOS7-1708.iso /var/ftp/system iso9660 defaults 0 0
/iso/RHEL7-extras.iso /var/ftp/extras iso9660 defaults 0 0
]# mount –a
]# vim /etc/yum.repos.d/local.repo
[local_repo]
name=CentOS-$releasever - Base
enabled=1
gpgcheck=1
[local_extras]
name=extras
enabled=1
gpgcheck=0
[1local_devtools-rpms]
name=devtools-rpms
enabled=1
gpgcheck=0
[2local_optools-rpms]
name=optools-rpms
enabled=1
gpgcheck=0
[3local_rpms]
name=rpms
enabled=1
gpgcheck=0
[4local_tools-rpms]
name=tools-rpms
enabled=1
gpgcheck=0
[5local_mon-rpms]
name=mon-rpms
enabled=1
gpgcheck=0
[6local_osd-rpms]
name=osd-rpms
enabled=1
gpgcheck=0
[7local_rhceph-2-tools-rpms]
name=rhceph-2-tools-rpms
enabled=1
gpgcheck=0
[8local_agent-rpms]
name=agent-rpms
enabled=1
gpgcheck=0
[9local_installer-rpms]
name=installer-rpms
enabled=1
gpgcheck=0
[10local_rhscon-2-main-rpms]
name=rhscon-2-main-rpms
enabled=1
gpgcheck=0
2. 两台虚拟机配置
2.1 创建两台虚拟机后端盘:
images] qemu-img create -f qcow2 -b node.qcow2 openstack.img 50G
images] qemu-img create -f qcow2 -b node.qcow2 nova01.img 50G
2.2 创建img:
删除centos7.0.xml里面所有的^mac*,^address*的行
qemu] sed 's,centos7.0,nova01,' centos7.0.xml > nova01.xml
qemu] sed 's,centos7.0,openstack,' centos7.0.xml > openstack.xml
2.3 创建虚拟机:
qemu] virsh define openstack.xml
qemu] virsh define nova01.xml
2.4 修改内存:
] virsh edit openstack
...
8848000
8848000
...
] virsh edit nova01
...
6548000
6548000
...
添加网卡:(每个都添加第二张网卡)
添加硬件--网络(private1,型号 virtio)--保存
2.5 登陆openstack
] ssh -X root@192.168.1.140
openstack:
]# lsblk(有50G)
]# export LANG=en_US
]# growpart /dev/vda 1 (lsblk 2G-50G)
]# xfs_growfs / (df -h 2G-50G)
]# echo openstack > /etc/hostname
stack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.1"
PREFIX=24
GATEWAY=192.168.1.254
tack ~]# systemctl restart network
添加第二张网卡:
scripts]# cp ifcfg-eth0 ifcfg-eth1
scripts]# vim ifcfg-eth1
# Generated by dracut initrd
DEVICE="eth1"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.4.10"
PREFIX=24
scripts]# systemctl restart network(会有eth1)
配置DNS:
查看真机器
]# cat /etc/resolv.conf
# Generated by NetworkManager
search tedu.cn
nameserver 176.233.0.227
虚拟机:
]# vim /etc/resolv.conf
nameserver 176.233.0.227
测试
]# ping www.baidu.com
域名解析
tack ~]# vim /etc/hosts
//在openstack和nova01主机上面操作
192.168.1.1 openstack
192.168.1.2 nova01
2.6 登陆nova01
]# ssh -X root@192.168.1.129
openstack:
]# lsblk(有50G)
]# export LANG=en_US
]# growpart /dev/vda 1 (lsblk 2G-50G)
]# xfs_growfs / (df -h 2G-50G)
]# echo nova01 > /etc/hostname
stack ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0
# Generated by dracut initrd
DEVICE="eth0"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.1.2"
PREFIX=24
GATEWAY=192.168.1.254
tack ~]# systemctl restart network
添加第二张网卡:
scripts]# cp ifcfg-eth0 ifcfg-eth1
scripts]# vim ifcfg-eth1
# Generated by dracut initrd
DEVICE="eth1"
ONBOOT="yes"
IPV6INIT="no"
IPV4_FAILURE_FATAL="no"
NM_CONTROLLED="no"
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR="192.168.4.11"
PREFIX=24
scripts]# systemctl restart network(会有eth1)
配置DNS:
查看真机器
]# cat /etc/resolv.conf
# Generated by NetworkManager
search tedu.cn
nameserver 176.233.0.227
虚拟机:
]# vim /etc/resolv.conf
nameserver 176.233.0.227
测试
]# ping www.baidu.com
域名解析
tack ~]# vim /etc/hosts
//在openstack和nova01主机上面操作
192.168.1.1 openstack
192.168.1.2 nova01
3. 配置NTP服务器
将NTP服务与DNS服务部署在同一台主机上
确认NTP服务器的时区是东八区
确认NTP服务器的时间准确
计划安装openstack的服务器与NTP服务器进行时间校正
3.1 配置NTP时间同步(真机操作)
]# yum -y install chrony
]# vim /etc/chrony.conf
server ntp1.aliyun.com iburst
bindacqaddress 0.0.0.0
allow 0/0 //允许所有人使用我的时间服务器
cmdallow 127.0.0.1 //控制指令
]# systemctl restart chronyd
]# netstat -antup | grep chronyd
udp 0 0 0.0.0.0:123 0.0.0.0:* 23036/chronyd
udp 0 0 127.0.0.1:323 0.0.0.0:* 23036/chronyd
]# chronyc sources -v //出现*号代表NTP时间可用
^* 120.25.115.20
4. 环境准备
准备openstack的基础环境
1)配置yum源
备注:只有系统源的gpgcheck=1,其他的都是gpgcheck=0)
]# scp /etc/yum.repos.d/local.repo \192.168.1.1:/etc/yum.repos.d/
//拷贝给openstack
]# scp /etc/yum.repos.d/local.repo \192.168.1.2:/etc/yum.repos.d/
//拷贝给nova.tedu.cn这台主机
2) 配置ip
给openstack主机添加eth1网卡 192.168.4.10/24
给nova01主机添加eth1网卡 192.168.4.11/24
3)配置卷组(真机创建,openstack添加)
room9pc01 images]# qemu-img create -f qcow2 disk.img 50G
room9pc01 ]# virsh -c qemu:///system attach-disk openstack \
/var/lib/libvirt/images/disk.img vdb --subdriver qcow2 --sourcetype file
Disk attached successfully //添加成功
stack ~]# yum install lvm2
stack ~]# pvcreate /dev/vdb
stack ~]# vgcreate cinder-volumes /dev/vdb
stack ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
vda 253:0 0 50G 0 disk
└─vda1 253:1 0 50G 0 part /
vdb 253:16 0 50G 0 disk
stack~]# vgs
VG #PV #LV #SN Attr VSize VFree
cinder-volumes 1 0 0 wz--n- <50.00g <50.00g
4)安装openstack的依赖包(openstack和nova01主机上面)
openstack ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
nova ~]# yum install -y qemu-kvm libvirt-client libvirt-daemon libvirt-daemon-driver-qemu python-setuptools
5.部署Openstack
通过packstack部署Openstack
根据相关日志文件进行排错
5.1 安装packstack
stack ~]# yum install -y openstack-packstack
创建应答文件:
stack ~]# packstack --gen-answer-file answer.ini
//answer.ini与answer.txt是一样的,只是用vim打开answer.ini文件有颜色
Packstack changed given value to required value /root/.ssh/id_rsa.pub
修改应答文件:
stack ~]# vim answer.ini
11 CONFIG_DEFAULT_PASSWORD=redhat //密码
42 CONFIG_SWIFT_INSTALL=n
75 CONFIG_NTP_SERVERS=192.168.1.254 //时间服务器的地址
333 CONFIG_KEYSTONE_ADMIN_PW=redhat //openstack管理员的密码,用户名是admin
554 CONFIG_CINDER_VOLUMES_CREATE=n //创建卷,已经手动创建过了
840 CONFIG_NEUTRON_ML2_TYPE_DRIVERS=flat,vxlan //网络驱动类型
876 CONFIG_NEUTRON_ML2_VXLAN_GROUP=239.1.1.5 //组播地址
//设置组播地址,最后一个随意不能为0和255,其他固定
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 //DEMO是否测试
仔细检查是否正确,yum是不是10731,要装至少20分钟以上!
stack ~]# packstack --answer-file=answer.ini
**** Installation completed successfully ****** //出现这个为成功
6.网络管理
6.1查看外部OVS网桥
1)查看br-ex网桥配置(br-ex为OVS网桥设备)
openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-br-ex
ONBOOT="yes"
NM_CONTROLLED="no"
IPADDR="192.168.1.1"
PREFIX=24
GATEWAY=192.168.1.254
DEVICE=br-ex
NAME=br-ex
DEVICETYPE=ovs
OVSBOOTPROTO="static"
TYPE=OVSBridge (OVS交换机)
2)查看eth0网卡配置(该网卡为OVS网桥的接口)
openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
NAME=eth0
DEVICETYPE=ovs //OVS类型
TYPE=OVSPort //变为OV的一个端口
OVS_BRIDGE=br-ex
ONBOOT=yes
BOOTPROTO=none
发现:eth0的IP被br-ex抢走了,原因:
openstack里有一台虚拟a
nova01里有一台虚拟机b
a,b只要通信,必须有一个实体的交换机,那连接实体交换机的网卡是谁?
--eth0,于是,虚拟机a,b要相互通信,通过内部虚拟交换机,同时a,b要连接外网,
那么openstack把虚拟交换机升级为三层交换机,eth0的网卡(4.10)变为虚拟交换机(三层)的一个接口。
通信过程:
a-->a(虚拟交换机)-->a(eth0)-->物理交换机-->b(eth0)-->b(虚拟交换机)-->b
3)验证OVS配置
openstack ~]# ovs-vsctl show
Bridge br-ex
Controller "tcp:127.0.0.1:6633"
is_connected: true
fail_mode: secure
Port "eth0" //端口eth0
Interface "eth0"
Port br-ex
Interface br-ex
type: internal
Port phy-br-ex
Interface phy-br-ex
type: patch
options: {peer=int-br-ex}
7.管理项目,基本操作
创建名为myproject的项目
查看项目信息
更新vcpu配额为30
删除myproject
7.1 浏览器访问openstack
1)火狐浏览器输入 192.168.1.1
//访问失败
2)需要改配置文件并重新加载
stack ~]# cd /etc/httpd/conf.d/
conf.d]# vim 15-horizon_vhost.conf
35 WSGIProcessGroup apache
36 WSGIApplicationGroup %{GLOBAL} //添加这一行,是添加!
conf.d]# apachectl graceful //重新载入配置文件
3)火狐浏览器输入 192.168.1.1
出现登陆界面
查看密码,登陆
stack ~]# cat keystonerc_admin
unset OS_SERVICE_TOKEN
export OS_USERNAME=admin
export OS_PASSWORD=redhat
4)创建名为myproject的项目
stack ~]# source ~/keystonerc_admin //初始化环境变量
admin)]# openstack project create myproject
+-------------+----------------------------------+
| Field | Value |
+-------------+----------------------------------+
| description | None |
| enabled | True |
| id | 97c91571259b4419be2a758e2e1c88a7 |
| name | myproject |
+-------------+----------------------------------+
5)查看项目信息
admin)]# openstack project list
+----------------------------------+-----------+
| ID | Name |
+----------------------------------+-----------+
| 6b57f6e21b6f483ab4d5e8995c27f657 | services |
| 97c91571259b4419be2a758e2e1c88a7 | myproject |
| bc07c5a9d6914bdd86b28a76207668cd | admin |
+----------------------------------+-----------+
6)更新vcpu配额为30
admin)]# nova quota-update --cores 30 myproject
可以登陆查看
火狐浏览器输入 192.168.1.1
7)删除myproject
admin)]# openstack project delete myproject
8)安装openstack工具包
stack ~]# yum -y install openstack-utils
stack ~]# openstack-status
***************************
重点知识整理:
1.虚拟机由两部分构成
*.xml
*.img
2.配置openstack基础准备
yum源
时间同步(同步阿里云,自己也做服务器)
3.什么是云计算
一种便捷的、按需的、提供互联网相关服务的虚拟化资源管理服务。
4.云计算的三种服务
IaaS(Infrastructure as a
Service) ,基础设施,即服务。
提供给消费者的服务是对所有计算基础设施的利用,包括处理CPU,内存、网络等和其他基本的计算资源,用户能够部署和运行任意软件,包括操作系统和应用程序。
IaaS通常分为三种用法:共有云(虚拟机),私有云(淘宝)和混合云
PaaS(Platform-as-a-Service),平台服务,以服务平台或者开发环境为服务进行提供就成了PaaS.
SaaS(Software-as-a-Service),软件即服务,厂商将应用软件统一部署在服务器上,客户可以根据自己的实际需求,通过互联网向厂商订购(租用,代维护,数据存储)所需要的应用软件服务。
5. Openstack 简介
是一套IaaS解决方案,开源的云计算管理平台,以Apache许可证为授权。
七大组件:
01:Horizon
用于管理Openstack各种服务的、基于web的管理接口
通过图形界面实现创建用户、管理网络、启动实例等操作。
02:Keystone
为其他服务提供认证和授权的集中身份管理服务
密码认证、令牌认证、AWS(亚马逊Web服务)、SSO认证服务等
也提供了集中的目录服务
03:Neutron
软件定义网络服务
用于创建网络、子网、路由器、管理浮动IP
实现虚拟交换机、路由器
实现项目中的VPN服务
04:Cinder
为虚拟机管理存储卷的服务
为运行在Nova中的实例提供永久的块存储
可以通过快照进行数据备份
经常应用在实例存储环境中,如数据库文件
05:Nova
在节点上用于管理虚拟机的服务
分布式服务,能够与Keystone交互实现认证,与Glance交互实现镜像管理
Nova被设计在标准硬件上能够进行水平拓展
启动实例时,如果有则需要下载镜像
相当于皇帝安插在各个大臣身边的钦差,远程管理各个虚拟机(安装服务等)。
06:Glance
扮演虚拟机镜像注册的角色
允许用户直接拷贝服务的镜像
这些镜像可以应用于新建虚拟机的模版
类似于yum源,任意云主机想要创建前端盘,可以通过Glance服务器映射后端盘镜像创建前端盘
07:Swift
对象存储,底层相当于一个ceph,提供给openstack云主机使用
- openstack项目【day24】:OpenStack mitaka部署
前言: openstack的部署非常简单,简单的前提建立在扎实的理论功底,本人一直觉得,玩技术一定是理论指导实践,网上遍布个种搭建方法都可以实现一个基本的私有云环境,但是诸位可曾发现,很多配置都是重复 ...
- 部署OpenStack问题汇总(六)-- OpenStack入门需要知道的概念
本博客已经添加"打赏"功能,"打赏"位置位于右边栏红色框中,感谢您赞助的咖啡. 一.网络问题-network 更多网络原理机制可以参考<OpenStack ...
- 完整部署CentOS7.2+OpenStack+kvm 云平台环境(1)--基础环境搭建
公司在IDC机房有两台很高配置的服务器,计划在上面部署openstack云平台虚拟化环境,用于承载后期开发测试和其他的一些对内业务.以下对openstack的部署过程及其使用做一详细介绍,仅仅依据本人 ...
- openstack的控制节点部署
openstack的控制节点部署 主要是使用了本地安装的那个镜像. 会出现几个问题, 1.重启服务无法启动. 2.环境变量无法正确配置可以自己配置
- openstack之~glance安装部署
接着部署完keystone后,接着部署glance 第一:部署安装glance glance关于数据库的操作: [root@controller /]# mysql -u root -p Enter ...
- OpenStack 镜像服务 Glance部署(六)
Glance介绍 创建虚拟机我们需要有glance的支持,因为glance是提供镜像的服务. Glance有两个比较重要的服务: Glance-api:接受云系统镜像的构建.删除.读取请求 Glanc ...
- Openstack(九)部署nova服务(控制节点)
9.1nova服务介绍 nova是openstack最早的组件之一,nova分为控制节点和计算节点,计算节点通过nova computer进行虚拟机创建,通过libvirt调用kvm创建虚拟机,nov ...
- openstack (5)-- 部署 Neutron 网络服务
Neutron 概念: 传统的网络管理方式很大程度上依赖于管理员手工配置和维护各种网络硬件设备:而云环境下的网络已经变得非常复杂,特别是在多租户场景里,用户随时都可能需要创建.修改和删除网络,网络的连 ...
- OpenStack Train版 简单部署流程
environment 1.网络平面 management(管理网络)→软件安装,组件通信 provider(提供实例网络)→:提供者网络:直接获取ip地址,实例之间直接互通 自服务网络(私有网络 ...
随机推荐
- Python笔记001-Python入门
第一章:Python入门 1.Python介绍 1.1 简介 Python是一种解释型,面向对象的语言.由吉多·范罗苏姆(Guido van Rossum)于1989年发明,1991年正式公布.官网: ...
- WUSTOJ 1291: 2n皇后问题(Java)
题目:
- linux运维命令3
1.grep 逐行搜索所指定的文件或标准输入,并显示匹配模式的每一行. grep [-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C& ...
- mysql中char和varchar区别
char是一种固定长度的类型,varchar则是一种可变长度的类型 char(M)类型的数据列里,每个值都占用M个字节,如果某个长度小于M,MySQL就会在它的右边用空格字符补足.(在检索操作中那些 ...
- Ubuntu Server 18.04 无法修改 hostname
对于运维而言,我们希望每台服务器的 hostname 都能体现出它自己的功能/ip,方便排查. ubuntu server live 18.04 的安装流程非常友好,从 ip 到 hostname 都 ...
- C语言之反汇编揭秘
title: 'C语言之反汇编揭秘' tags: 汇编与反汇编 categories: 汇编与反汇编 copyright: true abbrlink: 'b1c9' date: 2019-09-07 ...
- 面试经典算法:优先队列,最大堆,堆排序,左偏树Golang实现
堆排序 使用优先队列-最小/最大堆可实现. 优先队列 优先队列是一种能完成以下任务的队列:插入一个数值,取出最小的数值(获取数值,并且删除).优先队列可以用二叉树来实现,我们称这种为二叉堆. 最小堆 ...
- jvm类加载原理和类加载器介绍
虚拟机的类加载机制 在Class文件中描述的各种信息最终都需要加载到虚拟机中之后才能运行和使用. 虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被 ...
- IdentityServer4同时使用多个GrantType进行授权和IdentityModel.Client部分源码解析
首先,介绍一下问题. 由于项目中用户分了三个角色:管理员.代理.会员.其中,代理又分为一级代理.二级代理等,会员也可以相互之间进行推荐. 将用户表分为了两个,管理员和代理都属于后台,在同一张表,会员单 ...
- pytorch报错:AttributeError: 'module' object has no attribute '_rebuild_tensor_v2'
转载自: https://blog.csdn.net/qq_24305433/article/details/80844548 由于训练模型时使用的是新版本的pytorch,而加载时使用的是旧版本的p ...