mirror of
https://github.com/sstent/moosefs_docker.git
synced 2026-01-28 01:52:14 +00:00
MooseFS Docker Cluster
This commit is contained in:
6
bin/build.sh
Executable file
6
bin/build.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/bin/bash
|
||||
|
||||
PROGNAME=$(basename $0)
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
$DIR/build_cluster.sh build
|
||||
93
bin/build_cluster.sh
Executable file
93
bin/build_cluster.sh
Executable file
@@ -0,0 +1,93 @@
|
||||
#!/bin/bash
|
||||
|
||||
PROGNAME=$(basename $0)
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
print_usage() {
|
||||
echo "Usage: $0 [launch|destroy]"
|
||||
echo ""
|
||||
echo " launch : Launch moosefs cluster on docker"
|
||||
echo " destroy : Remove moosefs cluster on docker"
|
||||
echo " build : Build docker images with local moosefs binary"
|
||||
echo ""
|
||||
echo " Options:"
|
||||
echo " -h, --help : Print usage"
|
||||
echo " -s, --chunkservers : Specify the number of chunkservers"
|
||||
echo ""
|
||||
}
|
||||
|
||||
if [ $# -eq 0 ]; then
|
||||
print_usage
|
||||
fi
|
||||
|
||||
DATANODE_NUM=3
|
||||
CLUSTER_NAME=default_cluster
|
||||
|
||||
for OPT in "$@"
|
||||
do
|
||||
case "$OPT" in
|
||||
'-h'|'--help' )
|
||||
print_usage
|
||||
exit 1
|
||||
;;
|
||||
'-s'|'--chunkservers' )
|
||||
if [[ -z "$2" ]] || [[ "$2" =~ ^-+ ]]; then
|
||||
echo "$PROGNAME: option requires an argument -- $1" 1>&2
|
||||
exit 1
|
||||
fi
|
||||
DATANODE_NUM="$2"
|
||||
shift 2
|
||||
;;
|
||||
'-c'|'--cluster' )
|
||||
CLUSTER_NAME="$2"
|
||||
shift 2
|
||||
;;
|
||||
-*)
|
||||
echo "$PROGNAME: illegal option -- '$(echo $1 | sed 's/^-*//')'" 1>&2
|
||||
exit 1
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
done
|
||||
|
||||
launch_cluster() {
|
||||
if ! docker network inspect moosefs-network > /dev/null ; then
|
||||
echo "Creating moosefs-network"
|
||||
docker network create --driver bridge moosefs-network
|
||||
fi
|
||||
echo "Launching master server"
|
||||
docker run -d -p 9870:9870 -p 8088:8088 -p 19888:19888 -p 8188:8188 --net moosefs-network --name master -h master karolmajek/moosefs-master:latest
|
||||
echo "Launching chunkservers"
|
||||
for i in `seq 1 $DATANODE_NUM`; do
|
||||
docker run -d -p 990${i}:9864 -p 804${i}:8042 --name chunkserver${i} -h chunkserver${i} --net moosefs-network karolmajek/moosefs-chunkserver:latest
|
||||
done
|
||||
}
|
||||
|
||||
destroy_cluster() {
|
||||
docker kill master; docker rm master
|
||||
for i in `seq 1 $DATANODE_NUM`; do
|
||||
docker kill chunkserver${i}; docker rm chunkserver${i}
|
||||
done
|
||||
docker network rm moosefs-network
|
||||
}
|
||||
|
||||
build_images() {
|
||||
# cd $DIR/../moosefs-base
|
||||
# docker build -f Dockerfile-local -t karolmajek/moosefs-base:latest .
|
||||
cd $DIR/../moosefs-master
|
||||
docker build -t karolmajek/moosefs-master:latest .
|
||||
cd $DIR/../moosefs-chunkserver
|
||||
docker build -t karolmajek/moosefs-chunkserver:latest .
|
||||
}
|
||||
|
||||
case $1 in
|
||||
launch) launch_cluster
|
||||
;;
|
||||
destroy) destroy_cluster
|
||||
;;
|
||||
build) build_images
|
||||
;;
|
||||
esac
|
||||
|
||||
exit 0
|
||||
6
bin/destroy.sh
Executable file
6
bin/destroy.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROGNAME=$(basename $0)
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
$DIR/build_cluster.sh -s $1 destroy
|
||||
6
bin/launch.sh
Executable file
6
bin/launch.sh
Executable file
@@ -0,0 +1,6 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
PROGNAME=$(basename $0)
|
||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
|
||||
$DIR/build_cluster.sh -s $1 launch
|
||||
22
bin/resolv_host.py
Executable file
22
bin/resolv_host.py
Executable file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env python
|
||||
|
||||
import sys
|
||||
import subprocess
|
||||
import json
|
||||
|
||||
def exec_process(cmd):
|
||||
p = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
stdout_data, stderr_data = p.communicate()
|
||||
return p.returncode, stdout_data, stderr_data
|
||||
|
||||
def get_ipaddress(host):
|
||||
(code, out, err) = exec_process('sudo docker inspect {}'.format(host))
|
||||
conf = json.loads(out)
|
||||
return conf[0]['NetworkSettings']['IPAddress']
|
||||
|
||||
if __name__ == "__main__":
|
||||
argvs = sys.argv
|
||||
for h in range(0, int(argvs[1])):
|
||||
print("{}\tdn{}".format(get_ipaddress('dn' + str(h + 1)), h + 1))
|
||||
print("{}\tdn{}.bridge".format(get_ipaddress('dn' + str(h + 1)), h + 1))
|
||||
|
||||
Reference in New Issue
Block a user