วิธีการปรับขนาด Docker container ในการผลิต


139

ดังนั้นฉันเพิ่งค้นพบเครื่องมือที่ยอดเยี่ยมนี้และมันบอกว่า

นักเทียบท่าเป็นโครงการโอเพนซอร์ซที่จะสร้างตู้คอนเทนเนอร์แบบพอเพียงน้ำหนักเบาพกพาและพอเพียงได้จากทุกแอปพลิเคชั่น คอนเทนเนอร์เดียวกับที่นักพัฒนาสร้างและทดสอบบนแล็ปท็อปสามารถทำงานในระดับการผลิตบน VMs โลหะเปลือยกลุ่ม OpenStack กลุ่มเมฆสาธารณะและอื่น ๆ

สมมติว่าฉันมีภาพนักเทียบท่าที่เรียกใช้ Nginx และเว็บไซต์เชื่อมต่อกับฐานข้อมูลภายนอก ฉันจะปรับขนาดภาชนะในการผลิตได้อย่างไร

คำตอบ:


587

อัปเดต: 2019-03-11

ก่อนอื่นขอขอบคุณสำหรับผู้ที่ได้ตอบคำถามนี้ในช่วงหลายปีที่ผ่านมา

โปรดทราบว่าคำถามนี้ถูกถามเมื่อเดือนสิงหาคม 2556 เมื่อนักเทียบท่ายังคงเป็นเทคโนโลยีใหม่มาก ตั้งแต่นั้นมา: Kubernetesเปิดตัวในเดือนมิถุนายน 2014 Docker Swarmถูกรวมเข้ากับเครื่องมือ Docker ในเดือนกุมภาพันธ์ 2015, Amazon เปิดตัวโซลูชันภาชนะ ECSในเดือนเมษายน 2015 และGoogle เปิดตัว GKEในเดือนสิงหาคม 2015 มันยุติธรรมที่จะบอกว่าภูมิทัศน์ภาชนะบรรจุมี เปลี่ยนไปอย่างมาก


คำตอบสั้น ๆ คือคุณต้องเขียนตรรกะของคุณเองเพื่อทำสิ่งนี้

ฉันคาดหวังว่าฟีเจอร์ประเภทนี้จะเกิดขึ้นจากโปรเจ็กต์ต่อไปนี้ซึ่งสร้างขึ้นจากนักเทียบท่าและออกแบบมาเพื่อรองรับแอพพลิเคชั่นในการผลิต:

อัปเดต 1

อีกโครงการที่เกี่ยวข้องฉันเพิ่งค้นพบ:

อัปเดต 2

Openstack รุ่นล่าสุดประกอบด้วยการสนับสนุนสำหรับการจัดการคอนเทนเนอร์ Docker:

อัปเดต 3

ระบบสำหรับจัดการอินสแตนซ์ Docker

และการนำเสนอเกี่ยวกับวิธีการใช้เครื่องมือเช่นPacker , Docker และSerfเพื่อส่งมอบรูปแบบโครงสร้างพื้นฐานเซิร์ฟเวอร์ที่ไม่เปลี่ยนรูปแบบ

อัปเดต 4

บทความที่เป็นระเบียบเกี่ยวกับวิธีการเชื่อมต่อคอนเทนเนอร์ของนักเทียบท่าโดยใช้serf :

อัปเดต 5

เรียกใช้ Docker บนMesosโดยใช้เฟรมเวิร์กMarathon

บทช่วยสอนสำหรับนักพัฒนาซอฟต์แวร์ Mesosphere Docker

อัปเดต 6

รัน Docker บนTsuruเนื่องจากสนับสนุนการปรับใช้docker-clusterและตัวจัดกำหนดการแยก

อัปเดต 7

orchestration สภาวะแวดล้อมแบบ Docker-based

เกจิ-ng

อัปเดต 8

decking.io

อัปเดต 9

Google kubernetes

อัปเดต 10

Redhat ได้ปรับโครงสร้าง PAAS openshift ใหม่เพื่อรวม Docker

อัปเดต 11

Docker NodeJS lib ล้อมบรรทัดคำสั่ง Docker และจัดการมันจากไฟล์ json

อัปเดต 12

บริการตู้คอนเทนเนอร์ใหม่ของ Amazonช่วยให้สามารถปรับขนาดในคลัสเตอร์ได้

อัปเดต 13

Flocker ที่พูดอย่างเคร่งครัดไม่ได้ใช้งาน "มาตราส่วน" แต่มันถูกออกแบบมาเพื่อทำหน้าที่ที่เกี่ยวข้องในการสร้างคอนเทนเนอร์ที่รัฐ (ใช้บริการฐานข้อมูล?) พกพาข้ามโฮสต์หลายนักเทียบท่า:

https://clusterhq.com/

อัปเดต 14

โครงการเพื่อสร้างเทมเพลตแบบพกพาที่อธิบายการใช้งาน Docker:

http://panamax.io/

อัปเดต 15

โครงการนักเทียบท่าตอนนี้กำลังจัดการกับออเคสตร้าแบบดั้งเดิม (ดูประกาศ )

อัปเดต 16

Spotify Helios

ดูสิ่งนี้ด้วย:

อัปเดต 17

ตอนนี้โครงการ Openstack มีโครงการ "container as a service" ใหม่ชื่อ Magnum:

แสดงให้เห็นถึงสัญญามากมายช่วยให้สามารถติดตั้งกรอบงาน orchestration ของ Docker ได้อย่างง่ายดายเช่น Kubernetes และ Docker swarm

อัปเดต 18

Rancher เป็นโครงการที่กำลังเติบโตอย่างรวดเร็ว

http://rancher.com/

UI ที่ดีและการเน้นที่โครงสร้างพื้นฐานของนักเชื่อมต่อ hyrbrid

อัปเดต 19

โครงการ Latticeเป็นหน่อของ Cloud Foundry สำหรับการจัดการกลุ่มภาชนะ

อัปเดต 20

นักเทียบท่าเพิ่งซื้อ Tutum:

https://www.docker.com/tutum

อัปเดต 21

ผู้จัดการแพคเกจสำหรับการใช้งานบนKubernetes

http://helm.sh/

อัพเดท 22

Vamp เป็นโอเพ่นซอร์สและแพลตฟอร์มที่โฮสต์ด้วยตนเองสำหรับการจัดการสถาปัตยกรรมเชิงบริการ (ไมโคร) ที่ใช้เทคโนโลยีตู้คอนเทนเนอร์

http://vamp.io/

อัปเดต 23

เครื่องมือวางกำหนดการ Datacenter-Aware แบบกระจายมีประสิทธิภาพสูง

จากพวกที่ให้พวกเร่ร่อนและเครื่องมืออันทรงพลังอื่น ๆ

อัปเดต 24

โซลูชันการโฮสต์คอนเทนเนอร์สำหรับ AWS โอเพ่นซอร์สและอ้างอิงจากKubernetes

https://supergiant.io/

อัปเดต 25

ภาชนะบรรจุ Apache Mesos โฮสต์อยู่ในประเทศเยอรมนี

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

และ Docker Inc. ยังให้บริการโฮสติ้งคอนเทนเนอร์ที่เรียกว่า Docker cloud

https://cloud.docker.com/

อัปเดต 26

Jelasticเป็นบริการ PAAS โฮสต์ที่ปรับขนาดตู้คอนเทนเนอร์โดยอัตโนมัติ


1
openstack เป็นผู้สมัครอื่นสำหรับรายการนี้
ben schwartz

@benschwartz เป็นจริงมาก แต่เฉพาะในรุ่นล่าสุด
Mark O'Connor

ว้าว Dock – me— คุณ Rockin Fock! ขอบคุณ!
jredd

2
@ MarkO'Connor mesosphere/mesos-dockerโครงการเลิกใช้แล้วและถูกแทนที่ด้วยmesosphere/deimos: github.com/mesosphere/deimos
Ross Allen

1
นอกจากนี้ยังควรดูจาก Google - github.com/GoogleCloudPlatform/kubernetes
mjsalinger

42

Deisปรับสเกลของคอนเทนเนอร์ Docker โดยอัตโนมัติ (เหนือสิ่งอื่นใด)

Deis (ออกเสียง DAY-iss) เป็น PaaS โอเพ่นซอร์สที่ทำให้ง่ายต่อการปรับใช้และจัดการแอพพลิเคชั่นบนเซิร์ฟเวอร์ของคุณเอง Deis สร้างบนDockerและCoreOSเพื่อมอบ PaaS น้ำหนักเบาพร้อมเวิร์กโฟลว์ที่ได้แรงบันดาลใจจาก Heroku

นี่คือขั้นตอนการทำงานของนักพัฒนา:

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 ปรับใช้คอนเทนเนอร์ Docker ของคุณโดยอัตโนมัติผ่านคลัสเตอร์ CoreOS และกำหนดค่าเราเตอร์ Nginx เพื่อกำหนดเส้นทางการร้องขอไปยังคอนเทนเนอร์ Docker ที่ดี ถ้าโฮสต์ตายคอนเทนเนอร์จะถูกรีสตาร์ทโดยอัตโนมัติในโฮสต์อื่นในไม่กี่วินาที เพียงเรียกดู URL พร็อกซีหรือใช้deis openเพื่อเข้าสู่แอปของคุณ

คำสั่งที่มีประโยชน์อื่น ๆ :

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

เพื่อดูนี้ในการดำเนินการตรวจสอบวิดีโอขั้วที่http://deis.io/overview/ นอกจากนี้คุณยังสามารถเรียนรู้เกี่ยวกับแนวคิด Deisหรือกระโดดลงในการปรับใช้ PaaS


3
+1 ฉันกำลังดูโครงการที่คุณสนใจ ดีแล้วทำต่อไป!
Mark O'Connor

19

คุณสามารถลอง Tsuru Tsuru เป็น PaSS opensource ที่ได้แรงบันดาลใจจาก Heroku และมีผลิตภัณฑ์บางอย่างในการผลิตที่ Globo.com (แขนอินเทอร์เน็ตของ บริษัท Broadcast Television ที่ใหญ่ที่สุดในบราซิล)

มันจัดการการไหลของแอพพลิเคชั่นทั้งหมดตั้งแต่การสร้างคอนเทนเนอร์การปรับใช้การกำหนดเส้นทาง (พร้อม hipache) พร้อมคุณสมบัติที่ดีมากมายเช่นคลัสเตอร์นักเทียบท่าการปรับขนาดของหน่วยการปรับใช้แบบแยก ฯลฯ

ดูเอกสารการร้องของเรา: http://docs.tsuru.io/

ที่นี่โพสต์ของเราครอบคลุมสภาพแวดล้อมของเรา: http://blog.tsuru.io/2014/04/04/running-tsuru-in-production-scaling-and-segregating-docker-containers/


18

ดูที่Rancher.com - มันสามารถจัดการโฮสต์ Docker หลายตัวและอีกมากมาย


Rancher เป็นโอเพ่นซอร์สและรวมถึงการกระจายเต็มรูปแบบของ Kubernetes มันมีแพลตฟอร์มสำหรับการเรียกใช้คลัสเตอร์ที่แตกต่างกันจำนวนมากการจัดการโครงสร้างพื้นฐานและลดความซับซ้อนของการใช้ภาชนะบรรจุ
แชนนอนวิลเลียมส์

9

แนวทางที่เหมาะสมในการปรับขนาด Docker อาจเป็น:

  1. แต่ละบริการจะเป็นคอนเทนเนอร์นักเทียบท่า
  2. การค้นหาบริการคอนเทนเนอร์ภายในได้รับการจัดการผ่านลิงก์ ( คุณลักษณะใหม่จากนักเทียบท่า 0.6.5 )
  3. ภาชนะจะถูกปรับใช้ผ่านDokku
  4. แอปพลิเคชันจะได้รับการจัดการผ่านอู่ต่อเรือซึ่งจะใช้สะโพก

นักเทียบท่าอีกโครงการที่เปิดแหล่งที่มาจากยานเดกซ์:


คุณสามารถให้คำแนะนำเพิ่มเติมเกี่ยวกับวิธีการใช้ Dokku กับอู่ต่อเรือได้หรือไม่?
djskinner


2

พวก Openshift ก็สร้างโครงการเช่นกัน ท่านสามารถหาข้อมูลเพิ่มเติมได้ที่นี่ , ลองภาชนะทดสอบและข้อมูลรายละเอียดที่นี่ ปัญหาเดียวคือทางออกคือตอนนี้ Redhat เป็นศูนย์กลาง :)


2

ในขณะที่เราเป็นแฟนตัวยงของ Deis (deis.io) และกำลังปรับใช้อย่างจริงจังมี Heroku อื่น ๆ เช่นโซลูชันการปรับใช้สไตล์ PaaS ที่นั่นรวมถึง:

Longshoreman จาก Wayfinder folks:

https://github.com/longshoreman/longshoreman

Decker จากกลุ่ม CloudCredo โดยใช้ CloudFoundry:

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

สำหรับการประสานงานอย่างตรงไปตรงมาโครงการโอเพนซอร์ส Centurion ของ NewRelic นั้นค่อนข้างมีแนวโน้ม

https://github.com/newrelic/centurion



1

Panamax: การจัดการนักเทียบท่าสำหรับมนุษย์ panamax.io

ภาพ: สภาพแวดล้อมการพัฒนาที่รวดเร็วและแยกได้โดยใช้ Docker fig.sh


ฉันคิดว่ารูปยังไม่รองรับการปรับใช้หลายโฮสต์
lolski

เป็นเช่นนั้น! ดังนั้นเพียงแค่ช่วยจัดการการตั้งค่าแอปพลิเคชันภายในโฮสต์เดียว
fatuhoku

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.