Докер рояк за оркестрация на контейнери

Всичко за Докер рояк и как той управлява и оркестрира всички контейнери в клъстер.


Какво е Докер рояк?

Докер роякът е начин за работа с клъстер от Docker двигатели, оттук и името Swarm. Клъстерът от хокери в Докер работи в рояков режим, състоящ се от мениджъри и работници. Екземплярите на докер-двигателя, които участват в рояка, се наричат ​​възли.

Разгръщане на роево ниво на производство се състои от докер възли, разпределени на множество сървъри.

Защо да го използвате? – Оркестрация на контейнери

Когато работите в производствена среда, 100-те докер контейнери ще изпълняват множество приложения в него. Управлението на всички тези контейнери може да бъде голяма болка за всички инженери на DevOps; тук Докер рояк ви помага. Той управлява и оркестрира с лекота клъстера, изпълняващ множество докер контейнери.

По-долу са някои от неговите характеристики:

  • Висока наличност – цели да не предлага престой или прекъсване.
  • Балансиране на натоварването – разпределя автоматично ресурсите и заявките на други възли в клъстера, ако някой възел не успее.
  • Децентрализиран – множество административни възли работят в производствена среда; следователно клъстерът никога не зависи от един възел на мениджър.
  • Мащабируемост – С помощта на една команда рояк докер можете лесно да мащабирате или мащабирате контейнери в клъстера.

Orchestrate Докер контейнери

Сега, когато знаете основите на Docker Swarm, нека разгледаме пример за неговото изпълнение.

В този пример имам три машини, работещи в клъстер със следните подробности:

мениджър1: 192.168.56.104

работник1: 192.168.56.105

работник2: 192.168.56.102

За да инициализирате режима на роя в докер, изпълнете командата по-долу на възела на мениджъра. Флагът –advertise-addr се използва за реклама на самите възли, които могат да се присъединят към клъстера.

[Имейл защитен]: ~ $ docker рояк init – рекламиране-addr 192.168.56.104

Swarm инициализиран: текущият възел (lssbyfzuiuh3sye1on63eyixf) вече е мениджър.

За да добавите работник към този рой, изпълнете следната команда:

докер рояк се присъединява –приключен SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

За да добавите мениджър към този рояк, пуснете „мениджър на докер рояк присъединителен маркер“ и следвайте инструкциите.

Горната команда ще генерира маркер, който ще бъде използван от други възли за присъединяване към този клъстер. Копирайте командата с генерирания маркер и я изпълнете върху работните възли.

Изпълнение на маркера на възел Working1.

[Имейл защитен]: ~ $ docker swarm join –заключен SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Този възел се присъедини към роя като работник.

Изпълнение на маркера на възел Working2.

[Имейл защитен]: ~ $ docker swarm join –заключен SWMTKN-1-3h3d8qgvdlxi8tl1oqpfho9khx7i1t5nq7562s9gzojbcm9kr6-azy4rffrzou0nem9hxq4ro5am 192.168.56.104:2377

Този възел се присъедини към роя като работник.

Сега на възела на мениджъра можете да проверите кои възли работят в клъстера.

[Имейл защитен]: ~ $ docker възел ls

ID HOSTNAME STATUS УСТОЙЧИВОСТ НА ДОСТЪПНОСТТА СТАТУТ ДВИГАТЕЛ ВЕРСИЯ

lssbyfzuiuh3sye1on63eyixf * manager1 Готов активен лидер 18.09.6

utdr3dnngqf1oy1spupy1qlhu работник1 Готов активен 18.09.6

xs6jqp95lw4cml1i1npygt3cg работник2 Готов активен 18.09.6

Нека да изградим изображението на докер geekflare_mongodb, което използвахме в урока за Dockerfile.

docker build -t geekflare_mongodb .

Стартирайте контейнер с изображението на докера на MongoDB, като създадете услуга за роя. 27017 е номерът на порта, на който е изложена MongoDB.

[Имейл защитен]: ~ $ docker service create –name "Монго контейнер" -p 27017: 27017 geekflare_mongodb

image geekflare_mongodb: най-новите не могат да бъдат достъпни в системния регистър, за да се запише нейният дайджест. Всеки възел ще има достъп до geekflare_mongodb: последно независимо, възможно да доведе до различни възли, изпълняващи различни версии на изображението.

kok58xa4zi05psh3uy6s5x9e6

общ напредък: 1 от 1 задачи

1/1: бягане

провери: Услугата конвертирана

Проверете дали услугата за роеве на докери е започнала. MODE репликиран означава, че контейнерът е репликиран на всички възли в клъстера, а REPLICAS 1/1 означава, че в момента се изпълнява само една услуга рояк.

[Имейл защитен]: ~ $ docker service ls

ИД ИМЕ РЕЖИМ ЗА РЕПЛИКАЦИИ ЗА ИЗОБРАЖЕНИЕ

kok58xa4zi05 Mongo-Container се репликира 1/1 geekflare_mongodb: последно *: 27017->27,017 / TCP

Нека проверим на кой възел в клъстера работи тази единствена услуга. Работи се на възел manager1.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

jgqjo92rbq23 Mongo-Container.1 geekflare_mongodb: последен мениджър1 Работещ Работи преди около минута

Изпълнете командата docker ps, за да получите повече подробности за контейнера, който изпълнява тази услуга рояк.

[Имейл защитен]: ~ $ docker ps

ИМЕ НА КОНТАЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СЪЗДАДЕН ИМЕНА НА СТАТУТНИ ПОРТ

05d77e7b4850 geekflare_mongodb: най-късно   "/ bin / sh -c usr / bin /…"   Преди 2 минути нагоре 2 минути 27017 / tcp Mongo-Container.1.jgqjo92rbq23sv01hrufdigtx

Можете да стартирате услугата рояк в “Глобално” режим също вместо по подразбиране “репликиран” режим. Глобалният режим изпълнява една задача на услугата рояк на всички възли в клъстера.

Преди да пусна услугата в глобален режим, позволете ми да премахна съществуващия работещ контейнер.

[Имейл защитен]: ~ $ docker service rm Mongo-Container

Монго контейнер

Стартирайте услугата роя вътре в докер контейнер в глобален режим, като използвате флаг -mode.

[Имейл защитен]: ~ $ docker service create –name "Монго контейнер" -p 27017: 27017 –модулиране на глобален geekflare_mongodb

image geekflare_mongodb: най-новите не могат да бъдат достъпни в системния регистър, за да се запише нейният дайджест. Всеки възел ще има достъп до geekflare_mongodb: последно независимо, възможно да доведе до различни възли, изпълняващи различни версии на изображението.

mfw8dp0zylffppkllkcjl8391

общ напредък: 3 от 3 задачи

utdr3dnngqf1: работи

lssbyfzuiuh3: работи

xs6jqp95lw4c: работи

провери: Услугата конвертирана

Проверете дали рояк стартира в глобален режим. Тъй като в клъстера работят три възли (1 мениджър, 2 работници), затова броят на репликите е 3.

[Имейл защитен]: ~ $ docker service ls

ИД ИМЕ РЕЖИМ ЗА РЕПЛИКАЦИИ ЗА ИЗОБРАЖЕНИЕ

mfw8dp0zylff Mongo-Container global 3/3 geekflare_mongodb: най-късно *: 27017->27,017 / TCP

3 услуги се изпълняват сега през 3 възли, проверете го, като изпълните командата по-долу.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

zj2blvptkvj6 Mongo-Container.xs6jqp95lw4cml1i1npygt3cg geekflare_mongodb: последен работник2 Работещ Работещ Преди около минута

3eaweijbbutf Mongo-Container.utdr3dnngqf1oy1spupy1qlhu geekflare_mongodb: последен работник1 Работещ Работещ Преди около минута

yejg1o2oyab7 Mongo-Container.lssbyfzuiuh3sye1on63eyixf geekflare_mongodb: последен мениджър1 Работещ Работещ Преди около минута

След това, нека да покажа как можете да определите броя на репликите. Преди това ще премахна текущия контейнер, който работи.

[Имейл защитен]: ~ $ docker service rm Mongo-Container

Монго контейнер

Използвайте флаг -replicas в командата и споменете броя на репликите, които искате от услугата рояк. Например, искам да има две реплики на услугата рояк:

[Имейл защитен]: ~ $ docker service create –name "Монго контейнер" -p 27017: 27017 –replicas = 2 geekflare_mongodb

image geekflare_mongodb: най-новите не могат да бъдат достъпни в системния регистър, за да се запише нейният дайджест. Всеки възел ще има достъп до geekflare_mongodb: последно независимо, възможно е да доведе до различни възли, изпълняващи различни версии на изображението.

4yfl41n7sfak65p6zqwwjq82c

общ напредък: 2 от 2 задачи

1/2: бягане

2/2: бягане

провери: Услугата конвертирана

Проверете роялските услуги, които се изпълняват в момента. Можете да видите, че едната реплика работи на възел manager1, а другата на възел Working1.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

xukodj69h79q Mongo-Container.1 geekflare_mongodb: последен работник1 Тичане Работещ преди 9 секунди

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: последен мениджър1 Работещ Работещ преди 9 секунди

Отидете на възел Working1 и проверете дали контейнерът за докер изпълнява услугата рояк.

[Имейл защитен]: ~ $ docker ps

ИМЕ НА КОНТАЙНЕРА ИЗОБРАЖЕНИЕ КОМАНДА СЪЗДАДЕН ИМЕНА НА СТАТУТНИ ПОРТИ

5042b7f161cb geekflare_mongodb: най-късно   "/ bin / sh -c usr / bin /…"   Преди около минута нагоре За около минута 27017 / tcp Mongo-Container.1.xukodj69h79q3xf0pouwm7bwv

За да спрете този контейнер, изпълнете командата по-долу.

[Имейл защитен]: ~ $ docker stop 5042b7f161cb

5042b7f161cb

Сега от възел manager1, ако проверите кои всички възли изпълняват услугата, ще видите нейното изпълнение на възел manager1 и възел Working2. ТЕКУЩОТО СЪСТОЯНИЕ на възела Working1 е Shutdown (докато спряхме контейнера, изпълняващ услугата). Но тъй като трябва да работят две реплики на тази услуга, на работник 2 е стартирана друга услуга.

Ето как постигате висока наличност, използвайки докер рояк.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: последен работник2 Работещ Работещ преди 30 секунди

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: последният работник1 Изключването не бе успешно преди 38 секунди    "задача: ненулев изход (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: последен мениджър1 Работещ Работещ преди 3 минути

Много лесно е да мащабирате нагоре или надолу контейнери за докери. Командата по-долу ще увеличи мащаба на контейнера на mongo до 5.

[Имейл защитен]: ~ скала за обслужване на $ docker Mongo-Container = 5

Монго-контейнер, мащабиран до 5

общ напредък: 5 от 5 задачи

1/5: бягане

2/5: бягане

3/5: бягане

4/5: бягане

5/5: бягане

провери: Услугата конвертирана

Проверете колко реплики на контейнер Монго работи сега, трябва да са 5.

[Имейл защитен]: ~ $ docker service ls

ИД ИМЕ РЕЖИМ ЗА РЕПЛИКАЦИИ ЗА ИЗОБРАЖЕНИЕ

4yfl41n7sfak Mongo-Container се копира 5/5 geekflare_mongodb: най-късно *: 27017->27,017 / TCP

Проверете къде работят тези 5 реплики в клъстера. 1 реплика работи на възел manager1 и 2 реплики и на двете работни възли.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: последен работник2 Тичане Работещ преди 2 минути

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: последният работник1 Изключването не бе успешно преди 2 минути     "задача: ненулев изход (137)"

e66zllm0foc8 Mongo-Container.2 geekflare_mongodb: последен мениджър1 Работещ Работещ преди 5 минути

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: последен работник2 Работещ Работещ преди 47 секунди

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: последен работник1 Работещ Работещ преди 46 секунди

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: последен работник1 Тичане Работещ преди 44 секунди

Ако не искате вашите услуги да се изпълняват на възел (и) на мениджър и искате да го запазите само за управление на възлите, можете да източите мениджърския възел.

[Имейл защитен]: ~ $ docker node update – мениджър за наличност на източник1

Manager1

Проверете наличието на мениджърския възел.

[Имейл защитен]: ~ $ docker възел ls

ID HOSTNAME STATUS УСТОЙЧИВОСТ НА ДОСТЪПНОСТТА СТАТУТ ДВИГАТЕЛ ВЕРСИЯ

lssbyfzuiuh3sye1on63eyixf * manager1 Ready Drain Leader 18.09.6

utdr3dnngqf1oy1spupy1qlhu работник1 Готов активен 18.09.6

xs6jqp95lw4cml1i1npygt3cg работник2 Готов активен 18.09.6

Ще видите, че услугите вече не се изпълняват на мениджърския възел; те са разпространени по работните възли в клъстера.

[Имейл защитен]: ~ $ docker service ps Mongo-Container

ID ИМЕ ИЗОБРАЖЕНИЕ НАЗАД ЖЕЛАНА ДЪРЖАВНА ТЕКУЩА ДЪРЖАВНА ГРЕШКА ПОРТ

cd2rlv90umej Mongo-Container.1 geekflare_mongodb: последен работник2 Тичане Работещ преди 5 минути

xukodj69h79q \ _ Mongo-Container.1 geekflare_mongodb: последният работник1 Изключването не бе успешно преди 5 минути      "задача: ненулев изход (137)"

qo405dheuutj Mongo-Container.2 geekflare_mongodb: последен работник1 Работещ Работещ Преди 41 секунди

e66zllm0foc8 \ _ Mongo-Container.2 geekflare_mongodb: последен мениджър1 Изключване Изключване преди 44 секунди

qmp0gqr6ilxi Mongo-Container.3 geekflare_mongodb: последен работник2 Тичане Работещ преди 3 минути

9ddrf4tsvnu2 Mongo-Container.4 geekflare_mongodb: последен работник1 Работещ Работещ преди 3 минути

e9dhoud30nlk Mongo-Container.5 geekflare_mongodb: последен работник1 Тичане Работещ преди 3 минути

Това беше всичко за Docker Swarm и как да оркестрирате контейнери в режим докер рояк. Изпробвайте ги във вашата непроизводствена среда, за да добиете представа как работи.

ЕТИКЕТИ:

  • докер

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map