Erlang si Xen

Categorii: Programare, Unix

03-Jul-2017 11:47 - 548 vizionari

Ling este o solutie simpla si interesanta pentru executia aplicatiilor Erlang sub hipervizorul Xen. Mai multe detalii ar trebui sa fie pe http://erlangonxen.org/, dar de cateva saptamani serverul este inaccesibil.

Ling este platforma pentru care este recompilat Erlang/OTP ca sa functioneze in Xen si railing este utilitarul care genereaza imaginea pentru Xen.

Avantajele executiei Erlang in Ling pe Xen: necesita memorie putina, latenta scazuta la pornirea nodului Erlang, invulnerabilitate la hackeri si virusi, portabilitate, poate merge si pe platforme ARM, PIC32, …

Am testat solutia pe ubuntu/trusty64 in Vagrant si pe ubuntu-16.04.2-server-amd64 in VirtualBox.

Pe oricare dintre cele doua servere testate si probabil pe orice distributie Linux moderna bazata pe Debian trebuie instalate pachetele:


apt-get update
apt-get upgrade
apt-get install git htop mc
apt-get install build-essential
apt-get install libncurses-dev
apt-get install libssl-dev
#eventual instalare apache Formatting Objects Processor pentru documentatie
#apt-get install fop
#instalare xen si tools
apt-get install xen-hypervisor-amd64
apt-get install xen-tools


Ling se compileaza cu succes numai pe Erlang/OTP 17, iar ultima versiune este 17.5

Ca sa instalez versiunea dorita, am folosit kerl - https://github.com/kerl/kerl

In folderul de lucru (~/erlang) am adus si compilat kerl:


mkdir ~/erlang
cd ~/erlang
git clone https://github.com/kerl/kerl
cd kerl/
./kerl build 17.5 17.5

instalare kerl si compilare Erlang/OTP 17.5

Dupa compilarea cu succes a distributiei aduse de kerl, urmeaza compilarea Ling.

Trebuie editat fisierul Makefile din distributia Ling sa includa o referinta la locatia Erlang/OTP 17.5:

~/.kerl/builds/17.5/release_17.5/bin


cd ~/erlang
git clone https://github.com/cloudozer/ling
cd ling/
#edit Makefile sa contina ERL_BIN := ~/.kerl/builds/17.5/release_17.5/bin
make

editare makefile ling inainte de compilare

compilare ling cu Erlang/OTP 17.5 

Dupa ce s-a compilat Ling cu succes este timpul pentru generarea unei imagini de test.


mkdir ~/erlang/test-ling
cp railing/railing ~/erlang/test-ling/
cd ~/erlang/test-ling/
ls
./railing image -m 128 -n test1

generare imagine de test cu railing

Railing genereaza imaginea de test pentru Xen si imaginea contine un interpretor Erlang:


#lista de masini virtuale executate sub XEN
sudo xl list
#porneste imaginea Ling sub XEN:
sudo xl create -c domain_config

Erlang compilat pentru Ling si executat in XEN

In alta sesiune SSH se poate vedea lista de masini virtuale:


sudo xl list

Lista de masini virtuale XEN

Masina virtuala Ling, numita test1, ocupa 128 Mb RAM.

Se pot specifica argumente pentru pornirea masinii virtuale la crearea imaginii cu railing:


#compilare, constructie imagine si executie
./rebar3 compile
./railing image -m 256 -n test2 -e "-eval test1:main(1000),application:start(app1)"
sudo xl create -c domain_config

railing are grija sa adauge in imaginea Xen toate modulele Erlang necesare, toate fisierele compilate din directorul curent si sa genereze corect secventa de pornire a aplicatiilor conform parametrului -e

4 iulie 2017: dupa cateva zile de teste si cautari am gasit cum se configureaza reteaua in nodul Ling sub Xen.

Masina virtuala Ling primeste parametrul -dhcp (sau -ipaddr x.x.x.x -netmask y.y.y.y -gateway z.z.z.z), iar Xen trebuie sa adauge cel putin o placa de retea dupa cum este specificat in configuratie:


#genereaza imaginea Xen din toate *.beam gasite in folderul curent + subfoldere
./railing image -m 128 -n test3 -e "-dhcp -eval test1:main(1000),application:start(app1)"

#adauga o placa de retea la configuratia masinii virtuale din Xen
echo "vif = ['mac=00:11:22:33:44:01,bridge=xenbr0']" >> domain_config

Mai multe detalii privind configurarea TCP/IP a solutiei Ling + Erlang se gasesc la Bare metal Erlang "Hello World", un articol scris de Vanshdeep Singh.



Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric



Contorizari incepand cu 9 iunie 2014:
Flag Counter

Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.