200 likes | 216 Views
Learn how to Dockerize release management process for CVMFS with a remote repository to improve scalability and reduce resource wastage.
E N D
DockerizingCVMFS Release Management with a Remote Repository Lillian Huang IT-ST-FDO Supervisor: Dan van der Ster University of Michigan Lillian Huang
CVMFS Overview Lillian Huang • The CernVM-File System was built to deploy software on the WLCG • Read-only, HTTP based, highly cacheable, signed repositories
CERN Stratum 0 Architecture Lillian Huang
CERN Stratum 0 Architecture Lillian Huang
Areas for Improvement Lillian Huang Load balance for Stratum 0 VMs Every new repository needs a new VM for release management Some release management machines are idle for weeks at a time, but continue to use up space and resources—wasteful Difficult to scale performance of single repository CVMFS currently has a single point of failure at Stratum 0 with respect to data storage
My Project Lillian Huang • Dockerized release management—create a container image that can be started on demand by release managers • Don’t need a new VM for each new repo • Resources not wasted • Decrease load on Stratum 0 VMs • Remote shared storage—we used S3 • Scales storage independently of VMs • No single point of failure
Components Lillian Huang • Docker image that contains cvmfs_server software and is able to mount /cvmfs in rw mode • S3-based repository • This aspect was pretty out-of-the-box • Source: http://cvmfs.readthedocs.io/en/stable/cpt-repo.html#s3-compatible-storage-systems
As of last time: Lillian Huang Created S3-hosted repository: Docker image for container with release management capabilities: Kubernetes: X User-Friendly Command: ??
cvmfs_server_docker() Lillian Huang • Parses through options: • -i <image name>: pulls and runs specified image rather than the default at gitlab-registry.cern.ch/cvmfs/it-cvmfs-docker/cvmfs_container • -c <absolute path>: mounts specified directory of configuration files to /tmp/config_files in the container • -f <absolute path>: mounts specified bash script of commands to run at /dockerfile_commands.sh rather than the default (shown on previous slide) • Makes sure there is exactly 1 repo name given • Pulls and runs image to start container
Testing Lillian Huang • Does it work? • Does running in a container slow publishing? • Does S3 slow down publishing? Can we speed it up with parallel connections? • Tested on testng.cern.ch with • varied numbers of tiny unique files per transaction • Linux kernel (50k files)
Results Lillian Huang
Results Lillian Huang
Conclusion Lillian Huang • The Dockerized release management process is possible! • Remote storage makes this possible and is useable today • S3 works out of the box, but performance was not extensively tested • EP-SFT working on new remote publishing mechanism • Pull request pending
Special Thanks Lillian Huang Dan van der Ster Julien Leduc, JakobBlomer Prof. JunjieZhu, Prof. Myron Campbell Prof. Steve Goldfarb CariCesarotti NSF support All of the lovely people I’ve met
Thank you! Lillian Huang
Backup Lillian Huang
Dockerfile Lillian Huang
Start-up Commands Create various directories necessary for OverlayFS, as well as placing a number of configuration files in the correct places for CVMFS to work Content hash Run /bin/bash for interactive container Lillian Huang
cvmfs_server_docker() Interactive container Non-default command file mounted here Necessary volume to write to CVMFS (scratch space) Changed at run-time due to user input Volume containing config files Add /dev/fuse with permissions WIP: https://github.com/lilhuang/cvmfs/tree/docker Lillian Huang Pulls and runs the image