Trove的架构及功能分析

Openstack Trove架构

Trove做为Openstack中提供关系型数据库、非关系型数据库等Database服务的项目,目前由Trove-api、Trove-taskmanager、Trove-conductor、Trove-guestagent四个组件组成。

Trove的数据库引擎运行于云主机,与Nova、Cinder、Swift、Glance、Keystone、Nutron(Nova-network)等组件紧密相连。

Trove的架构及功能流程图

来自Mirantis的两篇blog,对Trove的架构进行了深入的分析,提出解决Trove-conductor单点故障问题的方案。
(1)the-present-and-the-future-of-openstack-trove-architecture
(2)improving-trove-architecture-design-conductor-service

HPCloud、Rackspace的公有云平台的云数据产品均采用Trove:
Trove在公有云数据库产品中的应用

Trove功能分析

Trove(2013.2.2版本)目前支持MySQL的数据库创建、备份、恢复的基本功能。

正在开发或设计功能有:
1、数据库配额管理
2、数据库安全组
3、数据库快照
4、数据库类型管理
5、数据库配置管理
6、事件通知
7、数据库性能

可能需要增加或完善的功能:
1、自动备份、自定义备份
2、数据库迁移
3、数据库扩容
4、数据库实例监控
5、预配置IOPS
6、数据库高可用
7、支持非关系型数据库
8、支持物理主机或专用存储服务器

在Nova数据库中修改虚拟机配额(flavor)

技术说明

涉及到的表有nova数据库中的instances, instance_types

操作步骤

找到对应flavor的id,如4-8192-0-150-0-5-50。当前不存在该flavor时,需在vip中创建一台对应配置的主机,即可生成该flavor。

select id, name from instance_types where name=’4-8192-0-150-0-5-50’;

找到需要更改的云主机

select display_name, uuid, instance_type_id, ephemeral_gb from instances where uuid='c77a32b3-a043-4131-b20e-b26c7da21dba';  

修改配额

#root_gb为系统盘大小,ephemeral_gb为数据盘大小
update instances set instance_type_id = 22,ephemeral_gb=250 where uuid = 'c77a32b3-a043-4131-b20e-b26c7da21dba'

刷新页面后即可查看更改后的主机配额。

qemu-img resize磁盘扩容

技术说明

在OpenStack中可以使用nova resize [--poll] <server> <flavor>命令升级虚拟机实例的配置,如将flavor从4-8192-0-150-0-5-50升级为8-8192-0-250-0-5-50,详见“OpenStack Essex中Nova Resize功能更改”
当只需要升级虚拟机Root Disk或Ephemeral Disk,可以使用qemu-img resize命令改变Disk的大小。

操作步骤

Continue reading

使用MongoDB Capped Collections记录日志

NoSQL简介

NoSQL,全称是 Not Only Sql,指的是非关系型的数据库。下一代数据库主要解决几个要点:非关系型的、分布式的、开源的、水平可扩展的。原始的目的是为了大规模web应用,这场运动开始于2009年初,通常特性应用如:模式自由、支持简易复制、简单的API、最终的一致性(非ACID)、大容量数据等。NoSQL被我们用得最多的当数key-value存储,当然还有其他的文档型的、列存储、图型数据库、xml数据库等。

MongoDB简介

MongoDB是一个高性能,开源,无模式的文档型数据库,是当前NoSql数据库中比较热门的一种。它在许多场景下可用于替代传统的关系型数据库或键/值存储方式。Mongo使用C++开发。Mongo的官方网站地址是:http://www.mongodb.org/,读者可以在此获得更详细的信息。

参考链接:http://www.cnblogs.com/lipan/archive/2011/03/08/1966463.html

Continue reading

使用Inno Setup制作安装程序

Inno Setup 介绍

官方网站
帮助文档

引自维基百科
Inno Setup是一个免费的安装程序制作软件,可以方便而有效率地制作出安装程序。Inno Setup设计了一套脚本语言,用户利用该脚本语言设计安装流程,然后经过Inno Setup的编译,即可产生安装程序。由于Inno Setup免费、简单易学且功能强大,自1997年问世后便迅速成为广受欢迎的安装程序制作软件,与性质相似的NSIS共同占据了高比例的用户市场。

Inno Setup目录常量

参考连接1
参考连接2

Continue reading

Redis Server配置文件详解

Redis版本 2.6.13

Redis配置文件 redis.conf

参考链接1
参考链接2

//后台服务
daemonize yes
//进程ID文件
pidfile /var/run/redis.pid
//端口
port 6379
//绑定IP地址
# bind 127.0.0.1
//Unix Socket路径
# unixsocket /tmp/redis.sock
# unixsocketperm 755
//超时时间
timeout 300
//保持Tcp连接
tcp-keepalive 60
//日志级别
loglevel notice
//日志文件
logfile /var/log/redis/redis.log
//使用系统日志记录器
# syslog-enabled no
//指明syslog身份
# syslog-ident redis
//指明syslog的设备(必须是用户或LOCAL0 ~ LOCAL7)
# syslog-facility local0
//数据库数量
databases 16
################################ SNAPSHOTTING  #################################
//数据快照频率
save 900 1
save 300 10
save 60 10000
//后台持久化操作出错时停止写入
stop-writes-on-bgsave-error yes
//dump数据时,使用LZF压缩字符对象
rdbcompression yes
//数据文件校验和
rdbchecksum yes
//数据文件名称
dbfilename dump.rdb
//数据文件目录
dir /var/lib/redis
################################# REPLICATION #################################
//主从复制,主机ip、端口
# slaveof <masterip> <masterport>
//主机登录密码
# masterauth <master-password>
//主从复制中断时,slave是否提供过时数据
slave-serve-stale-data yes
//slave是否只读
slave-read-only yes
//slave向服务器发送ping请求的时间间隔
# repl-ping-slave-period 10
//大块数据I/O、向master请求数据和ping响应的过期时间
# repl-timeout 60
//向slave发送数据的TCP延迟
repl-disable-tcp-nodelay no
//slave优先级别
slave-priority 100
################################## SECURITY ###################################
//登录密码
requirepass redis
//命令重命名
# rename-command CONFIG ""
################################### LIMITS ####################################
//最大客户端数
# maxclients 10000
//最大内存数(以字节为单位)
# maxmemory <bytes>
//最大内存策略(默认为LRU算法)
# volatile-lru -> remove the key with an expire set using an LRU algorithm
# allkeys-lru -> remove any key accordingly to the LRU algorithm
# volatile-random -> remove a random key with an expire set
# allkeys-random -> remove a random key, any key
# volatile-ttl -> remove the key with the nearest expire time (minor TTL)
# noeviction -> don't expire at all, just return an error on write operations
# maxmemory-policy volatile-lru
//最大内存策略样本数
# maxmemory-samples 3
############################## APPEND ONLY MODE ###############################
//启用Append Only File模式
appendonly no
//文件同步时间级别
# appendfsync always
appendfsync everysec
# appendfsync no
//AOF重写时不同步文件
no-appendfsync-on-rewrite no
//AOF自动重写的百分比
auto-aof-rewrite-percentage 100
//AOF自动重写的最小数据量
auto-aof-rewrite-min-size 64mb
################################ LUA SCRIPTING  ###############################
//lua脚本最大执行时间(以毫秒为单位)
lua-time-limit 5000
################################## SLOW LOG ###################################
//慢日志时间(以微秒为单位)
slowlog-log-slower-than 10000
//慢日志最大长度
slowlog-max-len 128
############################### ADVANCED CONFIG ###############################
//哈希结构,元素数量及长度限制
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
//列表结构,元素数量及长度限制
list-max-ziplist-entries 512
list-max-ziplist-value 64
//集合结构(数据全是64位无符号整型数字构成的字符串),元素数量限制
set-max-intset-entries 512
//有序集合结构,元素数量及长度限制
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
//哈希表实时刷新
activerehashing yes
//客户端输出缓存限制
#三个参数:hard 、 limit、normal client
#对于normal client不限制
#对于slave client和MONITER client,client-output-buffer超过256mb,或超过64mb持续60秒,服务器将立即断开客户端连接。
#对于pubsub client,client-output-buffer超过32mb,或超过8mb持续60秒,服务器将立即断开客户端连接。
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit slave 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
//redis任务处理频率单位
hz 10
//AOF重写时,采用增量“文件同步”策略
aof-rewrite-incremental-fsync yes
################################## INCLUDES ###################################
//引用其他配置文件
# include /path/to/local.conf
# include /path/to/other.conf