作者: 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