Alpine Linux 3.9.0에서 Docker Swarm 생성

소개

이 안내서는 여러 개의 Alpine Linux 3.9.0 서버와 Portainer를 사용하여 Docker swarm을 생성하고 구성하는 방법을 보여줍니다. Vultr은 현재 CentOS 7 x64와 Ubuntu 16.04 x64를 모두 지원 하는 원 클릭 도커 앱 을 제공합니다 .

전제 조건

시작하려면 Alpine Linux 3.9.0을 실행하는 VC2 서버가 두 대 이상 필요합니다. Docker swarm 내에서 이러한 서버 중 하나는 manager node외부 네트워크와 인터페이스하고 작업자 노드에 작업을 위임 하는 역할을합니다 . 그런 다음 다른 서버는 worker node관리자 노드에 의해 위임 된 작업을 수행합니다.

응용 프로그램에 중복성 및 / 또는 더 많은 컴퓨팅 성능이 필요한 경우 두 개 이상의 서버를 시작할 수 있으며이 가이드에 제공된 단계가 계속 적용됩니다.

전개

Vultr 서버 배포 인터페이스를 방문하십시오 .

Vultr Cloud (VC2)페이지 상단에서 탭이 선택되어 있는지 확인 하십시오.

Server Location섹션 에서 임의의 위치를 ​​선택할 수 있지만 모든 서버는 동일한 위치에 있어야합니다 . 그렇지 않으면 Docker 스웜을 배치 할 수 없습니다.

섹션 의 ISO Library탭을 Server Type선택하고 Alpine Linux 3.9.0 x86_64이미지를 선택하십시오 .

Server Size섹션 에서 적절한 옵션을 선택 하십시오. 이 가이드는 25GB SSD 서버 크기를 사용하지만 응용 프로그램의 리소스 요구 사항을 충족하기에는 불충분 할 수 있습니다. Vultr을 사용하면 서버가 이미 시작된 후 서버 크기를 쉽게 업그레이드 할 수 있지만 응용 프로그램이 최적으로 수행해야하는 서버 크기를 신중하게 고려해야합니다.

에서 Additional Features섹션, 당신이 선택해야합니다 Enable Private Networking옵션을 선택합니다. 이 안내서를 따르는 데 다른 옵션이 필요하지는 않지만 응용 프로그램의 맥락에서 각 옵션이 적합한 지 여부를 고려해야합니다.

이전 Multiple Private Networks에 계정 에서 옵션을 활성화 한 경우 서버를 위해 기존의 기존 네트워크를 선택하거나 새 개인 네트워크를 만들어야합니다. 활성화하지 않은 경우이 섹션을 무시할 수 있습니다. 개인 네트워크 수동 구성에 대한 자세한 내용은 이 안내서를 참조하십시오 .

Firewall Group지금 은 섹션을 건너 뛰십시오 . Docker swarm에서 관리자 노드 역할을하는 서버 만 노출 된 포트가 필요하며 서버 배치 후에 구성해야합니다.

페이지 맨 아래 Server Qty에 적어도 2 개를 입력해야합니다 . 앞에서 언급했듯이 둘 이상의 서버가 필요할 수 있지만이 가이드를 따르기에 충분합니다.

마지막으로, Server Hostname & Label섹션에서 각 서버에 대해 의미 있고 기억하기 쉬운 호스트 이름과 레이블을 입력하십시오. 이 설명서의 목적을 위해, 제 서버의 호스트 이름과 라벨 것 docker-managerDocker Manager,과 respectively- docker-workerDocker Worker각각 초.

모든 구성을 다시 확인한 후 Deploy Now페이지 하단의 버튼 을 클릭 하여 서버를 시작할 수 있습니다.

서버에 Alpine Linux 3.9.0 설치

Vultr의 ISO 라이브러리에서 OS를 선택 했으므로 각 서버에 Alpine Linux 3.9.0을 수동으로 설치하고 구성해야합니다.

Vultr에 1 분 또는 2 분 동안 서버를 할당 한 후 서버 관리 인터페이스 에서 서버 의 3 점 more options아이콘을 클릭 한 다음 옵션 을 선택하십시오 .Docker ManagerView Console

로그인 프롬프트가 표시된 콘솔로 리디렉션되어야합니다. 그렇지 않은 경우 Vultr가 서버 배치를 완료 할 때까지 1 분 정도 기다리십시오.

해당 로그인 프롬프트 root에서 사용자 이름으로 입력하십시오 . 서버에서 현재 실행중인 Alpine Linux 3.9.0의 라이브 버전에서는 로그인 할 때 수퍼 유저가 비밀번호를 입력하지 않아도됩니다.

루트 계정에 성공적으로 로그인하면 시작 메시지와 함께 다음과 같은 셸 프롬프트가 나타납니다.

localhost:~# 

Alpine Linux 설치 프로그램을 시작하려면 다음 명령을 입력하십시오.

# setup-alpine

먼저 적절한 키보드 레이아웃을 선택하십시오. 이 가이드는 us레이아웃과 변형을 사용합니다 .

호스트 이름을 설정할 때 배포 중에이 서버에 설정 한 것과 동일한 호스트 이름을 선택하십시오. 이 안내서를 정확히 따른다면 호스트 이름은이어야합니다 docker-manager.

두 개의 네트워크 인터페이스를 사용할 수 있어야합니다 : eth0eth1. 이 표시 만되면 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네트워크 인터페이스에 올바른 값을 대체하십시오 .

설치 후 서버 구성

이 시점에서 서버는 여전히 Alpine Linux 3.9.0의 라이브 ISO 버전을 실행하고 있습니다. SSD 설치로 부팅하려면 서버의 설정 인터페이스를 방문하여 Custom ISO사이드 메뉴 항목으로 이동 한 후 Remove ISO버튼을 클릭하십시오 . 서버를 재부팅해야합니다. 그렇지 않은 경우 수동으로 재부팅하십시오.

서버 재부팅이 완료되면 서버의 웹 콘솔로 돌아갑니다 Docker Manager.

설치 과정에서 이전에 설정 한 비밀번호를 사용하여 루트 계정에 로그인하십시오.

세 번째 줄의 주석을 해제하여 지역 사회 패키지 저장소 사용을 /etc/apk/repositories사용하여 vi. Edge 및 테스트 리포지토리를 비슷한 방식으로 활성화 할 수 있지만이 가이드를 따를 필요는 없습니다.

다음 쉘 명령을 입력하여 서버의 로컬 패키지 색인을 이전에 선택한 원격 저장소와 동기화하십시오.

# apk update

그런 다음 오래된 패키지를 업그레이드하십시오.

# apk upgrade

이전과 같이 이전에 배포 한 각 서버에 대해이 구성 프로세스를 반복하십시오.

서버에 Docker 설치

Docker 패키지 자체를 설치하기 전에 별도의 docker사용자 를 만들 수 있습니다 . 다음 명령을 사용하여이를 수행 할 수 있습니다.

# adduser docker

참고 : Docker 패키지가 설치되면 이 새 사용자와 새 docker그룹에 추가 된 모든 사용자에게 루트 권한이 부여됩니다. Moby Github 저장소에서 다음 문제 를 참조하십시오 .

--privileged도커 로 인해 'docker'그룹에 추가 된 사람은 모두 루트에 해당합니다. 도커 그룹의 모든 사람은 시스템에 대한 모든 권한 에스컬레이션 정책 및 감사에 대한 백도어를 가지고 있습니다.

이는 누군가가 sudo to root를 실행하여 정책을 적용하고 감사를 적용하는 것과는 다릅니다.

docker사용자 에게 sudo 권한을 부여 하려면 먼저 sudo패키지를 설치하십시오 .

# apk add sudo

그런 다음 sudo그룹을 작성하십시오 .

# addgroup sudo

마지막으로 docker사용자를 sudo그룹에 추가하십시오 .

# adduser docker sudo

이제이 안내서의 4 단계에 따라 sudo 구성을 완료 할 수 있습니다 .

이제 Docker 패키지를 설치할 준비가되었습니다. dockerDocker를 설치하고 구성하기 위해 별도의 sudo 가능 사용자 가 반드시 필요 하지는 않지만이 안내서는 해당 규칙을 따릅니다.

다음 명령으로 Docker 패키지를 설치하십시오.

# apk add docker

그런 다음 Docker init 스크립트를 활성화하십시오.

# rc-update add docker

마지막으로 Docker 데몬을 시작하십시오.

# rc-service docker start

이 명령으로 Docker가 실행 중인지 확인할 수 있습니다.

# docker info

마지막으로, 처음에 배치 한 각 서버에 대해이 Docker 설치 프로세스를 반복하십시오.

하나의 관리자 노드와 하나의 작업자 노드로 Docker swarm을 초기화하십시오.

모든 설정이 완료되면 Docker swarm을 만들 준비가 된 것입니다.

스웜 생성 및 관리자 노드 추가

Docker Manager서버 의 웹 콘솔로 다시 이동하십시오 . 이 서버는 웜에서 관리자 노드로 구성합니다. docker이전에 사용자 를 작성하기로 선택한 경우 수퍼 유저가 아닌 해당 계정을 사용하여 로그인하십시오.

다음 명령을 입력하되 서버에 할당 된 192.0.2.1개인 (공용 아님) IP 주소로 바꾸 십시오 Docker Manager.

$ docker swarm init --advertise-addr 192.0.2.1

Docker는 개인 네트워크의 다른 서버에서 실행할 수있는 ���령을 표시 하여이 새로운 떼에 작업자 노드로 추가합니다. 이 명령을 저장하십시오.

작업자 노드 추가

이제 Docker Worker서버 의 웹 콘솔로 이동 하여 docker사용자가 작성한 경우 로그인 하십시오.

이 서버를 방금 생성 한 떼에 작업자 노드로 추가하려면 swarm creation 명령의 출력에서 ​​저장 한 명령을 실행하십시오. 다음과 유사합니다.

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

Docker는 노드가 떼에 합류 할 수 있는지 여부를 출력합니다. 웜에 작업자 노드를 추가하는 데 문제가 발생하면 개인 네트워크 구성을 다시 확인 하고이 안내서 에서 문제 해결을 참조하십시오 .

처음에 두 대 이상의 서버를 배포 한 경우 위 명령을 사용하여 나머지를 작업자 노드로 웜에 추가하여 응용 프로그램에서 사용할 수있는 리소스의 양을 늘릴 수 있습니다. 또는 추가 관리자 노드를 추가 할 수 있지만이 안내서의 범위를 벗어납니다.

Docker 스웜을 관리하기 위해 SSL을 사용하여 Portainer 배포

이제 Docker swarm을 사용할 준비가되었습니다. 그러나 선택적으로 웜의 관리자 노드에서 Portainer 스택을 시작할 수 있습니다. Portainer는 웜과 그 안의 노드를 관리하기위한 편리한 웹 인터페이스를 제공합니다.

이제 떼를위한 방화벽 그룹을 만들 차례입니다. 응용 프로그램에 특별히 필요한 경우가 아니면 관리자 노드의 포트만 노출하십시오 . 신중하게 고려하지 않고 작업자 노드에 포트를 노출하면 취약점이 발생할 수 있습니다.

방화벽 관리 인터페이스로 이동하여 새 방화벽 그룹을 작성하십시오. 응용 프로그램은 노출 할 포트를 지정해야하지만 최소한 9000Portainer의 노출 포트 를 지정해야합니다. 이 방화벽 그룹을 Docker Manager서버에 적용하십시오 .

필수는 아니지만 SSL을 사용하여 Portainer를 보호하는 것이 좋습니다. 이 가이드를 위해 자체 서명 된 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에 1 ~ 2 분 정도 시간을 준 후 다음 명령을 실행하여 스택을 배포하십시오.

$ docker ps

당신은 이미지 두 개의 컨테이너를 볼 수 portainer/portainer:latestportainer/agent:latestPortainer이 제대로 시작되었는지 확인.

이제 HTTPS를 사용하여 Docker Manager포트에서 서버 의 공용 IP 주소를 방문하여 Docker swarm을 구성하고 관리 할 수 ​​있습니다 9000.



Leave a Comment

Vultr에서 BGP 구성

Vultr에서 BGP 구성

Vultr BGP 설정을 위한 단계별 튜토리얼. ASN 할당부터 IP 라우팅 구성, BIRD 데몬 설정, FreeBSD 특이사항 및 실전 문제 해결 팁 7가지 포함한 최종 가이드

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WsgiDAV를 사용하여 Debian 10에 WebDAV 배포

WebDAV (Web Distributed Authoring and Versioning)를 이용한 원격 파일 작성을 위한 프레임워크로, WsgiDAV 설치 및 구성 방법을 안내합니다.

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

NTLite를 사용하여 업데이트로 Windows 사용자 지정 ISO를 만드는 방법

이 자습서는 Vultrs 시스템과 호환되는 Windows ISO를 만드는 과정을 안내합니다. 최신 드라이버와 업데이트 통합이 포함되어 있습니다.

데비안 7에 Mailcow 설치

데비안 7에 Mailcow 설치

Mailcow는 DoveCot, Postfix 및 기타 여러 오픈 소스 패키지를 기반으로 하는 경량 메일 서버입니다. 데비안에서 Mailcow 설치 방법을 안내합니다.

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

AI가 랜섬웨어 공격의 증가와 싸울 수 있습니까?

랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.

ReactOS: 이것이 Windows의 미래입니까?

ReactOS: 이것이 Windows의 미래입니까?

오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

WhatsApp 데스크톱 앱 24*7을 통해 연결 유지

Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

AI는 어떻게 프로세스 자동화를 다음 단계로 끌어올릴 수 있습니까?

인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

macOS Catalina 10.15.4 추가 업데이트로 인해 해결보다 더 많은 문제가 발생함

최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구

빅데이터의 13가지 상용 데이터 추출 도구