OpenStack Swift:n käyttö varmuuskopioinnissa

Tämä artikkeli keskittyy helppoon tiedostopohjaiseen varmuuskopiointiin eSalin ja Koneiston IaaS-palvelussa hyödyntäen saatavilla olevaa OpenStack Swift Object Storagea.

Perinteiesti IaaS-palveluissa on tarjolla virtuaalikoneiden snapshot-toimintoon perustuvia varmuuskopiontiratkaisuja. Snapshot-varmuuskopio on erittäin käyttökelpoinen ratkaisu tilanteissa, joissa halutaan helppokäyttöisyyttä kuten virtuaalikoneisiin ei tarvitse asentaa erikseen varmuuskopiointiohjelmia ja varmuuskopioiden ajastus sekä palautus onnistuu IaaS-palvelun hallintapaneelin kautta. IaaS-ympäristössä voidaan luonnollisesti käyttää myös perinteisiä tiedostopohjaisia varmistusjärjestelmiä, joissa virtuaalikoneisiiin asennetaan varmistusagentit ja varmuuskopiot tallentuvat joko omille tai palveluntarjoajan hallussa olevalle varmuuskopiopalvelimille.

Pilviympäristöön erottamattomasti kuuluvan automaation ja juostavan kapasiteetin myötä myös uusia vaihtoehtoja on ilmestynyt. Object Storagen helppo saatavuus ja käyttöpohjainen hinnoittelu lisäävät sen houkuttavuutta tiedostopohjaiseen varmuuskopiontiin, koska se tarjoaa edullisen ja luotettavan tallennustilan lisäksi vapauden valita käytettävät työkalut ja siirtää varmistettavat tiedot tarvittaessa useampaan fyysiseen sijaintiin.

Varsinkin kevyemmissä varmuuskopiointiohjelmistoissa on viime vuosina siirrytty tiedostopohjaisiin tallennusjärjestelmiin perinteisten nauhureiden sijasta. Yksi siirtymää vauhdittava tekijä on Object Storage-tyyppisten tallennusjärjestelmien yleistyminen ja niiden myötä tallennustilan halpeneminen verrattuna perinteisiin levyjärjestelmiin. Myös isoimpiin kaupallisiin varmuuskopiointijärjestelmiin on tullut viime vuosina tuki eri Object Storage-taustajärjestelmille (mm. Amazon S3 ja OpenStack Swift).

Elisa eSalista ja Elisa Appelsiini Koneistosta on saatavissa OpenStack Swift Object storagea, joka sopii muiden isojen datamäärien tallentamisen ohella erinomaisesti myös varmuuskopiointiin.

Seuraavassa esimerkissä on käytetty Fabric-orkestrointityökalua asennuksen suorittamiseen, koska varmuuskopiointi haluttiin ottaa käyttöön useissa palvelimissa. Asennuksen voi luonnollisesti tehdä manuaalisesti irrottamalla esimerkkikoodeista tarvittavat komennot. Esimerkissä on käytetty Swiftin omaa API:a, edellisen lisäksi Amazon S3-rajapinta on tuettuna eSalin ja Koneiston Swift toteutuksessa.

Tässä lyhyt kuvaus miten varmistetaan tiedostoja Duply/Duplicity-ilmaisohjelmilla Linux-palvelimista.

Fabric:n funktio tarvittavien pakettien asentamiseen CentOS/RHEL:n


@task
def install_duplicity_software():
env.always_use_pty = False
run('sudo yum -y install duplicity duply python-boto')
put('python-keystoneclient-0.1.3.27-1.el6.noarch.rpm', '/home/fabricrobot/')
put('python-swiftclient-1.2.0-2.el6.noarch.rpm', '/home/fabricrobot/')
run('sudo yum -y localinstall python-swiftclient-1.2.0-2.el6.noarch.rpm python-keystoneclient-0.1.3.27-1.el6.noarch.rpm')
run('rm python-keystoneclient-0.1.3.27-1.el6.noarch.rpm')
run('rm python-swiftclient-1.2.0-2.el6.noarch.rpm')

 

Fabric:n funktio Duplicityn peruskonfiguraation asentamiseen. Asentaa toimivan toimivan varmuuskopiokonfiguraation ja cron-ajastuksen.


@task
def config_duplicity():
env.always_use_pty = False
put('create_duplicati_config.sh', '/home/fabricrobot/')
run('sudo bash create_duplicati_config.sh')
run('rm create_duplicati_config.sh')
if not exists('/root/bin', use_sudo=True):
run('sudo mkdir /root/bin')
put('duply_wrapper.sh', '/home/fabricrobot/')
run('sudo mv /home/fabricrobot/duply_wrapper.sh /root/bin/duply_wrapper.sh')
run('sudo chmod 750 /root/bin/duply_wrapper.sh')
put('duplicatibackup.cron', '/home/fabricrobot/')
run('sudo mv /home/fabricrobot/duplicatibackup.cron /etc/cron.weekly/')
run('sudo chmod 755 /etc/cron.weekly/duplicatibackup.cron')

 

Fabric-funktioissa mainitut skriptit. Create_duplicati_config.sh tekee Swiftiä käyttävän Duply /Duplicity konfiguraation.


#!/bin/bash
# Remove old config
rm -Rf /etc/duply/backup-${HOSTNAME}
# Create backup job
duply backup-${HOSTNAME} create
# Create config file
CONFIG_FILE="/etc/duply/backup-${HOSTNAME}/conf"
echo "GPG_PW='backupexamplegpgpassword'" > $CONFIG_FILE
echo "TARGET='swift://backup-${HOSTNAME}'" >> $CONFIG_FILE
echo "TARGET_USER='swiftuser:swiftcontainer' ">> $CONFIG_FILE
echo "TARGET_PASS='xxxxxxxxxxxxxxxxx'" >> $CONFIG_FILE
echo "SOURCE='/'" >> $CONFIG_FILE
echo "MAX_AGE=3M" >> $CONFIG_FILE
echo "MAX_FULL_BACKUPS=2" >> $CONFIG_FILE

# Create config file
ENV_FILE=”/etc/duply/backup-${HOSTNAME}/env”
echo ”export SWIFT_USERNAME=’ swiftuser:swiftcontainer ’” > $ENV_FILE
echo ”export SWIFT_PASSWORD=’ xxxxxxxxxxxxxxxxx ’” >> $ENV_FILE
echo ”export SWIFT_AUTHURL=’https://swift.ecloud.fi:5000/v2.0′” >> $ENV_FILE
echo ”export SWIFT_AUTHVERSION=’2′” >> $ENV_FILE

# Create include/exclude file
EXCLUDE_FILE=”/etc/duply/backup-${HOSTNAME}/exclude”
echo ”+ /etc*” > $EXCLUDE_FILE
echo ”- **” >> $EXCLUDE_FILE

 

duply_wrapper.sh lukee Duply/Duplicati:n tarvitsemat Swiftin ympäristömuuttujat muistiin ja suorittaa varmuuskopioinnin.


#!/bin/bash
source /etc/duply/backup-${HOSTNAME}/env
duply backup-${HOSTNAME} backup

 

duplicatibackup.cron on croniskripti jo suorittaa Cronin kautta edella luodun Duply/Duplicity konfiguraation.


MAILTO=admin@organization.local
/root/bin/duply_wrapper.sh

 

Varmuuskopioiden tilan voi tarkistaa komennolla:


[root@example ~]# duply backup-example.organization.local status
Start duply v1.6.0, time is 2014-12-11 12:59:57.
Using profile '/etc/duply/backup-example.organization.local'.
Using installed duplicity version 0.6.22, python 2.6.6, gpg 2.0.14 (Home: ~/.gnupg), awk 'GNU Awk 3.1.7', bash '4.1.2(1)-release (x86_64-redhat-linux-gnu)'.
Signing disabled. Not GPG_KEY entries in config.
Test - Encryption with passphrase (OK)
Test - Decryption with passphrase (OK)
Test - Compare (OK)
Cleanup - Delete '/tmp/duply.20544.1418295597_*'(OK)

— Start running command STATUS at 12:59:58.406 —
Import of duplicity.backends.dpbxbackend Failed: No module named dropbox
Synchronizing remote metadata to local cache…
Last full backup date: Wed Oct 15 10:53:14 2014
Collection Status
—————–
Connecting with backend: SwiftBackend

Archive dir: /root/.cache/duplicity/duply_backup- example.organization.local
Found 1 secondary backup chain.

Secondary chain 1 of 1:
————————-
Chain start time: Wed Oct 8 15:37:24 2014
Chain end time: Mon Oct 13 13:02:45 2014
Number of contained backup sets: 8
Total number of contained volumes: 10
Type of backup set: Time: Num volumes:
Full Wed Oct 8 15:37:24 2014 1
Incremental Wed Oct 8 15:53:51 2014 1
Incremental Wed Oct 8 17:02:00 2014 1
Incremental Wed Oct 8 17:12:01 2014 1
Incremental Wed Oct 8 17:16:05 2014 1
Incremental Thu Oct 9 15:40:38 2014 1
Incremental Thu Oct 9 15:41:58 2014 1
Incremental Mon Oct 13 13:02:45 2014 3
————————-

 

Palautus onnistuu Duply/Duplicityllä helposti. Tämä esimerkki palauttaa 10 päivää vanhan /etc/hosts-tiedoston hakemistoon /etc/restore


duply backup-example.organization.local fetch etc/hosts /root/restore/ 10D

 

Tarvittaessa palautuksen voi suorittaa myös toiselle palvelimeen luomalla sinne vastaavan konfiguraation ja suorittamalla palautuksen samalla komennolla.

GPG-kryptattuja varmuuskopiotiedostopaketit voi listata Swift:n vakiotyökaluilla


[user@example ~]# swift -v -V 2 -A https://swift.ecloud.fi:5000/v2.0 -U swiftuser:swiftcontainer-K xxxxxxxxxxxxxxxxx list backup-example.organization.local
duplicity-full-signatures.20141008T123724Z.sigtar.gpg
duplicity-full-signatures.20141015T075314Z.sigtar.gpg
duplicity-full.20141008T123724Z.manifest.gpg
….
duplicity-full.20141015T075314Z.vol1.difftar.gpg

duplicity-full.20141015T075314Z.vol3.difftar.gpg
duplicity-inc.20141008T123724Z.to.20141008T125351Z.manifest.gpg

duplicity-inc.20141202T013405Z.to.20141209T015005Z.vol1.difftar.gpg
duplicity-new-signatures.20141008T123724Z.to.20141008T125351Z.sigtar.gpg

duplicity-new-signatures.20141202T013405Z.to.20141209T015005Z.sigtar.gpg
...

 

Swiftin käyttö on siis vaivatonta ja Swiftiä tukevia työkaluja on paljon saatavilla. Valikoima laajenee entisestään, jos käyttää Amazon S3 rajapintaa, joka on myös saatavilla Swift-toteutuksen päälle.

Lopuksi muistutan, että varmuuskopioiminen on taidetta, jossa ei ole olemassa yhtä oikeaa ratkaisua vaan haasteena on useiden hyvin erilaisten tekijöiden huomioiminen ja kyky valita paras kompromissi. Nämäkään varmuuskopiointiohjeet eivät ole tarkoitettu käytettäväksi sellaisenaan vaan havainnollistamaan Swift Object Storagen tarjoamia mahdollisuuksia helppoon varmuuskopiointiin.

Linkkejä:

Jaa tämä artikkeli:

Jaa Facebookissa Jaa Twitterissä Jaa Google+:ssa Jaa Pintrestissä Jaa LinkedIn:issä
Julkaistu kohteessa IT-ammattilaiset, Kehittäjät, Teknologiat, Yleinen Merkitty: , , , , , , , , , ,

Kommentoi

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

*

Time limit is exhausted. Please reload CAPTCHA.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>