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