freezer可以算是OpenStack大帐篷下为数不多的备份项目,能备mysql、mongodb、cinder、nova等,看起来好像很吊,其实社区不怎么活跃。


Freezer安装

跟其它项目一样最先提供的安装方式是devstack我这里有个devstack freezer的local.conf配置文件

[root@freezer-devstack ~]# egrep -v "^#|^$" /opt/devstack/local.conf
[[local|localrc]]
GIT_BASE=http://git.trystack.cn
NOVNC_REPO=http://git.trystack.cn/kanaka/noVNC.git
SPICE_REPO=http://git.trystack.cn/git/spice/spice-html5.git
DEST=/opt/yxb/code/openstack
DATA_DIR=/opt/yxb/data
SERVICE_DIR=/opt/yxb/data/service/
ADMIN_PASSWORD=99cloud
DATABASE_PASSWORD=stackdb
RABBIT_PASSWORD=stackqueue
SERVICE_PASSWORD=$ADMIN_PASSWORD
RECLONE=no
HOST_IP=192.168.141.6
LOGFILE=$DEST/logs/stack.sh.log
LOGDAYS=2
CINDER_BRANCH=master
GLANCE_BRANCH=master
HORIZON_BRANCH=master
KEYSTONE_BRANCH=master
KEYSTONECLIENT_BRANCH=master
NOVA_BRANCH=master
NOVACLIENT_BRANCH=master
NEUTRON_BRANCH=master
SWIFT_BRANCH=master
CINDER_ENABLED_BACKENDS+=,glusterfs:gluster
CINDER_DRIVER=glusterfs
CINDER_GLUSTERFS_SHARES=172.16.40.240:/cinder
LIBVIRT_TYPE=qemu
ENABLED_SERVICES=key,mysql,rabbit
ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-novnc,n-cauth,mysql,rabbit
ENABLED_SERVICES+=,c-sch,c-api,c-vol,c-bak
ENABLED_SERVICES+=,horizon
ENABLED_SERVICES+=,s-proxy,s-object,s-container,s-account
enable_service freezer
disable_service n-net
enable_service q-svc
enable_service q-agt
enable_service q-dhcp
enable_service q-l3
enable_service q-meta
enable_service q-metering
enable_service neutron
Q_PLUGIN=ml2
Q_ML2_TENANT_NETWORK_TYPE=vxlan
enable_plugin freezer https://git.openstack.org/openstack/freezer master
enable_plugin freezer-api https://git.openstack.org/openstack/freezer-api.git master
enable_plugin freezer-web-ui https://github.com/openstack/freezer-web-ui.git master
SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5
SWIFT_REPLICAS=1
SWIFT_DATA_DIR=$DEST/data
#OFFLINE=True  # 这个配置项是针对机器重启后快速执行stack.sh多次


Freezer现状

Freezer现在实现到什么程度可以看Freezer的READMEhttps://github.com/openstack/freezer


Freezer代码结构

[root@node-248 freezer]# tree  freezer -d
freezer              # freezer-scheduler、freezer-agent部分
|-- apiclient        # 组合url请求跟API server交互
|-- common           # 配置项
|-- engine           # 备份的引擎目前只支持tar
|   `-- tar
|-- lib
|   `-- pep3143daemon
|-- mode             # 备份方式,实际上就是要备份的东西
|-- openstack        # 跟OpenStack其它组件交互实质就是获取cinderclient之类的
|-- scheduler        # freezer-scheduler、APScheduler调度框架中的scheduler概念
|-- scripts
|-- snapshot         # 目前只支持lvm
|-- storage          # 备份存储的后端有fs、ssh到远程、swift
|-- tests            # 单元测试及tempest测试用例
|   |-- freezer_tempest_plugin
|   |   |-- services
|   |   `-- tests
|   |       |-- api
|   |       `-- scenario
|   `-- integration
`-- utils            # 工具类如checksum之类的


freezer-api的结构

[root@node-248 freezer-api]# tree  freezer_api -d
freezer_api      # freezer api是基于falcon框架
|-- api          # api server、route部分
|   |-- common     
|   `-- v1
|-- cmd          # api启动程序
|-- common       # 配置项vim
|-- storage      # API相关任务存储后端目前只支持elasticsearch
`-- tests        # 单元测试及tempest测试用例
    |-- freezer_api_tempest_plugin
    |   |-- services
    |   `-- tests
    |       |-- api
    |       `-- scenario
    `-- unit