Jak skalować kontenery platformy Docker w produkcji

139

Niedawno odkryłem to niesamowite narzędzie i mówi

Docker to projekt typu open source umożliwiający łatwe tworzenie lekkich, przenośnych, samowystarczalnych kontenerów z dowolnej aplikacji. Ten sam kontener, który programista buduje i testuje na laptopie, może działać na dużą skalę, w środowisku produkcyjnym, na maszynach wirtualnych, w klastrach OpenStack, chmurach publicznych i nie tylko.

Powiedzmy, że mam obraz dockera, który uruchamia Nginx, a strona internetowa łączy się z zewnętrzną bazą danych. Jak skalować kontener w produkcji?

James Lin
źródło

Odpowiedzi:

587

Aktualizacja: 2019-03-11

Przede wszystkim dziękuję tym, którzy przez lata głosowali za tą odpowiedzią.

Należy pamiętać, że to pytanie zostało zadane w sierpniu 2013 roku, kiedy Docker był jeszcze bardzo nową technologią. Od tego czasu: Kubernetes został uruchomiony w czerwcu 2014 r., Docker swarm został zintegrowany z silnikiem Docker w lutym 2015 r., Amazon uruchomił swoje rozwiązanie kontenerowe ECS w kwietniu 2015 r., A Google uruchomił GKE w sierpniu 2015 r. Można śmiało powiedzieć, że krajobraz kontenerów produkcyjnych ma znacznie się zmieniło.


Krótka odpowiedź jest taka, że ​​aby to zrobić, musiałbyś napisać własną logikę.

Spodziewałbym się, że tego rodzaju funkcja pojawi się w następujących projektach, zbudowanych na szczycie dockera i zaprojektowanych do obsługi aplikacji w środowisku produkcyjnym:

Zaktualizuj 1

Inny powiązany projekt, który niedawno odkryłem:

Zaktualizuj 2

Najnowsza wersja Openstack zawiera obsługę zarządzania kontenerami Docker:

Zaktualizuj 3

System do zarządzania instancjami Dockera

Oraz prezentacja pokazująca , jak używać narzędzi takich jak Packer , Docker i Serf do dostarczania niezmiennego wzorca infrastruktury serwerowej

Zaktualizuj 4

Zgrabny artykuł o tym, jak połączyć kontenery docker za pomocą usługodawcy :

Zaktualizuj 5

Uruchom Docker na Mesos, używając Marathon frameworka

Samouczek dla programistów Mesosphere Docker

Zaktualizuj 6

Uruchom Docker na Tsuru, ponieważ obsługuje on klaster Docker i wdrażanie oddzielnego harmonogramu

Zaktualizuj 7

Orkiestracja środowisk opartych na platformie Docker

maestro-ng

Zaktualizuj 8

decking.io

Zaktualizuj 9

Google kubernetes

Zaktualizuj 10

Redhat dokonali refaktoryzacji swojego PAAS typu openshift, aby zintegrować Dockera

Zaktualizuj 11

Biblioteka Docker NodeJS opakowująca wiersz poleceń Docker i zarządzająca nią z pliku json.

Zaktualizuj 12

Nowa usługa kontenerowa Amazon umożliwia skalowanie w klastrze.

Zaktualizuj 13

Ściśle mówiąc Flocker nie „skaluje” aplikacji, ale jest zaprojektowany w celu wypełnienia powiązanej funkcji przenoszenia kontenerów stanowych (uruchomionych usług baz danych?) Na wiele hostów docker:

https://clusterhq.com/

Zaktualizuj 14

Projekt tworzenia przenośnych szablonów opisujących aplikacje Dockera:

http://panamax.io/

Zaktualizuj 15

Projekt platformy Docker zajmuje się teraz natywnie aranżacją (zobacz ogłoszenie )

Zaktualizuj 16

Spotify Helios

Zobacz też:

Zaktualizuj 17

Projekt Openstack ma teraz nowy projekt „kontener jako usługa” o nazwie Magnum:

Pokazuje wiele obietnic, umożliwia łatwą konfigurację struktur orkiestracji Docker, takich jak Kubernetes i Docker Swarm.

Zaktualizuj 18

Rancher to projekt, który szybko dojrzewa

http://rancher.com/

Ładny interfejs użytkownika i silny nacisk na hybrydową infrastrukturę Dockera

Zaktualizuj 19

Projekt Lattice jest odgałęzieniem Cloud Foundry do zarządzania klastrami kontenerów.

Zaktualizuj 20

Docker niedawno kupił Tutum:

https://www.docker.com/tutum

Zaktualizuj 21

Menedżer pakietów dla aplikacji wdrożonych na Kubernetes .

http://helm.sh/

Zaktualizuj 22

Vamp to platforma open source i hostowana samodzielnie do zarządzania (mikro) architekturami zorientowanymi na usługi, które opierają się na technologii kontenerów.

http://vamp.io/

Zaktualizuj 23

Rozproszony, wysoce dostępny program planujący obsługujący centra danych

Od facetów, którzy dali nam Vagrant i inne potężne narzędzia.

Zaktualizuj 24

Rozwiązanie hostingowe dla kontenerów dla AWS, open source i oparte na Kubernetes

https://supergiant.io/

Zaktualizuj 25

Kontener oparty na Apache Mesos hostowany w Niemczech

https://sloppy.io/features/#features

Firma Docker Inc. zapewnia również usługę hostingu kontenerów o nazwie Docker Cloud

https://cloud.docker.com/

Zaktualizuj 26

Jelastic to hostowana usługa PAAS, która automatycznie skaluje kontenery.

Mark O'Connor
źródło
1
openstack jest kolejnym kandydatem na tę listę
ben schwartz
@benschwartz Bardzo prawdziwe, ale tylko w najnowszej wersji.
Mark O'Connor,
Wow, Dock – me - ty Rockin Fock! Dzięki!
jredd
2
@ MarkO'Connor mesosphere/mesos-dockerProjekt został wycofany i zastąpiony przez mesosphere/deimos: github.com/mesosphere/deimos
Ross Allen
1
Warto też przyjrzeć się z Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger
42

Deis automatyzuje skalowanie (między innymi) kontenerów Docker.

Deis (wymawiane DAY-iss) to PaaS typu open source, który ułatwia wdrażanie i zarządzanie aplikacjami na własnych serwerach. Deis opiera się na Docker i CoreOS, aby zapewnić lekki PaaS z przepływem pracy inspirowanym Heroku.

Oto przepływ pracy programisty:

deis create myapp                      # create a new deis app called "myapp"
git push deis master                   # built with a buildpack or dockerfile
deis scale web=16 worker=4             # scale up docker containers

Deis automatycznie wdraża kontenery Docker w klastrze CoreOS i konfiguruje routery Nginx do kierowania żądań do sprawnych kontenerów Docker. Jeśli host umrze, kontenery są automatycznie ponownie uruchamiane na innym hoście w ciągu kilku sekund. Po prostu przejdź do adresu URL serwera proxy lub użyj deis opengo, aby uruchomić aplikację.

Kilka innych przydatnych poleceń:

deis config:set DATABASE_URL=          # attach to a database w/ an envvar
deis run make test                     # run ephemeral containers for one-off tasks
deis logs                              # get aggregated logs for troubleshooting
deis rollback v23                      # rollback to a prior release

Aby zobaczyć to w akcji, obejrzyj wideo terminala na http://deis.io/overview/ . Możesz również dowiedzieć się o koncepcjach Deis lub od razu wdrożyć własny prywatny PaaS .

gabrtv
źródło
3
+1 Z zainteresowaniem oglądam Twój projekt. Tak trzymaj!
Mark O'Connor
19

Możesz spróbować Tsuru. Tsuru to open source PaaS zainspirowany Heroku, a niektóre produkty są już produkowane na Globo.com (ramię internetowe największej firmy telewizyjnej w Brazylii)

Zarządza całym przepływem aplikacji, od tworzenia kontenera, wdrażania, routingu (z hipache) z wieloma fajnymi funkcjami, takimi jak klaster docker, skalowanie jednostek, oddzielne wdrażanie itp.

Zapoznaj się z naszą dokumentacją poniżej: http://docs.tsuru.io/

Tutaj nasz post dotyczący naszego środowiska: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/

Magno Torres
źródło
18

Spójrz na Rancher.com - może zarządzać wieloma hostami Docker i wiele więcej.

dublx
źródło
Rancher jest oprogramowaniem typu open source i obejmuje pełną dystrybucję Kubernetes. Zapewnia platformę do uruchamiania wielu różnych klastrów, zarządzania infrastrukturą i radykalnie upraszcza uruchamianie kontenerów.
Shannon Williams
9

Rozsądnym podejściem do skalowania Dockera mogłoby być:

  1. Każda usługa będzie dokerem kontenerem
  2. Wykrywanie usług w kontenerze wewnątrz zarządzane przez łącza ( nowa funkcja z Dockera 0.6.5 )
  3. Kontenery zostaną rozmieszczone za pośrednictwem Dokku
  4. Aplikacje będą zarządzane przez Shipyard, który z kolei używa hipache

Kolejny projekt Docker Open Source firmy Yandex:

tommasop
źródło
Czy możesz udzielić dodatkowych porad, jak używać Dokku obok Shipyard?
djskinner
2

Faceci z Openshift również stworzyli projekt. Możesz znaleźć więcej informacji tutaj , wypróbuj kontener testowy i szczegółowe informacje tutaj . Jedynym problemem jest to, że rozwiązanie jest na razie skoncentrowane na Redhat :)

Kunthar
źródło
2

Chociaż jesteśmy wielkimi fanami Deis (deis.io) i aktywnie je wdrażamy, istnieją inne rozwiązania wdrożeniowe w stylu Heroku, takie jak PaaS, w tym:

Longshoreman od ludzi Wayfinder:

https://github.com/longshoreman/longshoreman

Decker od ludzi CloudCredo, używając CloudFoundry:

http://www.cloudcredo.com/decker-docker-cloud-foundry/

Jeśli chodzi o orkiestrację prostą, otwarty projekt NewRelic Centurion wydaje się całkiem obiecujący:

https://github.com/newrelic/centurion

IanBlenke
źródło
1

Spójrz także na etcd i Consul .

Ricardo Silva
źródło
1

Panamax: Docker Management for Humans. panamax.io

Rys .: Szybkie, izolowane środowiska programistyczne korzystające z Dockera. rys.sh

rus1
źródło
Myślę, że Fig nie obsługuje jeszcze wdrażania wielu hostów.
lolski
Czy tak jest! Więc to po prostu pomaga zorganizować konfigurację aplikacji na jednym hoście?
fatuhoku
1

Jedną z opcji niewymienionych w innych postach jest Helios. Jest zbudowany przez Spotify i nie stara się robić zbyt wiele.

https://github.com/spotify/helios

Chris Dail
źródło