Docker Cluster — Rancher

Egy ideje már nem volt post. Kicsit elfoglalt voltam az utóbbi időben. De most röviden megpróbálom bemutatni a nem túl rég talált Docker Cluster alkalmazást.
Ez pedig a Rancher. Igaz, jelenleg még jelenleg beta állapotban van, de már így is használhatóak az alap funkciók. (Itt elsősorban a cluster illetve a multi-host network megoldására gondolok)

Megtetszett, mert nagyon gyorsan és egyszerűen lehet vele Docker Cluster-t létrehozni. Web-es felületen a manuálisan (CLI) létrehozott container-eket is lehet kezelni. Persze a weben meg kényelmesen össze lehet kattintgatni a szükséges containereket.
Egyszerűbb ezt használni, mint egy Docker Swarm-ot létrehozni, az biztos :)

Minden docker host-on (Rancher node-on) futnia kell a docker-nek (daemon).
Fedora-n például így lehet ügyesen elindítani, ha nincs jobb megoldás:

docker daemon > /opt/docker/docker.log 2>&1 &

A Rancher-nek legalább 1.9.1-es verziójú docker-re van szüksége, de inkább újabbra.
A legfrisebbet innen érdemes letölteni: https://github.com/docker/docker/releases

Ha már fut a docker vagy a fentivel el lett indítva a docker daemon, akkor jöhet a Rancher “server” elindítása.

docker pull rancher/server
docker run -d --name=rancher-server --restart=always -p 5880:8080 rancher/server

A fentiekből látszik, hogy a szerver a 8080-as porton figyel. Ezt én a docker host 5880 -as portjára bind-eltem.
Így a host IP-jét és a 5880-as portot kell a böngészőbe beírni.
Pl: http://192.168.56.101:5580

No para, a “docker run” parancs kiadása után akár 5 perc is eltelhet, mire a Rancher web felülete elérhető lesz.

Ha elérhető, utána hozzá lehet adni a host-okat.

[caption id=”attachment_1089" align=”aligncenter” width=”1253"]

Add Host

Add Host[/caption]

A host hozzáadásához az itt kiírt parancsot kell beírni a Rancher node-nak szánt host-on.
Azonban, ha több NIC-je van a docker host-nak, akkor érdemes extra paramétereket hozzáírni a parancshoz, egyéb esetben nem működik minden megfelelően.

docker run -d --privileged --name=rancher-agent -e CATTLE_AGENT_IP=192.168.56.101 -v /var/run/docker.sock:/var/run/docker.sock -v /var/lib/rancher:/var/lib/rancher rancher/agent:v0.10.0 http://192.168.56.101:5880/v1/scripts/1944084548F80A6D7505:1458154800000:oUUtl128av2jJzUX1l7XTBqV8

Azaz a “ — name=rancher-agent -e CATTLE_AGENT_IP=192.168.56.101” rész az amit érdemes beírni.
A “ — name” opcionális, ez csak a rend kedvéért van, hogy egyértelmű legyen, hogy a container a rancher-hez tartozik. :)
A “-e CATTLE_AGENT_IP” már fontosabb. Ez adja meg a rancher “agent”-nek a Rancher server IP címét.

Ha sikeresen elindult a “rancher-agent” container, akkor néhány másodperc múlva az új host megjelenik a Hosts listában.

[caption id=”attachment_1091" align=”aligncenter” width=”1003"]

Hosts

Hosts[/caption]

Természetesen itt több is látszódna, csak most lusta voltam még egy host-ot felvenni a virtualbox-omban. :)

A container-ek teljes listája is megjeleníthető. Ebben a listában az összes container látszik ami a host-okon fut.

[caption id=”attachment_1092" align=”aligncenter” width=”1242"]

Containers

Containers[/caption]

Multi-host network

Ami érdekesebb még az a Rancher node-ok (Docker host-ok) közötti hálózat.
A weben létrehozott container-ek alapban “managed” típusú hálózattal jönnek létre. Így alapban megoldott, hogy a host-okon futó docker container-ek elérhessék egymást.

Amennyiben nem a web interface-en API-val, hanem szimpla egyszerű parancsokkal kerülne létrehozásra a container, úgy az alábbi módon lehet a Rancher-féle network-öt használni.

docker run -tid --name=ubitest1 -l io.rancher.container.network=true ubuntu /bin/bash

Azaz a “-l io.rancher.container.network=true” opciót kell használni.

[root@feddock ~]# docker exec -ti ubitest1 ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
23: eth0@if24: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
inet 172.17.0.3/16 scope global eth0
valid_lft forever preferred_lft forever
inet 10.42.209.39/16 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::42:acff:fe11:3/64 scope link
valid_lft forever preferred_lft forever

Látszik, hogy a manuálisan indított container kapott egy “10.42.209.39”-es IP címet, amit a rancher “Network Agent” nevű container-je kezel minden host-on.

Nagyvonalakban ennyit a Rancher-ről. Remélem mihamarabb stabil változatban is elérhető lesz, mert az eddigiek alapján nekem nagyon bejön.