Skip to content

Latest commit

 

History

History
169 lines (143 loc) · 4.14 KB

InstallForTest.md

File metadata and controls

169 lines (143 loc) · 4.14 KB

Deploying MogileFS manually for test

Want to play with the MogileFS API? Want to help write code, test patches, fix bugs? Follow the guide below to quickly build a test instance.

Assuming you have a Debian, Ubuntu, or Redhat-y system. OS X will be similar but has some missing steps. For a more complete guide on how to set up an install of MogileFS, refer to the InstallHowTo

No attempts to time this guide have actually been made; YMMV.

Howto

Add a new local user and log into it

adduser mogilefs
# ...etc...
su - mogilefs
$

Use App::cpanminus to quickly bootstrap locally installed perl modules. (note: you might need to add --no-certificate-check if you have a buggy version of wget)

wget -O- http://cpanmin.us | perl - local::lib
PERL5LIB="/home/`whoami`/perl5/lib/perl5" perl -Mlocal::lib >> ~/.bashrc
source ~/.bashrc

Install libdbd-mysql-perl (debian) or DBD::mysql via yum. This is needed even if you're not using MySQL.

apt-get install libdbd-mysql-perl
... or ...
yum install perl(DBD::mysql)

Gas up cpanm again to pull in all dependencies for MogileFS. Read the output carefully in case of any build failures.

cpanm IO::AIO MogileFS::Server MogileFS::Client MogileFS::Utils

Save this script as mogstoreds.sh. Edit anything necessary. It is for starting and stopping a set of test mogstored's. For convenience in testing replication, the HOSTS example below splits them into the space of two /24's.

cat > mogstoreds.sh <<END
#!/bin/bash

BASEDIR="/home/mogilefs/mogdata/"
PERL5LIB="$PERL5LIB"
MOGSTORED="mogstored"

HOSTS="127.0.0.20 127.0.0.25 127.0.15.5 127.0.15.10"

if [ $1 = "start" ] ; then
    echo "Starting a few mogstored's"
    for host in $HOSTS ; do
        echo "starting host $host"
        $MOGSTORED -d --httplisten $host:7500 --mgmtlisten $host:7501 \
            --docroot ${BASEDIR}${host}
    done
elif [ $1 = "stop" ] ; then
    echo "Stopping mogstored's"
    for host in $HOSTS ; do
        echo "shutdown" | nc $host 7501
    done
fi
END
$ chmod +x mogstoreds.sh

Pre-make some directories and data

mkdir -p \
  mogdata/{127.0.0.20/{dev1,dev2},127.0.0.25/{dev3,dev4},127.0.15.5/{dev5,dev6},127.0.15.10/{dev7,dev8}}

Install sysstat if you'd like (provides iowait stats)

apt-get install sysstat

Prepare a database, and install it via mogdbsetup. Tune the below if you know better. Run mogdbsetup --help for full options.

mysql> CREATE DATABASE mogilefs; GRANT ALL PRIVILEGES ON mogilefs.* TO \
'mogile'@'%' IDENTIFIED BY 'mogilepass';
# I don't know postgres very well ;)
mogdbsetup --dbhost=127.0.0.1 --dbname=mogilefs --dbuser=mogile \
--dbpass=mogilepass
# Follow any dialogs.

Prepare a tracker configuration.

cat > mogtracker.conf <<END
db_dsn = DBI:mysql:mogilefs:host=127.0.0.1
db_user = mogile
db_pass = mogilepass
listen = 127.0.1.5:7001
query_jobs = 2
delete_jobs = 1
replicate_jobs = 1
reaper_jobs = 1
fsck_jobs = 1
rebalance_ignore_missing = 1
END

Fire up some mogstored's.

./mogstoreds.sh start

Fire up a mogilefs tracker. Recommend for testing that you run it in the foreground, or in a screen session, so you can quickly and easily see errors.

mogilefsd --config=./mogtracker.conf

Create a client utility configuration file.

echo "trackers = 127.0.1.5:7001
domain = toast" >> ~/.mogilefs.conf

Add the mogtracker hosts and devices

mogadm host add nearone --ip=127.0.0.20 --status=alive
mogadm host add neartwo --ip=127.0.0.25 --status=alive
mogadm host add farone --ip=127.0.15.5 --status=alive
mogadm host add fartwo --ip=127.0.15.10 --status=alive
mogadm device add nearone 1
mogadm device add nearone 2
mogadm device add neartwo 3
mogadm device add neartwo 4
mogadm device add farone 5
mogadm device add farone 6
mogadm device add fartwo 7
mogadm device add fartwo 8

Create a domain to test with

mogadm domain add toast

Wait a few seconds, then see if everything checks out

mogadm check

Try mogupload'ing something

echo "Hello, world" | mogupload --key="/hellothere" --file="-"

mogfetch it back

mogfetch --key="/hellothere" --file="-"

Yay, congrats!