-
加速 SSH 连接的 tips
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgSSH 登陆服务器的时候有很多流程,例如: 不必要的将所有支持的登陆方式都尝试一遍知道某一种登陆成功. 某些场景下不必要的 DNS 反向解析验证.客户端指定验证方式加速连接openssh 有基于 GSSAPI, host, 公钥/私钥, challenge-response,密码等认证方式. 默认情况下,客户端会使用一定的顺序尝试认证,直到某一种认证通过. 实际上,在实际使用中,我们...…
-
使用 s3fs 挂载对象存储到本地磁盘
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org虽然对象存储的协议和使用场景与传统的文件系统存储(传统的 NAS等)存在较大的差异, 但是 某些场景下,将对象存储当作普通的文件系统更为方便, 比如不用再为了一些基本的文件操作而专门使用第三方客户端等.以下介绍通过 s3fs 来将 S3 兼容对象存储作为文件系统使用的方法.PS1: 对于 windows 用户来讲, 类似的工具很多, 比如使用CloudBerry 提供的 CloudBer...…
-
Ceph 深入解析(2) – Ceph Admin Socket
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org介绍在 Ceph 每个组件(e.g. Monitor, OSD, CephFS) 运行的时候,会创建一个基于UNIX socket 的服务,该服务通过这个 socket 提供一个和该组件交互的接口.用户可以 通过 ceph daemon {socket-file} command查询/配置一些常用的参数.使用使用下列格式访问 admin socket:$ ceph daemon [soc...…
-
Ceph 深入解析(1) – Ceph 的消息处理架构
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgCeph 的消息处理主要关联到以下几个类:架构上采用Publish/subscribe(发布/订阅)的设计模式.模块说明class Messenger该类作为消息的发布者, 各个 Dispatcher 子类作为消息的订阅者, Messenger收到消息之后,通过 Pipe 读取消息,然后转给 Dispatcher 处理class SimpleMessengerMessenger 接口的实...…
-
RadosGW 初体验
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org介绍Ceph 的最底层模块是对象存储,本质上就是一个 Rados,如果不考虑用户体验,利用 rados 就可以使用 Ceph 对象存储. 例如:$ rados -p test_pool get SI7W1FUI43H3I3ED9CWX test.data test_pool: pool 名 SI7W1FUI43H3I3ED9CWX: object 名 test.data 保存到这里...…
-
Cinder 的私有卷类型功能的使用
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org数据库升级如果是在之前部署的 Juno 上升级的,通过 backport改功能来实现的,就使用下列指令 升级一下数据库。[root@localhost ~]# cinder-manage db sync使用下面以一个例子来说明一下怎么使用该功能. 使用的后端存储是 lvm 和 ceph集群里面的 pool。基本配置| 用户 | 租户 | 卷类型 | 后端卷类型 | ...…
-
Cinder Private Volume Type(租户卷类型) 在大规模部署中带来的好处
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org问题的提出在 OpenStack部署中,一般将不同存储类型,不同性能规格的存储资源形成一个大的集群,对外提供云硬盘的服务,这个大的集群统一由cinder 来管理。但是在实践中,往往会遇到一些问题。我们知道所有的计算节点可以按照 Zone来划分,把计算机点按机房(机柜)的位置纳入到一个 Zone中,如果其中一个机房(机柜)因为某种原因出问题了,不会影响其它机房/柜的虚拟机和网络。而且, 同...…
-
QT 中控件关闭的几个 issue
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org最近在写一个小应用,需要一个持久化的窗口,即用户在关闭窗口的时候需要捕获这个事件,让窗口暂时隐藏.总结了 QT 中的控件关闭时的一些小 issue:lastWindowClosed() and setQuitOnLastWindowClosed()如果一个控件是一个可见的窗口类型,并且没有父容器,那么关闭该窗口导致的结果是整个应用程序会退出. 连控件的析构函数都来不及调用。不过,QT 会...…
-
比 grep 强悍太多的文本检索工具 ACK
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org对程序员来说, grep,cat,真心是伟大的前辈们赐予我们这些晚辈最好的礼物, 不会用 grep, cat之类程序员真心没有出息.但是不知是否有人经常使用以下的语法, 而且感到要是 grep要是在智能一点就好了$ grep terminate_instance $(find . -name '*.py' | grep -v tests)不错, ack 就是为了满足我们希望 grep更好...…
-
Build Emacs As A Python IDE
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org众所周知在很久很久以前, 初学者要把 Emacs 搭建成比较容易上手的环境, 需要一点精力和耐心, 但这恰恰是 Emacs 的魅力所在(超高度的可定制化),但对初学者来说, 由于 el-get 等包管理器 的出现, 情况变得越来越好了. 比如要马上开始用 Emacs来作为开发 Python 的工具, 现在已经很简单了.安装 el-get将下列配置写入到 .emacs 中(add-to-l...…
-
给 Mac 一个 ssh-copy-id
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgMac 下默认是没有这个非常好用的工具的, 最开始我每次手动把~/.ssh/id_rsa.pub 的 内容追加到服务器的 ~/.ssh/authorized_keys文件中.后来我自己写了一个脚本, 放到可执行目录中, 爽了很多:#!/bin/bash# file: ssh-copy-idif [ $# -lt 1 ]; then echo 'Usage: ssh-copy-id ...…
-
CentOS 7 修改时区
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgLinux 系统(我特指发行版, 没说内核)下大部分软件的风格就是不会仔细去考虑向后 的兼容性,比如你上个版本能用这种程序配置, 没准到了下一个版本, 该程序已经不见了.比如 sysvinit 这种东西.设置时区同样, 在 CentOS 7 中, 引入了一个叫 timedatectl的设置设置程序.用法很简单:# timedatectl # 查看系统时间方面的各种状态 Loca...…
-
Glance 源码分析(3) – WSGI 框架
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgServerOpenStack 大多数模块封装了 eventlet 以及 eventlet.wsgi.server 组成一个class Server 来作为一个 HTTP RestFul API Server.咋一看他的封装好像很复杂, 但是如果了解 eventlet 的基本概念,这部分代码其实非常简单.eventlet 在它内部定义的 greenthread(绿色线程) 里,它利用协程...…
-
Glance 源码分析(2) – 配置文件
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org这里我们会分析 glance-api 读取以下两个配置文件 glance-api.conf: glance-api 的用户配置文件 glance-api-paste.ini: glance-api 的 WSGI 配置文件glance-api.conf该配置文件的读取是利用 oslo 模块来实现的, oslo 提供了 .ini格式的配置 文件的解析, 被所有 OpenStack 模块用...…
-
Glance 源码分析(1) – 框架
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org以下主要分析 V2 版本的代码, V1 和 V2的最大区别就是: V1: 包含两个服务 glance-api 和 glance-registry. glance-api接受客户端的 所有命令, 分发并响应, 涉及到数据库的操作由内部转发到glance-registry 完成 V2 简化了流程, 所有的处理都在内部实现, 不需要额外的服务. 因此只需要glance-api 一个服务启动...…
-
Glance 源码分析(0) – 介绍
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org这周我把 glance 的源代码通读了一遍(业务流程主要是 V2 版本),感觉这个模块虽然是 OpenStack 里面相对较小的模块(vs Nova),但是他的设计模式, 架构一点都不含糊, 我看完 glance 之后再去看其它项目,发现 API 的等框架大部分地方都是一模一样. 也就是 说看完这个模块,再去分析其它模块就省事很多了, 以下将我的分析拆分做一个记录: 框架 配置文件 ...…
-
搭建一个最简单的 glance 服务
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgOpenStack 的各个模块是高度独立的, glance, neutron,并且可以给其他的程序使用, e.g. ovirt,下面的文档描述使用最简单的方式搭建一个 glance 服务.(以 ubuntu 为例)安装 glance# apt-get install glanceThat’s all!上面搭建的 glance 是使用 sqlite 作为后端数据库, 没有使用认证的服务.i...…
-
cloud-init 探索
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org背景Amazon 的 EC2 有一个叫CloudFormation的服务, 用来定制基于同一个模板的不 同实例. 通过一个本地能访问到的 API,实例可以获取由 EC2 提供的 实例独有 的 数据和信息(比如 IP地址,主机名, MAC 地址等等)在启动的时候初始化自己, 这个服务在自动部署成千上万的实例的时候给用户提供了极大地方便.cloud-init就是一个运行在实例里面并用来初始化...…
-
在 RDO 中部署 Openstack Icehouse(2) – 使用前的一些基本的设置
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.org…
-
在 RDO 中部署 Openstack Icehouse(1) – 使用 packstack 部署 openstack
#+SETUPFILE: ~/Dropbox/Doc/Org_Templates/level-1.orgpackstack 是利用 puppet来简化安装部署 openstack 各个组件的工具, 利用它, 安装部署 OpenStack非常方便.首先安装该软件包# yum install -y http://rdo.fedorapeople.org/openstack-icehouse/rdo-release-icehouse.rpm# yum install -y openstack-p...…