Running multiple chunkservers on the same machine.

Chunkserver as a service

 

  1. Prepare another mfschunkserver.cfg file for the new chunkserver in a different path, let’s call it /etc/chunkserver2.cfg
  2. Prepare another mfshdd.cfg file for the new chunkserver in a different path, let’s call it /etc/hdd2.cfg
  3. Set HDD_CONF_FILENAME in chunkserver2.cfg file to the path of newly prepared mfshdd.cfg file, in this example /etc/hdd2.cfg
  4. Set CSSERV_LISTEN_PORT to non-default, unused port (like 9522) in /etc/chunkserver2.cfg
  5. Run the second chunkserver with mfschunkserver -c /etc/chunkserver2.cfg
  6. Repeat if you need even more chunkservers on the same machine (not very recommended though)

P.S. If you need to run the second chunkserver as a service, not just daemonized process, then you’d have to prepare a simple systemd/init.d script yourself for now, there are no out-of-the-box solutions yet. If you do prepare something like this, feel free to contribute via a pull request.

 

Docker

 

You can setup multiple chunkservers on the same machine very easily with docker.

docker run -d –restart always –net=host  -e MASTER_HOST=localhost \
    –name=chunk_HD01  \
    -e MFS_CSSERV_LISTEN_PORT=9460 \
    -e MFS_LABEL=HD01 \
    -v /mnt/HD01/:/mnt/HD01:rw \
    -e ACTION=chunk   hradec/docker_lizardfs_git

docker run -d –restart always –net=host  -e MASTER_HOST=localhost \
    –name=chunk_HD02 \
    -e MFS_CSSERV_LISTEN_PORT=9461 \
    -e MFS_LABEL=HD02 \
    -v /mnt/HD02/:/mnt/HD02:rw \
    -e ACTION=chunk   hradec/docker_lizardfs_git
where your first hard drive is mounted at /mnt/HD1, the second at /mnt/HD2, and son on…

This docker image let you set ANY of the mfschunkserver.conf options by using -e MFS_<option name> in the command line. (as for example, the chunkserver port number – -e MFS_CSSERV_LISTEN_PORT=9461)

By mounting the local /mnt/HD1 path in the container path /mnt/HD1 (-v /mnt/HD01/:/mnt/HD01:rw), triggers the image to auto-generate the mfshdds.conf file from whatever folder shows up at /mnt/*

You can mount just one path for each chunkservers (as I demonstrated), or you can mount as many paths as you want for a chunkserver, covering booth situations – 1 chunkserver for multiple disks (LizardFS Default setup), or multiple chunkservers for multiple disks!

The –net=host forces the container to use the main hardware nic’s in you machine, so theres no overhead of a virtual lan layer.

The image can be used to start any of the servers, include metalogger, shadow, master and cgi. Just set the server in the -e ACTION=<server name>

running the image like this:
docker run -ti –rm hradec/docker_lizardfs_git

will display a quick help on how to use it!

 

*edited comment from: https://github.com/lizardfs/lizardfs/issues/231

0 replies

Leave a Reply

Want to join the discussion?
Feel free to contribute!

Leave a Reply