Alpine Linux 3.9.0에서 Docker Swarm 생성
소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오
Docker Swarm은 개별 서버를 컴퓨터 클러스터로 변환합니다. 확장 성, 고 가용성 및로드 밸런싱을 용이하게합니다. Swarm로드 밸런서는 라운드 로빈로드 밸런싱 전략을 구현하며, 이는 여러 인스턴스로 고 가용성 설정을 허용하기 위해 일정 형식의 고정 세션이 필요한 (레거시) 상태 저장 애플리케이션의 올바른 기능을 방해 할 수 있습니다. Docker Enterprise Edition은 Layer-7 고정 세션을 지원하지만이 안내서에서는 Docker의 무료 (CE) 버전에 중점을 둘 것입니다. 고정 세션을 구현하기 위해 Traefik을 사용합니다.
sudo
권한 이있는 루트가 아닌 사용자 (선택 사항이지만 루트 사용자를 사용하지 않는 것이 좋습니다)이 자습서에서는 프라이빗 IP 주소 192.168.0.100
와 와 함께 두 개의 Vultr 인스턴스를 사용합니다 192.168.0.101
. 둘 다 Docker Swarm 관리자 노드입니다 (생산에는 이상적이지 않지만이 자습서에는 충분합니다).
이 학습서는 jwilder/whoami
도커 이미지를 데모 애플리케이션으로 사용합니다 . 이 간단한 컨테이너는 응답 컨테이너의 이름으로 REST 호출에 응답하므로 고정 세션이 작동하는지 테스트하기가 매우 쉽습니다. 이 이미지는 분명히 데모 목적으로 만 사용되며 사용자의 응용 프로그램 이미지로 교체해야합니다.
whoami 서비스는 다음과 같이 구성됩니다.
sudo docker network create whoaminet -d overlay
sudo docker service create --name whoami-service --mode global --network whoaminet --publish "80:8000" jwilder/whoami
sudo iptables -I INPUT 1 -p tcp --dport 80 -j ACCEPT
이후 curl
whoam REST 엔드 포인트 http://192.168.0.100/
가 작동하면 Docker Swarm의 라운드 로빈로드 밸런싱을 볼 수 있습니다.
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
curl http://192.168.0.100
I'm ae9d1763b4ad
curl http://192.168.0.100
I'm a6a8c9294fc3
Chrome 또는 Firefox와 같은 최신 브라우저는 연결을 유지하도록 설계되었으므로 Docker Swarm로드 밸런서는 새로 연결할 때마다 다른 컨테이너로만 전환됩니다 . 브라우저에서이를 테스트하려면 연결이 닫힐 때까지 30 초 이상 기다려야 새로 고칠 수 있습니다.
Traefik은 기본적으로 Docker Swarm을 지원하며 컨테이너를 즉시 감지 및 등록 또는 등록 취소 할 수 있으며 내부 오버레이 네트워크를 통해 애플리케이션과 통신합니다. Traefik은 요청 처리를 시작하기 전에 애플리케이션에 대한 정보가 필요합니다. 이 정보는 Swarm 서비스에 레이블을 추가하여 Traefik에 제공됩니다.
sudo docker service update --label-add "traefik.docker.network=whoaminet" --label-add "traefik.port=8000" --label-add "traefik.frontend.rule=PathPrefix:/" --label-add "traefik.backend.loadbalancer.stickiness=true" whoami-service
다음 목록은 각 레이블의 의미를 설명합니다.
traefik.docker.network
: Traefik이 서비스와 통신하는 Docker 오버레이 네트워크 traefik.port
: 서비스가 청취중인 포트 (게시 된 포트가 아니라 내부적으로 노출 된 포트 임)traefik.frontend.rule
: PathPrefix:/
컨텍스트 루트 ' /
'를이 서비스에 바인딩합니다 .traefik.backend.loadbalancer.stickiness
:이 서비스에 고정 세션을 사용합니다.가 지금 whoami-service
필요한 라벨로 구성되어, 우리는 떼에 Traefik 서비스를 추가 할 수 있습니다 :
sudo docker service create --name traefik -p8080:80 -p9090:8080 --mount type=bind,source=/var/run/docker.sock,destination=/var/run/docker.sock --mode=global --constraint 'node.role == manager' --network whoaminet traefik --docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
이 명령은 다음 목록과 같이 한 번에 많은 작업을 수행합니다.
--name traefik
: 새로운 Docker 서비스 이름은 Traefik입니다 -p8080:80
: whoami 서비스에서 포트 가 이미 사용 중이므로 Traefik의 포트 대 포트 80
를 게시 합니다.8080
80
-p9090:8080
: Traefik의 자체 웹 인터페이스를 포트에 게시 9090
--mount ...
: Traefik이 호스트의 Docker 런타임에 액세스 할 수 있도록 Docker Socket을 컨테이너에 마운트합니다. --global
: 고 가용성을 위해 각 관리자 노드에 Traefik 컨테이너가 필요합니다. --constraint 'node.role == manager'
: 작업자 노드는 Traefik에 필요한 정보를 제공 할 수 없으므로 관리자 노드에서만 Traefik을 실행하려고합니다. 예를 들어 docker service ls
작업자 노드에서 작동하지 않으므로 Traefik은 실행중인 서비스를 찾을 수조차 없습니다.--network whoaminet
: Traefik을와 동일한 네트워크에 whoami-service
연결하십시오. 그렇지 않으면 연결할 수 없습니다. 우리는 이전에 Traefik에게 traefik.docker.network
라벨 이있는이 네트워크를 통해 서비스에 연결하라고 했습니다traefik
: 도커에게이 서비스에 최신 Traefik 도커 이미지를 사용하도록 지시하십시오.--docker --docker.swarmmode --docker.watch --web --loglevel=DEBUG
: Docker swarm 모드에서 실행할 수 있도록 명령 행 인수가 Traefik으로 직접 전달되었습니다. DEBUG
여기서는 선택 사항이지만 설정 중에는이 튜토리얼에서 흥미 롭습니다.남은 일은 데비안 방화벽에서 필요한 포트를 여는 것입니다.
sudo iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
sudo iptables -I INPUT 1 -p tcp --dport 9090 -j ACCEPT
Traefik이 시작 되 자마자 Traefik이 두 whoami
컨테이너를 발견 한 로그를 볼 수 있습니다 . 또한 고정 세션을 처리하는 데 사용할 쿠키 이름을 출력합니다.
time="2018-11-25T13:17:30Z" level=debug msg="Configuration received from provider docker: {\"backends\":{\"backend-whoami-service\":{\"servers\":{\"server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05\":{\"url\":\"http://10.0.0.5:8000\",\"weight\":1},\"server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6\":{\"url\":\"http://10.0.0.4:8000\",\"weight\":1}},\"loadBalancer\":{\"method\":\"wrr\",\"stickiness\":{}}}},\"frontends\":{\"frontend-PathPrefix-0\":{\"entryPoints\":[\"http\"],\"backend\":\"backend-whoami-service\",\"routes\":{\"route-frontend-PathPrefix-0\":{\"rule\":\"PathPrefix:/\"}},\"passHostHeader\":true,\"priority\":0,\"basicAuth\":null}}}"
time="2018-11-25T13:17:30Z" level=debug msg="Wiring frontend frontend-PathPrefix-0 to entryPoint http"
time="2018-11-25T13:17:30Z" level=debug msg="Creating backend backend-whoami-service"
time="2018-11-25T13:17:30Z" level=debug msg="Adding TLSClientHeaders middleware for frontend frontend-PathPrefix-0"
time="2018-11-25T13:17:30Z" level=debug msg="Creating load-balancer wrr"
time="2018-11-25T13:17:30Z" level=debug msg="Sticky session with cookie _a49bc"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-1-a179b2e38a607b1127e5537c2e614b05 at http://10.0.0.5:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating server server-whoami-service-2-df8a622478a5a709fcb23c50e689b5b6 at http://10.0.0.4:8000 with weight 1"
time="2018-11-25T13:17:30Z" level=debug msg="Creating route route-frontend-PathPrefix-0 PathPrefix:/"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :80"
time="2018-11-25T13:17:30Z" level=info msg="Server configuration reloaded on :8080"
우리가 말을 걸면 http://192.168.0.100:8080
새로운 쿠키 _a49bc
가 설정되어 있음 을 알 수 있습니다 .
curl -v http://192.168.0.100:8080
* About to connect() to 192.168.0.100 port 8080 (#0)
* Trying 192.168.0.100...
* Connected to 192.168.0.100 (192.168.0.100) port 8080 (#0)
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: 192.168.0.100:8080
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Length: 17
< Content-Type: text/plain; charset=utf-8
< Date: Sun, 25 Nov 2018 13:18:40 GMT
< Set-Cookie: _a49bc=http://10.0.0.5:8000; Path=/
<
I'm a6a8c9294fc3
* Connection #0 to host 192.168.0.100 left intact
후속 전화에서이 쿠키를 Traefik으로 보내면 항상 동일한 컨테이너로 전달됩니다.
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
curl http://192.168.0.100:8080 --cookie "_a49bc=http://10.0.0.5:8000"
I'm a6a8c9294fc3
쿠키에는 Traefik이 요청을 보내야하는 컨테이너의 내부 IP 주소 만 포함됩니다. 쿠키 값으로 변경 http://10.0.0.4:8000
하면 요청이 다른 컨테이너로 효과적으로 전달됩니다. 쿠키를 Traefik으로 다시 보내지 않으면 고정 세션이 작동하지 않고 응용 프로그램 컨테이너와 Traefik 컨테이너간에 요청이 균형을 이룹니다.
이것이 데비안 9의 Docker CE에서 레이어 7 고정 세션을 설정하는 데 필요한 전부입니다.
소개이 안내서는 여러 개의 Alpine Linux 3.9.0 서버 및 Portainer를 사용하여 Docker 스웜을 생성 및 구성하는 방법을 보여줍니다. 그쪽으로 알아주십시오
RancherOS는 시스템 서비스를 실행하기 위해 시스템 Docker 데몬을 PID 0으로 실행하는 매우 가벼운 운영 체제 (약 60MB)입니다.
PHP 응용 프로그램은 일반적으로 웹 서버, 관계형 데이터베이스 시스템 및 언어 인터프리터 자체로 구성됩니다. 이 튜토리얼에서 우리는 활용할 것입니다
소개 Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그래밍 언어로 작성되었습니다.
다른 시스템을 사용하십니까? Docker는 컨테이너로 실행되는 프로그램을 배포 할 수있는 응용 프로그램입니다. 인기있는 Go 프로그램에서 작성되었습니다.
이 기사에서는 Docker 컨테이너 내에 Node 응용 프로그램을 배포하는 방법을 보여줍니다. 참고 :이 튜토리얼은 Docker가 설치되어 있고 읽은 것으로 가정합니다.
Harbor는 Docker 이미지를 저장하고 배포하는 오픈 소스 엔터프라이즈 급 레지스트리 서버입니다. 하버, 오픈 소스 Docker Distribution b 확장
LXC 컨테이너 (Linux 컨테이너)는 단일 호스트에서 여러 개의 격리 된 Linux 시스템을 실행하는 데 사용할 수있는 Linux의 운영 체제 기능입니다. 그
Kubernetes는 서버 클러스터 전체에서 컨테이너화 된 애플리케이션을 관리하기 위해 Google에서 개발 한 오픈 소스 플랫폼입니다. 그것은 10 년을 기반으로하고
다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지
개요이 기사는 Kubernetes 클러스터를 kubeadm과 함께 시작하고 실행하는 데 도움을주기 위해 작성되었습니다. 이 가이드는 두 대의 서버를 배포합니다.
이 기사에서는 CoreOS에 docker-compose를 설치하는 방법에 대해 설명합니다. CoreOS에서는 / usr / 폴더를 변경할 수 없으므로 표준 / usr / local / bin 경로를 사용할 수 없습니다.
다른 시스템을 사용하십니까? 소개 Rancher는 컨테이너를 실행하고 개인 컨테이너 서비스를 구축하기위한 오픈 소스 플랫폼입니다. 목장주 기지
다른 시스템을 사용하십니까? Docker는 가상 컨테이너 내에 소프트웨어를 배포 할 수있는 응용 프로그램입니다. Go 프로그램에서 작성되었습니다.
다른 시스템을 사용하십니까? Docker Swarm은 개별 서버를 컴퓨터 클러스터로 전환하여 확장 및 고 가용성을 용이하게합니다.
이 튜토리얼은 Docker 시작의 기본 사항을 설명합니다. Docker가 이미 설치되어 있다고 가정합니다. 이 튜토리얼의 단계는
웹 응용 프로그램을 실행할 때 일반적으로 멀티 스레딩을 사용하도록 소프트웨어를 변환하지 않고도 리소스를 최대한 활용하려고합니다.
우리는 여러 시스템에서 애플리케이션 컨테이너를 생성, 관리 및 배포 할 수있는 플랫폼 인 Docker를 알고 있습니다. Docker Inc.는 서비스를 제공합니다
전제 조건 Docker 엔진 1.8 이상. 최소 4GB의 디스크 공간. 최소 4GB의 RAM. 1 단계. Docker 설치 SQL-Server를 설치하려면 Docker mus
NTLite를 사용하여 Vultr 시스템과 호환되는 Windows 사용자 지정 ISO를 만드는 방법을 단계별로 설명합니다. 최신 드라이버와 업데이트 통합을 포함한 완벽 가이드.
Vultr BGP 설정을 위한 단계별 튜토리얼. ASN 할당부터 IP 라우팅 구성, BIRD 데몬 설정, FreeBSD 특이사항 및 실전 문제 해결 팁 7가지 포함한 최종 가이드
WebDAV (Web Distributed Authoring and Versioning)를 이용한 원격 파일 작성을 위한 프레임워크로, WsgiDAV 설치 및 구성 방법을 안내합니다.
Mailcow는 DoveCot, Postfix 및 기타 여러 오픈 소스 패키지를 기반으로 하는 경량 메일 서버입니다. 데비안에서 Mailcow 설치 방법을 안내합니다.
랜섬웨어 공격이 증가하고 있지만 AI가 최신 컴퓨터 바이러스를 처리하는 데 도움이 될 수 있습니까? AI가 답인가? AI boone 또는 bane인지 여기에서 읽으십시오.
오픈 소스이자 무료 운영 체제인 ReactOS가 최신 버전과 함께 제공됩니다. 현대 Windows 사용자의 요구 사항을 충족하고 Microsoft를 무너뜨릴 수 있습니까? 이 구식이지만 더 새로운 OS 환경에 대해 자세히 알아보겠습니다.
Whatsapp은 마침내 Mac 및 Windows 사용자용 데스크톱 앱을 출시했습니다. 이제 Windows 또는 Mac에서 Whatsapp에 쉽게 액세스할 수 있습니다. Windows 8 이상 및 Mac OS 10.9 이상에서 사용 가능
인공 지능이 소규모 회사에서 어떻게 인기를 얻고 있으며 어떻게 인공 지능이 성장할 가능성을 높이고 경쟁자가 우위를 점할 수 있는지 알아보려면 이 기사를 읽으십시오.
최근 Apple은 문제를 해결하기 위해 macOS Catalina 10.15.4 추가 업데이트를 출시했지만 이 업데이트로 인해 Mac 컴퓨터의 브릭킹으로 이어지는 더 많은 문제가 발생하는 것 같습니다. 자세히 알아보려면 이 기사를 읽어보세요.
빅데이터의 13가지 상용 데이터 추출 도구