Files
moosefs_docker/README.md
2018-11-29 14:41:08 +01:00

140 lines
6.3 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# MooseFS Docker Cluster
This is a sample configuration of a multiple node MooseFS cluster on Docker using Ubuntu 14.04 LTS. It consists of a master server with a CGI, 5 chunkservers and one client machine. After a successful installation you have a fully working MooseFS cluster to play with its amazing features.
# Updates
New features:
- specify storage size per chunkserver (env: **SIZE**, default: 10)
- specify label per chunkserver (env: **LABEL**, default: *empty*)
- switched to *debian:stretch* as base image
- example with 4 chunkservers (labels: M, MB, MB, B)
- MooseFS disks are now mounted as volumes
# Cluster configurations
In this repository you will find 2 sample configurations which you can run to try MooseFS.
## 4 Chunkservers + Client
Build and run in background:
```
docker-compose build
docker-compose up -d
```
**File docker-compose.yml**
- master with CGI [http://172.20.0.2:9425](http://172.20.0.2:9425)
- chunkserver1 **172.20.0.11**, **10 GiB** storage, label: **M**
- chunkserver2 **172.20.0.12**, **10 GiB** storage, label: **M**,**B**
- chunkserver3 **172.20.0.13**, **10 GiB** storage, label: **M**,**B**
- chunkserver4 **172.20.0.14**, **10 GiB** storage, label: **B**
- client **172.168.20.0.5**
## 4 Chunkservers + 4 Clients
Build and run in background:
```
docker-compose -f docker-compose-chunkserver-client.yml build
docker-compose -f docker-compose-chunkserver-client.yml up -d
```
**File docker-compose-chunkserver-client.yml**
- master with CGI [http://172.20.0.2:9425](http://172.20.0.2:9425)
- chunkserver1 **172.20.0.11**, **10 GiB** storage, label: **M** (mount point: `/mnt/moosefs`)
- chunkserver2 **172.20.0.12**, **10 GiB** storage, label: **M,B** (mount point: `/mnt/moosefs`)
- chunkserver3 **172.20.0.13**, **10 GiB** storage, label: **M,B** (mount point: `/mnt/moosefs`)
- chunkserver4 **172.20.0.14**, **10 GiB** storage, label: **B** (mount point: `/mnt/moosefs`)
# Setup
Install Docker with Docker Composer from [https://docs.docker.com/compose/install/](https://docs.docker.com/compose/install/)
Clone MooseFS docker config files:
```
git clone https://github.com/moosefs/moosefs-docker-cluster
cd moosefs-docker-cluster
```
Build and run in background:
```
docker-compose build
docker-compose up -d
```
or
```
docker-compose -f docker-compose-chunkserver-client.yml build
docker-compose -f docker-compose-chunkserver-client.yml up -d
```
"-d" is detached - running Docker nodes in background, so Docker console output is invisible.
You can check if instances are running:
```
docker ps
```
You should have 1 master, 4 chunkservers and 1 client running (first configuration). Expected output should be similar to:
```
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
2fe620447b37 dockermoosefscluster_client "/home/start-clien..." 5 minutes ago Up 5 minutes client
204c115cd8ad dockermoosefscluster_chunkserver2 "/home/start-chunk..." 5 minutes ago Up 5 minutes 9419-9420/tcp, 9422/tcp chunkserver2
48343721de4f dockermoosefscluster_chunkserver4 "/home/start-chunk..." 5 minutes ago Up 5 minutes 9419-9420/tcp, 9422/tcp chunkserver4
30ca217fa862 dockermoosefscluster_master "/home/start.sh -d" 5 minutes ago Up 5 minutes 9420-9425/tcp master
28e2a64d0fb9 dockermoosefscluster_chunkserver1 "/home/start-chunk..." 5 minutes ago Up 5 minutes 9419-9420/tcp, 9422/tcp chunkserver1
c83c70580795 dockermoosefscluster_chunkserver3 "/home/start-chunk..." 5 minutes ago Up 5 minutes 9419-9420/tcp, 9422/tcp chunkserver3
```
# Attach/detach to/from container
You can **attach** to the client node (press "Enter" twice):
```
docker container attach mfsclient
```
To **detach** from container use the escape sequence `Ctrl + p`, `Ctrl + q`.
Now MooseFS filesystem is mounted as `/mnt/moosefs`. If everything is ok you should see our welcome message with:
```
cd /mnt/moosefs
cat welcome_to_moosefs.txt
```
# CGI
The CGI is available here: [http://172.20.0.2:9425](http://172.20.0.2:9425) (be aware of a local 172.20.0.* network).
![MooseFS CGI](https://github.com/moosefs/moosefs-docker-cluster/raw/master/images/cgi.png)
# Persistence
Your MooseFS Docker cluster is persistent. It means all files you created in the /mnt/moosefs folder will remain there even after turning containers off.
MooseFS disks are now mounted in host `./data` directory.
# Warning
Chunkservers are paired with Master server, so if you destroy the machine with master server you will not be able to access your data. Data will still be there in volumes (`./data` directory) but chunkservers will not want to connect to the new Master server.
# Docker Hub
| Image name | Pulls | Stars | Build |
|:-----|:-----|:-----|:-----|
| [moosefs/master](https://hub.docker.com/r/moosefs/master/) | [![master](https://img.shields.io/docker/pulls/moosefs/master.svg)](https://hub.docker.com/r/moosefs/master/) | ![master](https://img.shields.io/docker/stars/moosefs/master.svg) | ![](https://img.shields.io/docker/build/moosefs/master.svg) |
| [moosefs/client](https://hub.docker.com/r/moosefs/client/) | [![client](https://img.shields.io/docker/pulls/moosefs/client.svg)](https://hub.docker.com/r/moosefs/client/) | ![client](https://img.shields.io/docker/stars/moosefs/client.svg) | ![](https://img.shields.io/docker/build/moosefs/client.svg) |
| [moosefs/chunkserver](https://hub.docker.com/r/moosefs/chunkserver/) | [![chunkserver](https://img.shields.io/docker/pulls/moosefs/chunkserver.svg)](https://hub.docker.com/r/moosefs/chunkserver/) | ![chunkserver](https://img.shields.io/docker/stars/moosefs/chunkserver.svg) | ![](https://img.shields.io/docker/build/moosefs/chunkserver.svg) |
| [moosefs/chunkserver-client](https://hub.docker.com/r/moosefs/chunkserver-client/) | [![chunkserver-client](https://img.shields.io/docker/pulls/moosefs/chunkserver-client.svg)](https://hub.docker.com/r/moosefs/chunkserver-client/) | ![chunkserver-client](https://img.shields.io/docker/stars/moosefs/chunkserver-client.svg) | ![](https://img.shields.io/docker/build/moosefs/chunkserver-client.svg) |
Scripts are based on [Kai Sasaki's *Lewuathe/docker-hadoop-cluster*](https://github.com/Lewuathe/docker-hadoop-cluster). Thank you Kai!