Für ein DevOps-Universitätsprojekt haben wir den Auftrag, einen Web-Video-Streaming-Dienst mit Docker und Jenkins usw. aufzubauen. Wir haben völlig freie Herrschaft darüber, wie wir es machen ... Swarm sah interessant aus, also ich Ich dachte, ich würde es versuchen (wie es Replikation, die wahrscheinlich einige Bonuspunkte gimme).Docker Swarm Service Networking
Mein Hintergrund ist Datenkram (Python war ein großer Spaß), so dass Server und Netzwerk usw. nicht meine Stärke sind. Auch das wird alles lokal auf meiner Maschine gemacht.
Ich habe Probleme mit der Kommunikation mit einem tatsächlichen Docker-Service (Soft Instigate/Restheart Bild mit einem Mongodb-Dienst kommunizieren).
Es ist über zwei Docker Maschinen repliziert. Stellt dann eine Verbindung zu einem lokalen Netzwerk her, das wiederum mit einem anderen "Proxy" -Overay-Netzwerk verbunden ist.
Also, wie verbinde ich mich mit diesem spezifischen Restheart-API-Dienst, um Daten für eine HTML-Seite zu erhalten? Normale Container erstellen usw. wäre localhost: selectedport. Aber ich glaube mit Docker-Maschinen ist es eine andere IP-Adresse? Wie ist die Portnummer definiert?
Im Wesentlichen, wie verbindet man sich mit einem bestimmten Dienst innerhalb eines Schwarms von, sagen wir, einer Website-Seite?
Ich fand ein paar Artikel zum Durchlesen, konnte aber zu der Zeit keine Köpfe oder Schwänze daraus machen. Ich glaube, ich habe versucht, die Localhost-Adresse in die IP-Adresse des Leader-Schwarmknotens zu ändern, was nicht zu funktionieren schien (aber es war schon eine Weile her).
Docker Befehle für die Einrichtung zu folgen - auf meinem Handy in der mo.
# https://technologyconversations.com/2016/07/29/docker-swarm-introduction-tour-around-docker-1-12-series/
#### create machines
for i in 1 2 3; do
echo docker-machine create -d virtualbox node-$i
docker-machine create -d virtualbox node-$i
done
docker-machine ls
#### active machine = node-1
eval $(docker-machine env node-1)
#### node-1 join swarm
echo node-1 joins swarm as manager, token variable saved as $TOKEN
docker swarm init --advertise-addr $(docker-machine ip node-1) --listen-addr $(docker-machine ip node-1):2377
#### token value for swarm as a envirnomanet variable
TOKEN=$(docker swarm join-token -q worker)
#### join the relevant worker nodes to the swarm
for i in 2 3; do
echo node-$i to join the swarm
eval $(docker-machine env node-$i)
docker swarm join --token $TOKEN $(docker-machine ip node-1):2377
done
#### move vack to node-1
echo moving back to node-1
eval $(docker-machine env node-1)
#### https://github.com/vfarcic/docker-flow-proxy/blob/master/articles/swarm-mode-listener.md
#### create networks
echo starting networks
docker network create --driver overlay webapp-data-store
docker network create --driver overlay proxy
#### create swarm listener monitor on proxy network
echo starting swarm listener service.....
docker service create --name swarm-listener --network proxy \
--mount "type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock" \
-e DF_NOTIF_CREATE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/reconfigure \
-e DF_NOTIF_REMOVE_SERVICE_URL=http://proxy:8080/v1/docker-flow-proxy/remove \
--constraint 'node.role==manager' \
vfarcic/docker-flow-swarm-listener
#### create proxy service on proxy network
echo proxy service start up
docker service create --name proxy \
-p 80:80 -p 443:443 -p 8080:8080 \
--network proxy \
-e MODE=swarm \
-e LISTENER_ADDRESS=swarm-listener vfarcic/docker-flow-proxy
#### RESTHEART SERVICE
echo start the restheart service
docker service create --name video-restheart \
--network webapp-data-store
--replicas 3 \
softinstigate/restheart
# video mongo data store
echo video-db start up
docker service create --name video-db \
--network webapp-data-store
--replicas 3 \