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
랜섬웨어 공격이 증가하고 있지만 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가지 상용 데이터 추출 도구
우리 컴퓨터는 모든 데이터를 저널링 파일 시스템이라고 하는 체계적인 방식으로 저장합니다. 검색을 누르는 즉시 컴퓨터에서 파일을 검색하고 표시할 수 있는 효율적인 방법입니다.https://wethegeek.com/?p=94116&preview=true
과학이 빠른 속도로 발전하고 우리의 많은 노력을 인수함에 따라 설명할 수 없는 특이점에 처할 위험도 높아집니다. 특이점이 우리에게 무엇을 의미할 수 있는지 읽어보십시오.
26가지 빅 데이터 분석 기법에 대한 통찰: 1부
의료 분야의 AI는 지난 수십 년 동안 큰 도약을 했습니다. 따라서 의료 분야에서 AI의 미래는 여전히 나날이 성장하고 있습니다.