Install and configure for Ubuntu¶
This section describes how to install and configure the Backup service for Ubuntu 16.04 (LTS).
Prerequisites¶
Source the
admin
credentials to gain access to admin-only CLI commands:$ . admin-openrc
To create the service credentials, complete these steps:
Create the
freezer
user:$ openstack user create --domain default --password-prompt freezer
Add the
admin
role to thefreezer
user:$ openstack role add --project service --user freezer admin
Create the freezer service entities:
$ openstack service create --name freezer --description "Backup" backup
Create the Backup service API endpoints:
$ openstack endpoint create --region RegionOne \ backup public http://controller:9090/ $ openstack endpoint create --region RegionOne \ backup internal http://controller:9090/ $ openstack endpoint create --region RegionOne \ backup admin http://controller:9090/
Install and configure components¶
Install the packages:
$ sudo apt-get update $ sudo apt-get install python-dev python-pip
Note
To list all missing packages needed to install freezer in your system use provided
bindep.txt
file with bindep utility.
Copy the configuration files to
/etc/freezer/
:sudo cp etc/freezer/freezer-api.conf.sample /etc/freezer/freezer-api.conf sudo cp etc/freezer/freezer-paste.ini /etc/freezer/freezer-paste.ini
Edit the
/etc/freezer/freezer-api.conf
file and complete the following actions:There are two kinds of api interface, v1 and v2.
There are two kinds of database drivers, elasticsearch and Sqlalchemy.
There are four kinds of combinations between api interface and database drivers:
configuration
freezer api
database driver
configuration1
v1
elasticsearch
configuration2
v2
elasticsearch
configuration3
v1
sqlalchemy
configuration4
v2
sqlalchemy
notes:
Default configuration is freezer api v2 and elasticsearch.
Configuration1
: api v1 interface and elasticsearch:In the
[DEFAULT]
section, configure api interface type:[DEFAULT] ... enable_v1_api = True
In the
[storage]
section, configure database access:[storage] ... backend = elasticsearch driver = elasticsearch
In the
[elasticsearch]
section, configure elasticsearch access: You might need to create the elasticsearch section first.[elasticsearch] ... hosts=http://localhost:9200 index=freezer use_ssl=False ca_certs='' use_ssl=False timeout=60 retries=20 number_of_replicas = 1
Configuration2
: api v2 interface and elasticsearch:In the
[DEFAULT]
section, configure api interface type:[DEFAULT] ... #enable_v1_api = True
In the
[storage]
section, configure database access:[storage] ... backend = elasticsearch driver = elasticsearch
In the
[elasticsearch]
section, configure elasticsearch access: You might need to create the elasticsearch section first.[elasticsearch] ... hosts=http://localhost:9200 index=freezer use_ssl=False ca_certs='' timeout=60 retries=20 number_of_replicas = 1
Configuration3
: api v1 interface and sqlalchemy:In the
[DEFAULT]
section, configure api interface type:[DEFAULT] ... enable_v1_api = True
In the
[storage]
section, configure database access:[storage] ... backend = sqlalchemy driver = sqlalchemy
In the
[database]
section, configure sqlalchemy access:You might need to create the database section first.
[database] ... connection = mysql+pymysql://root:stack@127.0.0.1/freezer?charset=utf8
Configuration4
: api v2 interface and sqlalchemy:In the
[DEFAULT]
section, configure api interface type:[DEFAULT] ... #enable_v1_api = True
In the
[storage]
section, configure database access:[storage] ... backend = sqlalchemy driver = sqlalchemy
In the
[database]
section, configure sqlalchemy access: You might need to create the database section first.[database] ... connection = mysql+pymysql://root:stack@127.0.0.1/freezer?charset=utf8
Currently, Freezer API v2 is enabled and used by default. If you want to use Freezer API v1 instead, manually activate it in the [DEFAULT] section:
[DEFAULT] ... enable_v1_api=True
Start elasticsearch¶
The currently supported db is Elasticsearch. In case you are using a dedicated instance of the server, you’ll need to start it. Depending on the OS flavor it might be:
# service elasticsearch start
or, on systemd
# systemctl start elasticsearch
Using freezer-manage¶
Elasticsearch needs to know what type of data each document’s field contains. This information is contained in the mapping, or schema definition. Elasticsearch will use dynamic mapping to try to guess the field type from the basic datatypes available in JSON, but some field’s properties have to be explicitly declared to tune the indexing engine. To do that, use the freezer-manage command:
# freezer-manage db sync
You should have updated your configuration files before doing this step. freezer-manage has the following options:
To create the db mappings use the following command
# freezer-manage db sync
To update the db mappings using the following command. Update means that you might have some mappings and you want to update it with a more recent ones
# freezer-manage db update
To remove the db mappings using the following command
# freezer-manage db remove
To print the db mappings using the following command
# freezer-manage db show
To update your settings (number of replicas) all what you need to do is to change its value in the configuration file and then run the following command
# freezer-manage db update-settings
If you provided an invalid number of replicas that will cause problems later on, so it’s highly recommended to make sure that you are using the correct number of replicas. For more info click here Elasticsearch_Replicas_instructions
To get information about optional additional parameters
# freezer-manage -h
If you want to add any additional parameter like –yes or –erase, they should be before the db option. Check the following examples Wrong Example
# freezer-manage db sync -y -e
Correct Example:
# freezer-manage -y -e db sync
create the mappings¶
# freezer-manage -y -e db sync
run simple instance¶
$ freezer-api --config-file /etc/freezer/freezer-api.conf
examples running using uwsgi¶
$ uwsgi --http :9090 --need-app --master --module freezer_api.cmd.wsgi:application
$ uwsgi --https :9090,foobar.crt,foobar.key --need-app --master --module freezer_api.cmd.wsgi:application
example running freezer-api with apache2¶
sudo vi /etc/apache2/sites-enabled/freezer-api.conf
<VirtualHost ...>
WSGIDaemonProcess freezer-api processes=2 threads=2 user=freezer display-name=%{GROUP}
WSGIProcessGroup freezer-api
WSGIApplicationGroup freezer-api
WSGIScriptAlias / /opt/stack/freezer_api/cmd/wsgi.py
<IfVersion >= 2.4>
ErrorLogFormat "%M"
</IfVersion>
ErrorLog /var/log/%APACHE_NAME%/freezer-api.log
LogLevel warn
CustomLog /var/log/freezer-api/freezer-api_access.log combined
<Directory /opt/stack/freezer_api>
Options Indexes FollowSymLinks MultiViews
Require all granted
AllowOverride None
Order allow,deny
allow from all
LimitRequestBody 102400
</Directory>
</VirtualHost>
Install and configure freezer-scheduler/agent¶
This section describes how to install and configure freezer-scheduler and freezer-agent, on any node in the cloud or any vm inside the cloud.
This section assumes that you already have a working OpenStack environment with at least the following components installed: - Keystone - Swift
git clone https://git.openstack.org/openstack/freezer.git
cd freezer
pip install ./
Configure the scheduler¶
Copy the configuration files to
/etc/freezer/
:
$ sudo cp etc/scheduler.conf.sample /etc/freezer/scheduler.conf
Edit the
/etc/freezer/scheduler.conf
file and complete the following actions:There are two kinds of api interface, v1 and v2.
There are two kinds of configurations:
notes:
Default configuration is freezer api v2.
Configuration1
: freezer-api is started by v1 interface:In the
[DEFAULT]
section, configure database access:The
client_id
has to be set to the hostname of the machine. It will be used as an identifier for this node to fetch its scheduled backups[DEFAULT] ... client_id = hostname_of_machine jobs_dir = /etc/freezer/scheduler/conf.d enable_v1_api = True
Configuration2
: freezer-api is started by v2 interface:In the
[DEFAULT]
section, configure database access:The
client_id
has to be set to the hostname of the machine. It will be used as an identifier for this node to fetch its scheduled backups[DEFAULT] ... client_id = hostname_of_machine jobs_dir = /etc/freezer/scheduler/conf.d #enable_v1_api = False
Start
freezer-scheduler
$ . admin-openrc
$ sudo freezer-scheduler --config-file /etc/freezer/scheduler.conf start