Commit f2cc7ac3 authored by MartinFIT's avatar MartinFIT

Text - Appendices, README

parent b6de70f9
......@@ -181,7 +181,7 @@
<select />
</treeState>
</component>
<component name="ProjectFrameBounds" extendedState="7">
<component name="ProjectFrameBounds" extendedState="6">
<option name="x" value="-3" />
<option name="width" value="1378" />
<option name="height" value="780" />
......@@ -587,16 +587,15 @@
<workItem from="1522847077613" duration="2157000" />
<workItem from="1523036003925" duration="248000" />
<workItem from="1523084297076" duration="1235000" />
<workItem from="1523610434037" duration="16000" />
<workItem from="1523610434037" duration="607000" />
</task>
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="146779000" />
<option name="totallyTimeSpent" value="147370000" />
</component>
<component name="ToolWindowManager">
<frame x="-8" y="-8" width="1382" height="754" extended-state="7" />
<editor active="true" />
<frame x="-8" y="-8" width="1382" height="754" extended-state="6" />
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Tool Output" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
......
......@@ -2,7 +2,8 @@
Navod pro ovladani Docker prostredi
Pozadavky
- mit nainstalovany Docker (Docker Toolbox) a Oracle VM VirtualBox
- mit nainstalovany Docker (Docker Toolbox) a Oracle VM VirtualBox,
je dost mozne, ze pod Linuxem bude potreba mirne upravit konfiguraci technologii (v Environment/docker-compose.yml)
- spusteni prostredi Docker napr. pomoci Docker Quickstart Terminal
Vytvoreni virtualni masiny
......@@ -10,12 +11,11 @@ Navod pro ovladani Docker prostredi
lze ji i znovu vytvorit spustenim skriptu docker-machine-recreate.sh
Stazeni technologii v prostredi Docker
- spusteni skriptu install-docker-enviroment.sh, ktery provede stazeni
obrazu technologii z DockerHub: Cassandra, Kafka, ZooKeeper
- spusteni skriptu install-docker-enviroment.sh, ktery provede stazeni obrazu
technologii z DockerHub: Cassandra, Kafka, ZooKeeper, MongoDB, Hadoop
Spusteni technologii v prostredi Docker
- spusteni skriptu run-docker-enviroment.sh,
pro ucely prototypu spusti zatim pouze Cassandru a Kafku se ZooKeeper
- spusteni skriptu run-docker-enviroment.sh, spusti vsechny vyse zminene technologie
Ukonceni behu technologii v prostredi Docker
- spusteni skriptu stop-docker-enviroment.sh
......@@ -49,29 +49,32 @@ Navod pro ovladani technologii v Docker prostredi
Cassandra
Otevreni CSLSH
$ docker run -it --net cassandraofficial_default --link cassandra:cassandra -v /nosql/cassandra/data:/var/lib/cassandra --rm cassandra cqlsh cassandra
Tabulky databaze jsou v adresari Environment/cassandra-official/initialize-database, tyto prikazy je nutne vlozit do otevreneho cslsh
$ docker run -it --link cassandra:cassandra --rm cassandra cqlsh cassandra
MongoDB
Otevreni Mongo shell
$ docker run -it --link mongodb:mongodb --rm mongo mongo 192.168.99.100:27017
Distribuovany repositar
Prototyp se sklada ze tri samostatnych Maven aplikaci:
Implementace se sklada ze ctyr Maven modulu:
- Communication rozhrani pro komunikaci
- Persistence Obsluha Cassandry a MongoDB
- DistributedRepository system distribuovaneho repositare, po spusteni bezi nepretrzite
- DistributedRepositoryCommunication rozhrani pro komunikaci, ktere muze pouzit klient pro komunikaci s DR
- ProducerApp klientska aplikace, ktera odesle PCAP do DR a pocka na odpoved
- ProducerDemo klientska aplikace
Prvni je potreba nainstalovat modul DistributedRepositoryCommunication, protoze ostatni dve aplikace jej pouzivaji jako dependency.
cd DistributedRepositoryCommunication
mvn install
Prvni je potreba nainstalovat moduly Communication a Persistence, protoze ostatni dve aplikace jej pouzivaji jako dependency.
cd Communication
./install.sh
cd Persistence
./install.sh
Pote je potreba nainstalovat zbyle dve aplikace.
cd DistributedRepository
mvn install
cd ProducerApp
mvn install
./install.sh
cd ProducerDemo
./install.sh
Jedna se o projekty do vyvojoveho prostredi IntelliJ IDEA,
DistributedRepository a ProducerApp lze spustit primo v IDEA nebo pomoci Maven v prikazove radce.
Pri spusteni v IDEA lze rovnez navazat spojeni na prostredi bezici v Docker a kontrolovat logy technologii Cassandra a Kafka.
Jedna se o projekty vytvorene ve vyvojovem prostredi IntelliJ IDEA.
Pro IDEA existuje plugin Docker, kde lze videt po pripojeni obrazy a bezici kontejnery, zaroven lze sledovat jejich nastaveni a logy.
docker-machine rm default
docker-machine create --virtualbox-memory "4096" --virtualbox-share-folder "C:\Users:c/Users" --driver virtualbox --virtualbox-no-vtx-check default
eval "$(docker-machine env default)"
docker-machine ssh default "mkdir /home/docker/Users"
docker-machine ssh default "sudo mount -t vboxsf -o uid=1000,gid=50 c/Users /home/docker/Users"
......@@ -91,6 +91,51 @@ cz.vutbr.fit.producerdemo.demo.StorePcapProducerDemo.dataSourceStorage=HDFS \\
cz.vutbr.fit.producerdemo.demo.LoadPcapProducerDemo.dataSourceStorage=HDFS
}
%\chapter{RelaxNG Schéma konfiguračního souboru} % Scheme of RelaxNG configuration file
\chapter{Běhové prostředí}
Jako běhové prostředí pro systém distribuovaného repositáře byl zvolen projekt \texttt{Docker} \footnote{https://www.docker.com/} z důvodu jednodušší a oddělené správy použitých technologií. Každá technologie běží v odděleném kontejneru spuštěném z předem připraveného obrazu. Všechny soubory a skripty týkající se běhového prostředí jsou uloženy v adresáři \texttt{Docker/}.
\section{Obrazy}
Každou technologii reprezentuje samostatný obraz (angl. \texttt{image}), v němž je daná technologie nainstalována.
\vspace{0.5cm}
\noindent Kompletní přehled obrazů:
\begin{lstlisting}[language=bash,basicstyle={\small\ttfamily}]
$ docker image ls
REPOSITORY TAG IMAGE ID CREATED SIZE
martinfit/maven 3.5.2-jdk-9-slim 3b5fe317e7ef 2 weeks ago 449MB
martinfit/cassandra latest cb028d053919 2 weeks ago 323MB
wurstmeister/kafka latest a958fac18206 3 weeks ago 330MB
mongo latest 5b1317f8158f 4 weeks ago 366MB
cassandra latest c6b513da2ff3 4 weeks ago 323MB
maven 3.5.2-jdk-9-slim 58405637ffbb 8 weeks ago 392MB
wurstmeister/zookeeper latest 351aa00d2fe9 16 months ago 478MB
sequenceiq/hadoop-docker latest 5c3cc170c6bc 2 years ago 1.77GB
\end{lstlisting}
\noindent Většina výše uvedených obrazů pochází přímo z oficiálního repositáře \texttt{Docker Hub} \footnote{https://hub.docker.com/}. Výjimku tvoří obrazy \texttt{martinfit/maven} a \texttt{martinfit/cassandra}. Tyto dva obrazy jsou založeny na obrazech z Docker Hub, ale byla do nich přidána dodatečná konfigurace. Obraz pro databázi Cassandra byl mírně upraven, aby bylo možné inicializovat schéma databáze při spuštění kontejneru. Do obrazu pro nástroj Maven byla doinstalována nativní knihovna \texttt{libpcap} kvůli korektnímu běhu knihovny Pcap4J \ref{pcap4j}.
Instalaci prostředí (tzn. stažení a sestavení obrazů) provádí nástroje \texttt{docker-compose pull} a \texttt{docker build} uvnitř skriptu \texttt{install-docker-enviroment.sh}. Spuštění kontejnerů z definovaných obrazů zajistí skript \texttt{run-docker-enviroment.sh}. Zastavit kontejnery lze pomocí skriptu \texttt{stop-docker-enviroment.sh}. Veškerá konfigurace obrazů a kontejnerů se nachází v souboru \texttt{Environment/docker-compose.yml}.
\chapter{Spuštění aplikací} \label{launching}
Sestavení jednotlivých modulů zajišťují přiložené skripty \texttt{install.sh} v adresáři každého modulu. Jednotlivé cesty ke skriptům jsou:
\begin{enumerate}
\item \texttt{Communication/install.sh}
\item \texttt{Persistence/install.sh}
\item \texttt{DistributedRepository/install.sh}
\item \texttt{ProducerDemo/install.sh}
\end{enumerate}
\noindent Kvůli závislostem mezi moduly je nutné skripty spustit ve výše uvedeném pořadí. Moduly jsou zkompilovány a sestaveny pomocí nástroje Maven, který provede stažení všech potřebných závislostí.
\section{DistributedRepository}
Systém distribuovaného úložiště lze spustit skriptem \texttt{DistributedRepository/run.sh}, který dynamicky zjistí IP adresy běžících kontejnerů v Docker, a na základě zjištěných hodnot přepíše aplikační proměnné.
\section{ProducerDemo}
Klientskou aplikaci lze spustit pomocí skriptu \texttt{ProducerDemo/run.sh}, který také dynamicky přepíše aplikační proměnné podle běžících kontejnerů.
%\chapter{Plakát} % poster
No preview for this file type
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment