详解Openstack组件部署 — Overview和前期环境准备

前言

一直以来对OpenStack都是心存向往的,大学的毕业设计题目也是《Openstack Dashboard的页面定制》,还以此获得了当年的优秀毕业论文。从学生年代懵懂的将技术方向定位为系统架构到逐渐转型踏上Openstack开发之路,走的磕磕碰碰,总得来说还是希望能为Openstack做出一些自己的贡献。即便微不足道,我想这正正就是开源的魅力和力量吧。
Openstack系列博文会从最基本的部署 –> 组件功能实现原理 –> 源码解析这么个由浅入深的过程来记录。

软件环境

系统

CentOS 7

软件版本

  1. VMware 10
  2. Openstack-kilo

Openstack 简介

What's Openstack ?

这个问题,我相信没有任何人能够比Openstack官网给出更好的答案。点这里

原文:OpenStack is a cloud operating system that controls large pools of compute, storage, and networking resources throughout a datacenter, all managed through a dashboard that gives administrators control while empowering their users to provision resources through a web interface.

粗译:Openstack是一个控制着大量计算能力、存储、乃至于整个数据中心网络资源的云操作系统,通过Dashboard这个Web界面,让管理员可以控制、赋予他们的用户去提供资源的权限(即:能够通过Dashboard控制整个Openstack云计算平台的运作)。

Openstack 架构

Openstack的发展非常快,而且由于其开源的本质,所以导致了即便是前后相隔的两个不同版本,也可能会出现比较大的区别。所以在我们初习Openstack的时候,应该考虑从一个体系相对成熟,资料相对丰富的版本入手。当然如果你拥有良好的英文阅读习惯的话,Openstack的官网就提供了非常完善的最新版本的文档资料。

本篇是Openstack系列的开篇,所以先对Openstack整体架构做一个粗略的了解。

部署Openstack的方法有很多,官方文档Step by Step、Fuel在线安装、Devstack、镜像、RDO库等等。当然如果希望更好的理解Openstack各组件的功能和关系的话,按照官方文档来一步步部署将会是一个非常不错的选择。点这里

OpenStack组件

  1. Compute (Nova) 计算服务
  2. Identity Service (Keystone) 认证服务
  3. Image Service (Glance) 镜像服务
  4. Networking (Neutron/Quantum) 网络服务
  5. Dashboard (Horizon) 仪表板
  6. Object Storage (Swift) 对象存储
  7. Block Storage (Cinder) 块存储
  8. Orchestration (Heat) 编排
  9. Telemetry (Ceilometer) 监控
  10. Database Service (Trove) 数据库服务
  11. Data Processing (Sahara) 数据处理

Openstack Install Overview

硬件参数:

这是官方给出的Example architecture,因为我们的实验环境是VMware,所以会对架构规划作出相应的修改,如下:

Node 拓扑

这是一个相对接近生产环境的拓扑图,涉及到虚拟专用网络、高可用、主从备份、负债均衡等架构思想。

IPAddress 规划

  1. Managerment Network on 192.168.1.0/24 with Gateway 192.168.1.1
  2. Instance Tunnels Network on 172.16.0.0/24 with Gateway 172.16.0.1

Hostname

controller.jmilk.com    192.168.1.5
network.jmilk.com     192.168.1.6
compute1.jmilk.com     192.168.1.10
compute2.jmilk.com     192.168.1.11
block1.jmilk.com     192.168.1.20
block2.jmilk.com     192.168.1.21
object1.jmilk.com     192.168.1.31
object2.jmilk.com     192.168.1.32

创建Node虚拟机

在VMWare上至少创建Controller、Compute1、Network三个核心组件Node。如果条件允许的话最好能够按照Node拓扑来创建Node。

这一节的内容在每一个Node上都需要进行。

推荐硬件参数:

  1. Controller Node: 2 CPU, 8 GB memory, and 100 GB storage,1 NIP
  2. Network Node: 2 CPU, 4 MB memory, and 100 GB storage,3 NIP
  3. Compute Node: 4 CPU, 8 GB memory, and 100 GB storage,2 NIP

最低要求:

  1. Controller Node: 1 processor, 4 GB memory, and 5 GB storage
  2. Compute Node: 1 processor, 2 GB memory, and 10 GB storage

环境准备

所有Node都需要执行环境准备的操作

基础设置

Step1:关闭防火墙

systemctl mask iptables.service
systemctl mask ip6tables.service
systemctl mask ebtables.service
systemctl mask firewalld.service 

Step2:设置主机名

hostnamectl set-hostname NEW_HOSTNAME 

Step3:关闭Selinux

Step4:按照IPAddress规划来设置staticIP

注意:当需要联网下载RDO库时,可以将虚拟机的网络选为桥接

Example: Controller Node

代码如下:

nmcli connection modify eno16777736 ipv4.addresses "192.168.1.5/24 192.168.1.1" ipv4.dns "202.106.195.68,202.106.46.151" ipv4.method manual

这样就可以连接到外网,在VMWare中卫虚拟机添加多网卡的配置,可以参考CentOS7 修改网卡名称为eth0 & 在VMWare中添加多网卡配置

Install OpenStack预备包

#1. 安装yum-plugin-priorities包,防止高优先级软件被低优先级软件覆盖
yum install yum-plugin-priorities 

#2. 安装EPEL扩展yum源,是一个RHEL系列的高质量软件源,可能版本号会被修改
yum install http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-6.noarch.rpm 

#3. 安装extras repository 和 RDO repository
yum install centos-release-openstack-mitaka
yum install https://rdoproject.org/repos/rdo-release.rpm

#4. 更新系统
yum update -y

#5. 重启系统
reboot

#6. 安装openstack-selinux自动管理SELinux
yum install openstack-selinux 

#7. 安装Openstack client
yum install python-openstackclient -y

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • 详解Openstack环境准备

    Openstack官方学习网址 http://docs.openstack.org/mitaka/zh_CN/install-guide-rdo/ Openstack安装准备 环境准备 Centos7-192.168.56.11 linux-node1.oldboyedu.com Centos7-192.168.56.12 linux-node2.oldboyedu.com 两台主机hosts解析 复制代码 代码如下: 192.168.56.11 linux-node1 linux-node1.

  • Vmware+Centos7搭建Openstack环境(网络配置)

    Vmware12+Centos7搭建Openstack环境-网络配置 一.虚拟机配置 根据OpenStack官方的教程,节点的环境中比较重要的就是网络的配置,首先先在虚拟机中进行设置,选择编辑中的虚拟网络编辑器 按照官方给的配置需求 主要配置两个网卡接口 interface1 网关10.0.0.1 nat模式 interface2 选择虚拟网络编辑器中的VMnet8,nat设置如下 这里网关没有选择10.0.0.2,原因是之前查资料查到在虚拟机中,10.0.0.1的地址被当前主机使用,所以网关应

  • CentOS7.2部署OpenStack(一)—环境准备

    本篇文章介绍CentOS7.2部署OpenStack,具体如下: 1.系统环境 # uname -r 3.10.0-327.el7.x86_64 # cat /etc/redhat-release CentOS Linux release 7.2.1511 (Core) 2.服务器部署 3.基础环境准备 3.1.配置hosts # cat /etc/hosts 192.168.56.108 controller 192.168.56.109 compute 3.2.配置时间同步 [root@co

  • 详解Openstack组件部署 — Overview和前期环境准备

    前言 一直以来对OpenStack都是心存向往的,大学的毕业设计题目也是<Openstack Dashboard的页面定制>,还以此获得了当年的优秀毕业论文.从学生年代懵懂的将技术方向定位为系统架构到逐渐转型踏上Openstack开发之路,走的磕磕碰碰,总得来说还是希望能为Openstack做出一些自己的贡献.即便微不足道,我想这正正就是开源的魅力和力量吧. Openstack系列博文会从最基本的部署 –> 组件功能实现原理 –> 源码解析这么个由浅入深的过程来记录. 软件环境 系

  • 详解tomcat热部署和热加载的方法

    详解tomcat热部署和热加载的方法 我在项目开发过程中,经常要改动Java/JSP 文件,但是又不想从新启动服务器(服务器从新启动花时间),想直接获得(debug)结果.有两种方式热部署 和热加载: 1.热加载:在server.xml -> context 属性中 设置 reloadable="true" <Context docBase="xxx" path="/xxx" reloadable="true"/&

  • 详解react组件通讯方式(多种)

    1.父组件向子组件传值 父组件向子组件传值一般采用props属性传递 父组件: import React from 'react' import Child from './Child' const dataList = [ { id: '001', value: '张三' }, { id: '002', value: '李四' } ] const Parent = props => { return ( <ul> <Child dataList={dataList}><

  • 详解vue 组件

    Vue的两大核心 1. 数据驱动 - 数据驱动界面显示 2. 模块化 - 复用公共模块,组件实现模块化提供基础 组件基础 组件渲染过程 template ---> ast(抽象语法树) ---> render ---> VDom(虚拟DOM) ---> 真实的Dom ---> 页面 Vue组件需要编译,编译过程可能发生在 打包过程 (使用vue文件编写) 运行时(将字符串赋值template字段,挂载到一个元素上并以其 DOM 内部的 HTML 作为模板) 对应的两种方式 r

  • vue中组件通信详解(父子组件, 爷孙组件, 兄弟组件)

    vue中我们常常用到组件. 那么组件总体可以分为如下的几种关系. 父子组件, 爷孙组件, 兄弟组件. 这几种组件之间是如何通信的呢? 父子组件通信 根据vue中的文档可知, 组件的props属性用于接收父组件传递的信息. 而子组件想要向父组件传递信息, 可以使用$emit事件. 我们定义两个组件, 一个为父组件名为father, 另外一个为子组件child. 子组件通过props属性接收父组件传递的值, 这个值为fname, 是父组件的名字. 点击子组件的按钮, 触发toFather事件, 向父

  • 详解vue 组件的实现原理

    组件机制的设计,可以让开发者把一个复杂的应用分割成一个个功能独立组件,降低开发的难度的同时,也提供了极好的复用性和可维护性.本文我们一起从源码的角度,了解一下组件的底层实现原理. 组件注册时做了什么? 在Vue中使用组件,要做的第一步就是注册.Vue提供了全局注册和局部注册两种方式. 全局注册方式如下: Vue.component('my-component-name', { /* ... */ }) 局部注册方式如下: var ComponentA = { /* ... */ } new Vu

  • 详解vue 组件注册

    一.了解组件注册的两种方式 1.1 全局组件的注册方法 //main.js import Vue from 'vue' import App from './App' import router from './router' Vue.config.productionTip = false let Hello = { name: 'hello', template: '这是全局组件hello' } Vue.component('hello', Hello) new Vue({ el: '#ap

  • 详解vue组件之间相互传值的方式

    概述 我们都知道 Vue 作为一个轻量级的前端框架,其核心就是组件化开发.Vue 就是由一个一个的组件构成的,组件化是它的精髓,也是最强大的功能之一.而组件实例的作用域是相互独立的,这就意味着不同组件之间的数据无法相互引用. 但在实际项目开发过程中,我们需要访问其他组件的数据,这样就就有了组件通信的问题.在 vue 中组件之间的关系有:父子,兄弟,隔代.针对不同的关系,怎么实现数据传递,就是接下来要讲的. 一.父组件向子组件传值 即父组件通过属性的方式向子组件传值,子组件通过 props 来接收

  • 详解Vue组件复用和扩展之道

    概述 软件编程有一个重要的原则是 D.R.Y(Don't Repeat Yourself),讲的是尽量复用代码和逻辑,减少重复.组件扩展可以避免重复代码,更易于快速开发和维护.那么,扩展 Vue 组件的最佳方法是什么? Vue 提供了不少 API 和模式来支持组件复用和扩展,你可以根据自己的目的和偏好来选择. 本文介绍几种比较常见的方法和模式,希望对你有所帮助. 扩展组件是否必要 要知道,所有的组件扩展方法都会增加复杂性和额外代码,有时候还会增加性能消耗. 因此,在决定扩展组件之前,最好先看看有

  • 详解Angular组件之投影

    概述 运行时动态改变组件模版的内容.没路由那么复杂,只是一段html,没有业务逻辑. ngContent指令将父组件模版上的任意片段投影到子组件上. 一.简单例子 1.子组件中使用<ng-content>指令来标记投影点 <div class="wrapper"> <h2>我是子组件</h2> <div>这个div定义在子组件中</div> <ng-content></ng-content>

随机推荐