Създайте Docker Swarm на Alpine Linux 3.9.0

Въведение

Това ръководство ще ви покаже как да създадете и конфигурирате Docker рояк, използвайки множество Alpine Linux 3.9.0 сървъри и Portainer. Моля, имайте предвид, че Vultr предлага приложение Docker с едно щракване, което в момента поддържа както CentOS 7 x64, така и Ubuntu 16.04 x64.

Предпоставки

За да започнете, ще ви трябват поне два VC2 сървъра, работещи с Alpine Linux 3.9.0. В рамките на вашия Docker рояк, един от тези сървъри ще действа като manager node- взаимодействие с външни мрежи и делегиране на задачи на работни възли. След това другият сървър ще действа като worker node- изпълняващ задачи, делегирани му от мениджърския възел.

Имайте предвид, че можете да стартирате повече от два сървъра, ако приложението ви изисква резервиране и/или повече изчислителна мощност и стъпките, предоставени в това ръководство, ще продължат да важат.

Разгръщане

Посетете интерфейса за внедряване на сървъра Vultr .

Уверете се, че Vultr Cloud (VC2)разделът е избран в горната част на страницата.

Можете да изберете произволно местоположение от Server Locationсекцията, но всички сървъри трябва да са на едно и също място , в противен случай няма да е възможно да се разположи Docker рояк към тях.

Изберете ISO Libraryраздела на Server Typeсекцията и изберете Alpine Linux 3.9.0 x86_64изображението.

Изберете подходяща опция от Server Sizeсекцията. Това ръководство ще използва размера на SSD сървъра от 25 GB, но това може да е недостатъчно, за да отговори на изискванията за ресурси на вашето приложение. Въпреки че Vultr улеснява надграждането на размера на сървъра, след като той вече е бил стартиран, все пак трябва внимателно да прецените кой размер на сървъра трябва да работи оптимално вашето приложение.

В Additional Featuresсекцията трябва да изберете Enable Private Networkingопцията. Докато другите опции не се изискват, за да следвате това ръководство, трябва да помислите дали всяка от тях има смисъл в контекста на вашето приложение.

Ако преди това сте активирали Multiple Private Networksопцията във вашия акаунт, ще трябва да изберете съществуваща или да създадете нова частна мрежа за вашите сървъри. Ако не сте го активирали, можете да игнорирате този раздел. За информация относно ръчното конфигуриране на частни мрежи вижте това ръководство .

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

В най-долната част на страницата трябва да въведете Server Qtyпоне две. Както бе споменато по-рано, може да имате нужда от повече от два сървъра, но два са достатъчни, за да следвате това ръководство.

Накрая в Server Hostname & Labelсекцията въведете смислени и запомнящи се имена на хостове и етикети за всеки сървър. За целите на това ръководство, името на хоста и етикета на първия сървър ще бъде docker-managerи Docker Manager, respectively- и docker-workerи Docker Workerза втория, съответно.

След двойна проверка на всичките си конфигурации, можете да щракнете върху Deploy Nowбутона в долната част на страницата, за да стартирате сървърите си.

Инсталирайте Alpine Linux 3.9.0 на сървърите

Тъй като сте избрали ОС от ISO библиотеката на Vultr, ще трябва ръчно да инсталирате и конфигурирате Alpine Linux 3.9.0 на всеки сървър.

След като дадете на Vultr минута или две, за да разпредели вашите сървъри, щракнете върху иконата с тройна точка more optionsза Docker Managerсървъра в интерфейса за управление на сървъра и след това изберете View Consoleопцията.

Трябва да бъдете пренасочени към конзола с подкана за влизане. Ако не, моля, изчакайте още минута, докато Vultr завърши разгръщането на вашите сървъри.

В тази подкана за влизане въведете rootкато потребителско име. Версията на живо на Alpine Linux 3.9.0 (което в момента работят на вашите сървъри) не изисква от суперпотребителя да въвежда парола при влизане.

След като влезете успешно в основния акаунт, ще видите съобщение за добре дошли, последвано от подкана за обвивка, която изглежда по следния начин:

localhost:~# 

За да стартирате инсталатора на Alpine Linux, въведете следната команда:

# setup-alpine

Първо изберете подходяща клавиатурна подредба. Това ръководство ще използва usоформлението и варианта.

Когато задавате името на хоста, изберете същото име на хост, което сте задали за този сървър по време на разполагането. Ако сте следвали точно това ръководство, името на хоста трябва да бъде docker-manager.

Трябва да са налични два мрежови интерфейса: eth0и eth1. Ако виждате само eth0, това означава, че не сте конфигурирали правилно частната мрежа на вашите сървъри. Инициализирайте eth0с помощта dhcpи инициализирайте eth1с помощта на частния IP адрес, мрежова маска и шлюз, който този сървър е бил назначен по време на разполагането. Можете да получите достъп до тези подробности от интерфейса за настройки на вашия сървър. Когато бъдете подканени, не извършвайте ръчна конфигурация на мрежата.

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

Ако възнамерявате да използвате HTTP/FTP прокси, въведете неговия URL, в противен случай не задавайте прокси URL.

Изберете NTP клиент за управление на синхронизирането на системния часовник. Това ръководство ще използва busybox.

Когато бъдете помолени да използвате огледало на хранилище на пакети, изберете го изрично, като въведете неговия номер; автоматично откриване и избор на най-бързия чрез въвеждане f; или ръчно редактирайте конфигурационния файл на хранилището, като въведете e, което не се препоръчва, освен ако не сте запознати с Alpine Linux. Това ръководство ще използва първото огледало.

Ако планирате да използвате SSH за достъп до вашите сървъри или за хостване на SSH базирана файлова система, изберете SSH сървър, който да използвате. Това ръководство ще използва openssh.

Когато бъдете подканени за използване на диск, изберете диск vdaкато sysтип.

Alpine Linux 3.9.0 вече трябва да бъде инсталиран на вашия сървър. Повторете този процес за всички други сървъри, които сте разположили по-рано, като се уверите, че замените правилните стойности за името на хоста и eth1мрежовия интерфейс.

Конфигурация на сървъра след инсталиране

В този момент вашите сървъри все още работят с жива ISO версия на Alpine Linux 3.9.0. За да стартирате от инсталацията на SSD, посетете интерфейса за настройки на вашия сървър, отидете до Custom ISOзаписа в страничното меню и щракнете върху Remove ISOбутона. Това трябва да рестартира сървъра. Ако не стане, рестартирайте ръчно.

След като сървърът приключи с рестартирането, върнете се обратно към уеб конзолата за сървъра Docker Manager.

Влезте в root акаунта, като използвате паролата, която сте задали по-рано по време на инсталационния процес.

Активирайте хранилището за пакети на общността, като декоментирате третия ред на /etc/apk/repositoriesизползване на vi. Можете да активирате крайните и тестовите хранилища по подобен начин, но те не са длъжни да следват това ръководство.

Синхронизирайте индекса на локалния пакет на сървъра с отдалеченото хранилище, което сте избрали по-рано, като въведете следната команда на обвивката:

# apk update

След това надстройте остарелите пакети:

# apk upgrade

Както преди, повторете този процес на конфигуриране за всеки сървър, който сте разположили по-рано.

Инсталирайте Docker на вашите сървъри

Преди да инсталирате самия пакет Docker, може да искате да създадете отделен dockerпотребител. Можете да направите това с помощта на следната команда:

# adduser docker

Забележка: Този нов потребител и всички потребители, добавени към новата dockerгрупа, ще имат root привилегии, след като пакетът Docker бъде инсталиран. Вижте следния проблем от хранилището на Moby Github:

Due to the --privileged in docker, anyone added to the 'docker' group is root equivalent. Anyone in the docker group has a back door around all privilege escalation policy and auditing on the system.

This is different from someone being able to run running sudo to root, where they have policy, and audit applied to them.

Ако искате да дадете sudo разрешение на dockerпотребителя, първо инсталирайте sudoпакета:

# apk add sudo

След това създайте sudoгрупа:

# addgroup sudo

Накрая добавете dockerпотребителя към sudoгрупата:

# adduser docker sudo

Сега можете да следвате стъпка 4 от това ръководство, за да завършите конфигурирането на sudo.

В този момент сте готови да инсталирате пакета Docker. Имайте предвид, че не е строго необходимо да имате отделен dockerпотребител с възможност за sudo за инсталиране и конфигуриране на Docker, но това ръководство следва тази конвенция.

Инсталирайте пакета Docker със следната команда:

# apk add docker

След това активирайте скрипта за инициализиране на Docker:

# rc-update add docker

Накрая стартирайте демона Docker:

# rc-service docker start

Можете да проверите дали Docker работи с тази команда:

# docker info

Както и последния път, повторете този процес на инсталиране на Docker за всеки сървър, който сте разположили в началото.

Инициализирайте Docker рояк с един мениджърски възел и един работен възел

След като приключите с цялата тази настройка, най-накрая сте готови да създадете рояка на Docker.

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

Отидете обратно до уеб конзолата на вашия Docker Managerсървър. Вие ще конфигурирате този сървър като мениджърски възел във вашия рояк. Ако сте избрали да създадете dockerпотребителя по-рано, влезте с този акаунт, а не със суперпотребителя.

Въведете следната команда, но заменете 192.0.2.1с частния (не публичен), IP адрес, Docker Managerкойто е назначен на вашия сървър:

$ docker swarm init --advertise-addr 192.0.2.1

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

Добавете работен възел

Сега отидете до уеб конзолата на вашия Docker Workerсървър, като влезете с dockerпотребителя, ако сте го създали.

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

$ docker swarm join --token SWMTKN-1-XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-XXXXXXXXXXXXXXXXXXXXXXXXX 192.0.2.1:2377

Docker ще изведе дали възелът е успял да се присъедини към рояка. Ако срещнете проблеми с добавянето на работни възли към рояка, проверете отново конфигурацията на вашата частна мрежа и вижте това ръководство за отстраняване на неизправности.

Ако сте разположили повече от два сървъра в началото, можете да добавите останалите като работни възли към вашия рояк, като използвате командата по-горе, увеличавайки количеството ресурси, налични за вашето приложение. Като алтернатива можете да добавите допълнителни мениджърски възли, но това е извън обхвата на това ръководство.

Разположете Portainer със SSL, за да управлявате своя Docker рояк

В този момент вашият Docker рояк е готов за употреба. Можете обаче по избор да стартирате стек на Portainer на мениджърския възел във вашия рояк. Portainer предлага удобен уеб интерфейс за управление на вашия рояк и възлите в него.

Сега е време да създадете група защитна стена за вашия рояк. Освен ако приложението ви изрично не го изисква, излагайте портове само на вашите мениджърски възли . Излагането на портове на работните ви възли без внимателно обмисляне може да доведе до уязвимости.

Отидете до интерфейса за управление на защитната стена и създайте нова група защитна стена. Вашето приложение трябва да диктува кои портове да изложи, но трябва най-малкото да 9000разкриете порт за Portainer. Приложете тази група защитна стена към Docker Managerсървъра.

Въпреки че не е задължително, защитата на Portainer със SSL е силно препоръчителна. В името на това ръководство ще използвате само самоподписан OpenSSL сертификат, но трябва да помислите за използването на Let's Encrypt в производството.

Отидете до уеб конзолата на Docker Managerсървъра, влезте с dockerпотребителя и използвайте следните команди, за да генерирате самоподписан OpenSSL сертификат:

$ mkdir ~/certs
$ openssl genrsa -out ~/certs/portainer.key 2048
$ openssl req -new -x509 -sha256 -key ~/certs/portainer.key -out ~/certs/portainer.pem -days 3650

Създайте нов файл, ~/portainer-agent-stack.yml, със следното съдържание:

version: '3.2'

services:
  agent:
    image: portainer/agent
    environment:
      AGENT_CLUSTER_ADDR: tasks.agent
      CAP_HOST_MANAGEMENT: 1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
      - /:/host
    networks:
      - agent_network
    deploy:
      mode: global

  portainer:
    image: portainer/portainer
    command: -H tcp://tasks.agent:9001 --tlsskipverify --ssl --sslcert /certs/portainer.pem --sslkey /certs/portainer.key
    ports:
      - target: 9000
        published: 9000
        protocol: tcp
        mode: host
    volumes:
      - portainer_data:/data
      - /home/docker/certs:/certs
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

След като промените този конфигурационен файл на стека на Docker, за да отговаря на вашите изисквания, можете да го разгърнете:

$ docker stack deploy --compose-file ~/portainer-agent-stack.yml portainer

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

$ docker ps

Ще видите два контейнера с изображенията portainer/portainer:latestи portainer/agent:latest, като потвърждавате, че Portainer е стартирал правилно.

Вече можете да конфигурирате и управлявате своя Docker рояк, като посетите публичния IP адрес на вашия Docker Managerсървър на порт, 9000използвайки HTTPS.


Ето как да проверите Hyper-V контейнерите в Windows 10 Insider

Ето как да проверите Hyper-V контейнерите в Windows 10 Insider

Microsoft обясни в нова публикация в блога как Windows Insiders могат да тестват Hyper-V контейнери на Windows 10, ново решение за виртуализация, което позволява на приложенията да работят, без да засягат останалата част от вашата операционна система.

Как да инсталирате Harbor на CentOS 7

Как да инсталирате Harbor на CentOS 7

Harbor е регистър на сървър от корпоративен клас с отворен код, който съхранява и разпространява изображения на Docker. Harbour разширява Docker Distribution с отворен код b

Инсталирайте Rancher OS чрез iPXE

Инсталирайте Rancher OS чрез iPXE

Rancher OS е много лека Linux дистрибуция, изградена около Docker. Самата ОС тежи около 20MB. Този урок ще ви накара да работите с него

На CoreOS настройте свой собствен регистър на Docker

На CoreOS настройте свой собствен регистър на Docker

Всички познаваме и обичаме Docker, платформа за създаване, управление и разпространение на контейнери за приложения на множество машини. Docker Inc. предоставя услуга t

Инсталиране на docker-compose на CoreOS

Инсталиране на docker-compose на CoreOS

Тази статия обяснява как да инсталирате docker-compose на CoreOS. В CoreOS папката /usr/ е неизменна, така че стандартният път /usr/local/bin е недостъпен за

Инсталирайте Rancher на CentOS 7

Инсталирайте Rancher на CentOS 7

Използване на различна система? Въведение Rancher е платформа с отворен код за управление на контейнери и изграждане на частна услуга за контейнери. Rancher е база

Инсталирайте Docker CE на Ubuntu 18.04

Инсталирайте Docker CE на Ubuntu 18.04

Въведение Docker е приложение, което ни позволява да разгръщаме програми, които се изпълняват като контейнери. Той е написан на популярния език за програмиране Go

Създайте Docker Swarm на Alpine Linux 3.9.0

Създайте Docker Swarm на Alpine Linux 3.9.0

Въведение Това ръководство ще ви покаже как да създадете и конфигурирате Docker рояк, използвайки множество Alpine Linux 3.9.0 сървъри и Portainer. Моля, имайте предвид, че

Разгръщане на PHP приложение с помощта на Docker-compose

Разгръщане на PHP приложение с помощта на Docker-compose

PHP приложенията обикновено се съставят от уеб сървър, система за релационна база данни и самия езиков интерпретатор. В този урок ще бъдем лостове

Баланс на натоварването с Docker

Баланс на натоварването с Docker

Когато изпълнявате уеб приложение, обикновено искате да извлечете максимума от ресурсите си, без да се налага да конвертирате софтуера си за използване на многонишков

Разгръщане на приложение Node.js с помощта на Docker

Разгръщане на приложение Node.js с помощта на Docker

Тази статия ще ви покаже как да разположите вашето приложение Node в Docker контейнер. Забележка: Този урок предполага, че имате инсталиран и прочетен Docker

Инсталиране на Docker CE на CentOS 7

Инсталиране на Docker CE на CentOS 7

Docker контейнерната технология ви позволява да стартирате приложения в специфична и изолирана среда. Docker Community Edition (CE) е новото име за fre

Внедряване на Kubernetes с Kubeadm на CentOS 7

Внедряване на Kubernetes с Kubeadm на CentOS 7

Общ преглед Тази статия има за цел да ви помогне да стартирате и стартирате Kubernetes клъстер с kubeadm за нула време. Това ръководство ще разгръща два сървъра на

Инсталиране на Docker на CentOS 7

Инсталиране на Docker на CentOS 7

Използване на разл��чна система? Docker е приложение, което позволява внедряване на софтуер във виртуални контейнери. Написано е в програмата Go

Инсталиране на Docker CE на Debian 9

Инсталиране на Docker CE на Debian 9

Използване на различна система? Въведение Docker е приложение, което позволява внедряване на софтуер във виртуални контейнери. Беше написано в Г

Започнете със SQL Server 2017 (MS-SQL) на CentOS 7 с Docker

Започнете със SQL Server 2017 (MS-SQL) на CentOS 7 с Docker

Предпоставки Docker engine 1.8+. Минимум 4GB дисково пространство. Минимум 4GB RAM. Стъпка 1. Инсталирайте Docker За да инсталирате SQL-Server, Docker трябва

Залепваща сесия с Docker Swarm (CE) на Debian 9

Залепваща сесия с Docker Swarm (CE) на Debian 9

Използване на различна система? Въведение Docker Swarm превръща вашите отделни сървъри в клъстер от компютри; улесняване на мащабирането, висока достъпност

Два инструмента за графично управление на Docker: DockerUI и корабостроителница

Два инструмента за графично управление на Docker: DockerUI и корабостроителница

С помощта на приложението Vultr Docker можете лесно да разположите Docker на вашия сървър на Vultr. Междувременно можете да улесните задачата за управление на Docker

Инсталирайте Rancher Server на RancherOS

Инсталирайте Rancher Server на RancherOS

Общ преглед RancherOS е невероятно лека операционна система (само около 60 MB), която изпълнява системен Docker демон като PID 0 за стартиране на системни услуги

Първи стъпки с Kubernetes на CentOS 7

Първи стъпки с Kubernetes на CentOS 7

Kubernetes е платформа с отворен код, разработена от Google за управление на контейнерни приложения в клъстер от сървъри. Тя се основава на едно десетилетие и

Възходът на машините: Реални приложения на AI

Възходът на машините: Реални приложения на AI

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

DDOS атаки: кратък преглед

DDOS атаки: кратък преглед

Вие също сте жертва на DDOS атаки и сте объркани относно методите за превенция? Прочетете тази статия, за да разрешите вашите запитвания.

Чудили ли сте се как хакерите печелят пари?

Чудили ли сте се как хакерите печелят пари?

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

Революционни изобретения на Google, които ще улеснят живота ви.

Революционни изобретения на Google, които ще улеснят живота ви.

Искате ли да видите революционни изобретения на Google и как тези изобретения промениха живота на всяко човешко същество днес? След това прочетете в блога, за да видите изобретенията на Google.

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Friday Essential: Какво се случи с колите, задвижвани от изкуствен интелект?

Концепцията за самоуправляващи се автомобили да тръгват по пътищата с помощта на изкуствен интелект е мечта, която имаме от известно време. Но въпреки няколкото обещания, те не се виждат никъде. Прочетете този блог, за да научите повече…

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

Технологична сингулярност: далечно бъдеще на човешката цивилизация?

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

Еволюция на съхранението на данни – инфографика

Еволюция на съхранението на данни – инфографика

Методите за съхранение на данните може да се развиват от раждането на данните. Този блог обхваща развитието на съхранението на данни на базата на инфографика.

Функционалности на референтните архитектурни слоеве за големи данни

Функционалности на референтните архитектурни слоеве за големи данни

Прочетете блога, за да разберете различни слоеве в архитектурата на големи данни и техните функционалности по най-простия начин.

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

6 невероятни предимства от наличието на интелигентни домашни устройства в живота ни

В този дигитално задвижван свят устройствата за интелигентен дом се превърнаха в решаваща част от живота. Ето няколко невероятни предимства на интелигентните домашни устройства за това как те правят живота ни струващ и по-опростен.

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Актуализацията на допълнението на macOS Catalina 10.15.4 причинява повече проблеми, отколкото решава

Наскоро Apple пусна macOS Catalina 10.15.4 допълнителна актуализация за отстраняване на проблеми, но изглежда, че актуализацията причинява повече проблеми, водещи до блокиране на mac машини. Прочетете тази статия, за да научите повече