作者: branyang
硬盘有价,数据无价,本文将为大家分享Freezer的安装方法。Freezer主要用于数据的备份容灾,是OpenStack整个设计中一个必不可少的一环。
Freezer说明
Freezer 作为一个OpenStack offical项目,主要致力于OpenStack的数据备份/恢复相关的工作,从OpenStack-Kilo版本开始支持。它不仅是分布式的备份工具,而且还支持多个平台的使用 windows linux osx 等等,对数据的一致性校验,加密,上传限速等都做了处理。

▲Freezer 架构图
Freezer组件说明
▷Freezer-api
主要提供服务的Restful Api服务,监听端口默认为9090。主要用于通过该API与数据库进行交互并维护Freezer的Job 以及备份周期时间等相关的metadata等。多用于与Freezer-shceduler进行交互,freezer-scheduler定期从freezer-api读取相应的Job信息等。
▷Freezer-Scheduler
Freezer-scheduler 主要用于与Freezer-api进行交互获取Job 进行,并将Job中的信息以及metadata数据等进行使用Apscheduler进行不同方式的scheduler,并调用Freezer-agent 进行具体相应的任务的执行。Freezer-scheduler与Freezer-agent的强关联性,一般Freezer-scheduler与Freezer-agent安装在同一台节点上。目前支持的定期执行任务的方式一般为,interval,cron-like, date三个。
▷Freezer-agent
Freezer-agent 作为Freezer的主要动作的执行者,主要直接与相应的OpenStack的数据服务相直接接触,使用Cinderclient,Novaclient, Osbrick等直接与OpenStack需要备份的数据进行交互。目前支持的备份包括,nova-instance,cinder-volume,mysql,sqlserver等。
▷Freezer-web-ui
主要集成与OpenStack Horizon,提高UI服务,实现调用Freezerclient与Freezer-api进行串联实现数据备份动作等。
▷Freezer-DR
主要提供虚拟机的VMHA服务,利用Freezer-DR创建监听器,通过监听nova-compute节点的是否正常,并实现触发在共享存储下的虚拟机HA,保障了业务的高可用。
安装
▷使用Devstack 开发环境安装
▷准备DevStack开发环境
这里不再过多说明如何准备DevStack环境,可以参考devstack.org进行查看。
▷准备Freezer localrc文件
代码语言:txt复制local|localrc代码语言:txt复制ADMIN_PASSWORD=password代码语言:txt复制DATABASE_PASSWORD=stackdb代码语言:txt复制RABBIT_PASSWORD=stackqueue代码语言:txt复制SERVICE_PASSWORD=$ADMIN_PASSWORD代码语言:txt复制MULTI_HOST=1代码语言:txt复制RECLONE=no代码语言:txt复制HOST_IP=192.168.9.129代码语言:txt复制SERVICE_TIMEOUT=180代码语言:txt复制USE_SCREEN=True代码语言:txt复制LOGFILE=$DEST/logs/stack.sh.log代码语言:txt复制LOGDAYS=2代码语言:txt复制LOG_COLOR=True代码语言:txt复制LIBVIRT_TYPE=qemu代码语言:txt复制ENABLED_SERVICES=key,mysql,rabbit代码语言:txt复制ENABLED_SERVICES=g-api,g-reg,key,n-api,n-crt,n-obj,n-cpu,n-cond,n-sch,n-cauth,mysql,rabbit代码语言:txt复制ENABLED_SERVICES =,c-sch,c-api,c-vol,c-bak代码语言:txt复制ENABLED_SERVICES =,horizon,n-novnc代码语言:txt复制ENABLED_SERVICES =,s-proxy,s-object,s-container,s-account代码语言:txt复制enable_service n-cell代码语言:txt复制enable_service freezer代码语言:txt复制export FREEZER_API_SERVER_TYPE=apache2代码语言:txt复制disable_service n-net代码语言:txt复制enable_service q-svc代码语言:txt复制enable_service q-agt代码语言:txt复制enable_service q-dhcp代码语言:txt复制enable_service q-l3代码语言:txt复制enable_service q-meta代码语言:txt复制enable_service q-metering代码语言:txt复制enable_service neutron代码语言:txt复制enable_service placement-api代码语言:txt复制IMAGE_URLS="代码语言:txt复制Q_PLUGIN=ml2代码语言:txt复制Q_ML2_TENANT_NETWORK_TYPE=vxlan代码语言:txt复制PUBLIC_INTERFACE=ens33代码语言:txt复制FLOATING_RANGE=192.168.9.0/24代码语言:txt复制PUBLIC_NETWORK_GATEWAY=192.168.9.2代码语言:txt复制Q_FLOATING_ALLOCATION_POOL=start=192.168.9.200,end=192.168.9.220代码语言:txt复制enable_plugin freezer代码语言:txt复制enable_plugin freezer-api代码语言:txt复制enable_plugin freezer-web-ui代码语言:txt复制SWIFT_HASH=66a3d6b56c1f479c8b4e70ab5c2000f5代码语言:txt复制SWIFT_REPLICAS=1代码语言:txt复制SWIFT_DATA_DIR=$DEST/data代码语言:txt复制SWIFT_ENABLE_TEMPURLS=True代码语言:txt复制SWIFT_HASH=password代码语言:txt复制SWIFT_TEMPURL_KEY=password代码语言:txt复制enable_plugin devstack-plugin-cephgit://git.openstack.org/openstack/devstack-plugin-ceph验证
▷启动freezer-scheduler
freezer-scheduler start
▷使用Freezer
freezer client-list

freezer job-list

这里Freezer 已经简单的安装完成,后续我们继续进行使用介绍。
如果想要对社区有更多的了解,可以查看Freezer的代码仓库地址。
Freezer: https://github.com/openstack/freezer
Freezer-api: https://github.com/openstack/freezer-api
Freezer-web-ui: https://github.com/openstack/freezer-web-ui
Freezer-dr: https://github.com/openstack/freezer-dr


