
ALMA MATER STUDIORUM - UNIVERSITÀ DI BOLOGNA SCUOLA DI INGEGNERIA E ARCHITETTURA DIPARTIMENTO DI INFORMATICA – SCIENZA E INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA TESI DI LAUREA In COMPUTER NETWORKS M Containerization in Cloud Computing: performance analysis of virtualization architectures CANDIDATO RELATORE: Amedeo Palopoli Chiar.mo Prof. Ing. Antonio Corradi CORRELATORI: Prof. Ing. Luca Foschini Ing. Filippo Bosi Dott. Ing. Stefano Monti Anno Accademico 2016/17 Sessione II Acknowledgements • First and foremost, I would like to thank my supervisors at University of Bologna, Prof. Antonio Corradi and Prof. Luca Foschini, for this fantastic opportunity to work with them and develop this interesting thesis. • I would also like to thank everybody affiliated with Imola Informatica S.p.A who directly or indirectly contributed in this work. In particular, I would like to thank Ing. Filippo Bosi who followed me with dedication. Surely, this experience has been very fundamental for my professional and educational career and so, I cannot forget everyone that gave me the possibility to work in this interesting project. • Moreover, I have to thank everyone who allowed me to realize this little dream. In particular, my parents Carmine and Virginia. Without their support, I could never have completed this important step of my life. • I consider myself a lucky person, because I am surrounded of special people. Of course, one of them is Maria, my girlfriend. You have always been present in every moment, and maybe thanking you is not enough… • Lastly, but not the least, I would like to thank my brother Francesco and my grandmother Annuzza. I am grateful for the various pieces of good advice which have been given that, of course, helped me to grow up easier. Abstract La crescente adozione del cloud è fortemente influenzata dall’emergere di tecnologie che mirano a migliorare i processi di sviluppo e deployment di applicazioni di livello enterprise. L’obiettivo di questa tesi è analizzare una di queste soluzioni, chiamata “containerization” e di valutare nel dettaglio come questa tecnologia possa essere adottata in infrastrutture cloud in alternativa a soluzioni complementari come le macchine virtuali. Fino ad oggi, il modello tradizionale “virtual machine” è stata la soluzione predominante nel mercato. L’importante differenza architetturale che i container offrono ha portato questa tecnologia ad una rapida adozione poichè migliora di molto la gestione delle risorse, la loro condivisione e garantisce significativi miglioramenti in termini di provisioning delle singole istanze. Nella tesi, verrà esaminata la “containerization” sia dal punto di vista infrastrutturale che applicativo. Per quanto riguarda il primo aspetto, verranno analizzate le performances confrontando LXD, Docker e KVM, come hypervisor dell’infrastruttura cloud OpenStack, mentre il secondo punto concerne lo sviluppo di applicazioni di livello enterprise che devono essere installate su un insieme di server distribuiti. In tal caso, abbiamo bisogno di servizi di alto livello, come l’orchestrazione. Pertanto, verranno confrontate le performances delle seguenti soluzioni: Kubernetes, Docker Swarm, Apache Mesos e Cattle. Abstract The increasing adoption of cloud computing is strongly influenced by emerging of technologies whose aim is to improve the development and deployment processes of enterprise applications. The goal of this thesis is to investigate one of these solutions, called “containerization”, and deeply analyze how this solution can be included in cloud infrastructures as an alternative to complementary solutions like virtual machines. So far, the virtual machine model has been the predominant solution. The key differentiator nature that containers offer has stimulated an increasing adoption of this technology because improves resource management, resource sharing, and it guarantees substantial improvements regarding provisioning time of single instances. In this work, we will analyze the containerization paradigm from both infrastructure and application point of views. For the first one, we will investigate the performances by comparing LXD, Docker, and KVM, as hypervisor of OpenStack cloud infrastructure, while the second one concerns the development of enterprise applications that are distributed over a set of server hosts. In this case, we need to exploit high-level services such as orchestration. Therefore, we will compare the performances of the following container orchestrators: Kubernetes, Docker Swarm, Apache Mesos, and Cattle. Summary Summary Introduction ......................................................................................................... 12 1 Virtualization and Containerization .............................................................. 14 1.1 Overview ................................................................................................. 14 1.2 Virtualization in cloud computing .......................................................... 15 1.2.1 Storage virtualization ....................................................................... 15 1.2.2 Network virtualization ...................................................................... 16 1.2.3 Server virtualization ......................................................................... 18 1.3 Types of virtualization with virtual machine .......................................... 19 1.3.1 Full virtualization ............................................................................. 20 1.3.2 Hardware-assisted virtualization ...................................................... 21 1.3.3 Paravirtualization .............................................................................. 22 1.4 Container-based virtualization ................................................................ 23 1.4.1 Linux-VServer .................................................................................. 24 1.4.2 OpenVZ ............................................................................................ 26 1.4.3 LXC .................................................................................................. 28 1.5 Closing remarks ...................................................................................... 30 2 Container Management ................................................................................. 34 2.1 Overview ................................................................................................. 34 2.2 Docker ..................................................................................................... 35 2.2.1 Architecture ...................................................................................... 37 2.2.2 Docker Images .................................................................................. 39 2.2.3 Docker containers ............................................................................. 40 2.2.4 Network ............................................................................................ 43 2.2.5 Storage .............................................................................................. 46 2.2.6 Docker Compose .............................................................................. 47 2.3 RKT ........................................................................................................ 48 2.3.1 Architecture ...................................................................................... 49 5 Summary 2.3.2 Process Model .................................................................................. 50 2.3.3 Network ............................................................................................ 51 2.3.4 Storage .............................................................................................. 52 2.4 LXD ........................................................................................................ 52 2.4.1 Architecture ...................................................................................... 53 2.4.2 Containers ......................................................................................... 54 2.4.3 Snapshots .......................................................................................... 55 2.4.4 Images ............................................................................................... 55 2.4.5 Profiles .............................................................................................. 56 2.4.6 Network ............................................................................................ 56 2.4.7 Storage .............................................................................................. 56 2.4.8 Closing remarks ................................................................................ 57 3 Container Orchestration Engine .................................................................... 60 3.1 Overview ................................................................................................. 60 3.2 The need of Orchestration ...................................................................... 60 3.3 Docker Swarm ........................................................................................ 62 3.3.1 Docker Clustering ............................................................................. 62 3.3.2 Architecture ...................................................................................... 63 3.3.3 Docker Swarm API .........................................................................
Details
-
File Typepdf
-
Upload Time-
-
Content LanguagesEnglish
-
Upload UserAnonymous/Not logged-in
-
File Pages229 Page
-
File Size-