Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 30 Next »

General outline

  1. Deploy Sufia
  2. Ensure apache is off
  3. Activate maintenance mode on old server
  4. Move over minter
  5. Fedora Export - see below
  6. migrate postgres
  7. Fedora Import - see below
  8. run (currently nonexistent) verification job
  9. migrate dump.rdb
  10. Reindex solr

Spin up machine

Run ansible scripts

Box Build changes

The current build scripts in Ansible have problems with a few changes we need.

  1. Creating drives
  2. Restart Solr

Creating Drives

  1. In the AWS visual interface, go to EC2
  2. Go to Volumes
  3. Select Create Volumes
  4. Make sure the volume is
    1. General Purpose SSD
    2. 150 GB
    3. Availability Zone b
  5. Create 2 of these
  6. Once each one is made, select it and under Actions choose Attach Volume. Type the name or id of the machine and attach the volume.
  7. ssh into the box
  8. Run sudo fdisk -l
    1. You should see /dev/vxdg and /dev/xvdh
    2. If not, check if the volumes are attached
  9. Create the filesystem for each disk
    1. sudo mkfs.xfs /dev/xvdg
    2. sudo mkfs.xfs /dev/xvdh
  10. Mount each disk
    1. sudo mount /dev/xvdg /opt/fedora-data
    2. sudo mount /dev/xvdh /opt/sufia-project/releases/XXXX/tmp
  11. Edit the fstab file to retain these mounts
    1. sudo vi /etc/fstab
      1. /dev/xvdg /opt/fedora-data xfs defaults 0 0

      2. /dev/xvdh /opt/sufia-project/releases/XXXX/tmp xfs defaults 0 0
  12. Change the owner of the two mount locations
    1.  sudo chown -R tomcat7:tomcat7 /opt/fedora-data
    2. sudo chown -R hydep:deploy /opt/sufia-project/releases/XXXX/tmp

Solr

  1. If this is the first time sufia has been deployed, Solr now runs outside of tomcat and needs to be restarted after deployment.
  2. sudo service solr restart


Fedora export

In sufia 6 instance:

  • Run audit script
RAILS_ENV=production bundle exec sufia_survey -v
  • Run json export
$ RAILS_ENV=production bundle exec sufia_export --models GenericFile=Chf::Export::GenericFileConverter,Collection=Chf::Export::CollectionConverter
  • Open up fedora port to the other server so it can grab the binaries
  • Change all the 127.0.0.1 URIs to reflect actual host, e.g.
$ find tmp/export -type f -name "*.json" -print0 | xargs -0 sed -i "s/127\.0\.0\.1/staging.hydra.chemheritage.org/g"
  • Move the resulting directory full of exported data from tmp/export to the new server's tmp/import (or wherever desired; this can be provided to the import script)
$ cd tmp; tar -czf json_export_201611141510.tgz export
  • Then from your own machine:
$ scp staging:/opt/sufia-project/current/tmp/json_export_201611141510.tgz new_box_ip:/opt/sufia-project/current/tmp/.

Fedora import

On sufia 7 instance:

  • Mount the /dev/xvdh drive on the tmp directory in sufia (/opt/sufia-project/releases/XXXXX/tmp)
  • Change the owner of the tmp directory
    • sudo chown hydep:deploy /opt/sufia-project/releases/XXXXX/tmp
  • unpack the exported json files
cd opt/sufia-project/current/tmp/
tar -xzf json_export_201611141510.tgz
mv export import
  • configure sufia6_user and sufia6_password in config/application
  • run the import
$ RAILS_ENV=production bundle exec sufia_import -d tmp/import --json_mapping Chf::Import::GenericFileTranslator=generic_file_,Sufia::Import::CollectionTranslator=collection_
  • You can use the little bash script I wrote to create batches of files if you want. It's at /opt/sufia-project/batch_imports.sh
$ RAILS_ENV=production bundle exec sufia_import -d /opt/sufia-project/import/gf_batch_0 --json_mapping Chf::Import::GenericFileTranslator=generic_file_

Postgres export/Import

On Staging

  • Run the following to generate the export.
    pg_dump -U postgres chf_hydra -Fp > chf_hydra_dump.sql

On Migration

  • From your machine run 
    scp -3 -i /path/to/test.pem ubuntu@staging:~/chf_hydra_dump.sql ubuntu@new_box_ip:~


  • Run this command to get into postgres (password for user is stored elsewhere)
    psql -U postgres
  • Inside Postgres generate the database and required permissions
    CREATE DATABASE chf_hydra;
    GRANT Create,Connect,Temporary ON DATABASE chf_hydra TO chf_pg_hydra
  • Then enter \q to quit
  • Finally import the data you copied over with scp
    psql _U postgres chf_hydra < chf_hydra_dump.sql

How to check the statefile

There are 3 parts to the state: sequence, counters, and seed. You need the correct combination of all three in order to have the right state. However, if you know you have two valid state files with the same origin you can do a rough comparison of their equivalence just by checking the sequence. To check sequence in our 7.2-based application:

$ cd /opt/sufia-project/current
$ bin/rails c production
> sf = ActiveFedora::Noid::Minter::File.new
> state = sf.read
> state[:seq]


To check in our 6.7-based application:

$ cd /opt/sufia-project/current
$ bin/rails c production
> sm = ActiveFedora::Noid::SynchronizedMinter.new
> state = {}
> ::File.open(sm.statefile, ::File::RDWR|::File::CREAT, 0644) do |f|
>   f.flock(::File::LOCK_EX)
>   state = sm.send(:state_for, f)
> end
> state[:seq]


To check sequence on a file that's not in the default location, pass the template and the filename when you create the object with 'new', e.g:

> sm = ActiveFedora::Noid::SynchronizedMinter.new(".reeddeeddk", "/var/sufia/minter-state")


Misc.

Postgres

You can get a list of all tables and fields with the command:

SELECT * FROM information_schema.columns WHERE table_schema = 'public'


Cleanup

To clean up a server for a new migration test, take the following steps.

  1. Stop Tomcat and Solr
  2. Remove all the folders in /opt/fedora-data.
  3. Remove all the files in /var/solr/data/collection1/data/index/, and /var/sufia/derivatives
  4. Remove all the upload files in the tmp directory of the version of sufia used.
  5. Enter into postgres (psql -U postgres)
  6. Drop the fcrepo database (DROP DATABASE fcrepo;)
  7. Build a new fcrepo database (CREATE DATABASE fcrepo;)
  8. Grant the fcrepo user (currently tribly until we get a better user) all privileges on fcrepo. (grant all privileges on fcrepo to tribly;)
  9. Restart tomcat and solr
  • No labels