ARM 보드 여러 가지로 집 DockerSwarm 클러스터 traefik편
5589 단어 RaspberryPitraefikDockerSwarm
이 기사에서는 집 ARM 보드에 traefik를 넣습니다.
참고: Traefik v2 및 Traefik v1 설정 방법은 호환되지 않습니다.
이 기사에서는 Traefik v2.5를 사용한 구성을 보여줍니다.
집 클러스터 시리즈
Traefik 정보
Go제의 컨테이너와 궁합이 좋은 느낌의 리버스 프록시입니다. 컨테이너에 라벨을 붙이면 동적으로 라우팅해 주거나 LetsEncrypt의 증명서의 자동 발행을 할 수 있거나, 좋은 느낌의 API가 있는 멋있는 사람입니다. 컨테이너 간의 네트워크를 제대로 구성하면 물리적 포트에 할당하지 않고 (어떤 포트를 사용했는지 생각하지 않고!) 서비스를 배포 할 수 있습니다.
왜 nginx 나 apache를 사용하지 않습니까?
둘 다 라즈파이 1대로 설치했을 때 사용했습니다. 그대로 설정해도 아마도 잘 갈 것이라고 생각합니다만, 모처럼 DockerSwarm을 도입했으므로, 그것에 맞는 현대적인 툴을 시험해 보려고 생각합니다.
소개
지금까지 Portainer와 SeaweedFS를 설정했으므로 WebUI에서 서비스를 추가 할 수있는/mnt/seaweedfs에 구성 파일을 저장할 수 있다고 가정합니다.
1 traefik에서 사용할 네트워크 만들기
미리 Swarm 내에서 사용할 overlay 네트워크를 만듭니다.
2 필요한 파일을 /mnt/seaweedfs에 준비
traefik 폴더와 파일 준비sudo mkdir /mnt/seaweedfs/traefik
sudo mkdir /mnt/seaweedfs/traefik/certs
sudo touch /mnt/seaweedfs/traefik/certs/certs.json
sudo nano /mnt/seaweedfs/traefik/traefik.yml
traefik.yml에 다음 내용을 붙여넣기providers:
docker:
exposedByDefault: false
# テスト用(公開時は要変更)
defaultRule: "Host(`{{ index .Labels \"traefik.host\" }}.192.168.0.11.nip.io`)"
swarmMode: true
api:
insecure: true
nip.io 란 무엇입니까?
이 기사에서 소개되었지만 서브 도메인을 붙인 채로 지정된 IP 주소로 라우팅을 반환하는 DNS 서비스 인 것 같습니다. LAN 내의 주소에도 사용할 수 있으므로 테스트 용으로 이용하겠습니다.
3 compose 파일 배포
stacks에서 아래의 compose 파일을 배포합니다.
docker-compose.ymlversion: "3.4"
services:
traefik:
image: traefik:v2.5
ports:
- 80:80 # HTTP
- 443:443 # HTTPS
- 1204:8080 # API
networks:
- traefik-net
volumes:
- /mnt/seaweedfs/traefik/certs/certs.json:/certs.json:ro
- /mnt/seaweedfs/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
- /var/run/docker.sock:/var/run/docker.sock
deploy:
replicas: 1
placement:
constraints:
- node.role==manager
restart_policy:
condition: on-failure
networks:
traefik-net:
external: true
4 Traefik을 사용해보십시오
다른 정의 파일로 서비스를 만들고 labels에 traefik를 설정합니다.
whoami는 각종 IP 주소나 호스트명 등을 확인할 수 있는 컨테이너입니다.
whoami-compose.ymlversion: "3.4"
services:
whoami:
image: containous/whoami
networks:
- traefik-net
deploy:
replicas: 3
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
# アクセスする際のホスト名 (テスト用の場合 ホスト名+アドレス+nip.ioになる)
- "traefik.host=whoami"
# Traefikの属するのと同じネットワークを指定
- "traefik.docker.network=traefik-net"
# Traefikで指定したアクセスする際のエントリーポイント(http/https等)
- "traefik.http.routers.whoami.entrypoints=http"
# コンテナ内で動作しているサービスのポート
- "traefik.http.services.whoami.loadbalancer.server.port=80"
networks:
# traefik作成時に作成したネットワーク名
traefik-net:
external: true
위를 배포하고 액세스해 보면 아래 그림과 같이 됩니다. 다시 로드하면 최상위 호스트 이름이 변경되어 여러 호스트에서 응답이 반환되는지 확인할 수 있습니다.
완주한 감상
격한 개그
설정 파일을 읽을 수 없는 문제
전회만큼 곤란하지 않아서 멋지게 끝났습니다만, 어쩐지, 설정 파일을 기입할 때에 수수께끼의 NULL이 삽입되어 잘 동작하지 않는 수수께끼 현상에 곤란했습니다. 원인은 SeaweedFS인 것 같고, 사용하고 있는 디렉토리는 아무리 사이즈가 작아도 즉시 동기화되는 것은 아니기 때문에, 그 폴더에 액세스 하고 있는 서비스를 완전하게 멈추거나 파일을 지워 다시 한번 재작성하지 않는다 그리고 좋지 않은 것 같습니다. Traefik 자체는 뭔가 몹시 편리할 것 같으므로, 향후 말 오랫동안 이용하고 싶습니다.
온프레로 설정한 사이트 연결되지 않는 문제
유저 씨로부터 연락 있어 깨달았습니다만, Swarm 내의 노드로, 이미 포트 80으로 움직이고 있던 nginx의 포트를 가로채 버려, 사이트에 연결되지 않게 되어 있었습니다. 이미 움직이는 프로세스가 있다면 다른 포트를 사용하고 사이트가 멈추지 않도록 조심합시다.
참고
Reference
이 문제에 관하여(ARM 보드 여러 가지로 집 DockerSwarm 클러스터 traefik편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Domao/items/6407dd048da6535bcc71
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
지금까지 Portainer와 SeaweedFS를 설정했으므로 WebUI에서 서비스를 추가 할 수있는/mnt/seaweedfs에 구성 파일을 저장할 수 있다고 가정합니다.
1 traefik에서 사용할 네트워크 만들기
미리 Swarm 내에서 사용할 overlay 네트워크를 만듭니다.
2 필요한 파일을 /mnt/seaweedfs에 준비
traefik 폴더와 파일 준비
sudo mkdir /mnt/seaweedfs/traefik
sudo mkdir /mnt/seaweedfs/traefik/certs
sudo touch /mnt/seaweedfs/traefik/certs/certs.json
sudo nano /mnt/seaweedfs/traefik/traefik.yml
traefik.yml에 다음 내용을 붙여넣기
providers:
docker:
exposedByDefault: false
# テスト用(公開時は要変更)
defaultRule: "Host(`{{ index .Labels \"traefik.host\" }}.192.168.0.11.nip.io`)"
swarmMode: true
api:
insecure: true
nip.io 란 무엇입니까?
이 기사에서 소개되었지만 서브 도메인을 붙인 채로 지정된 IP 주소로 라우팅을 반환하는 DNS 서비스 인 것 같습니다. LAN 내의 주소에도 사용할 수 있으므로 테스트 용으로 이용하겠습니다.
3 compose 파일 배포
stacks에서 아래의 compose 파일을 배포합니다.
docker-compose.yml
version: "3.4"
services:
traefik:
image: traefik:v2.5
ports:
- 80:80 # HTTP
- 443:443 # HTTPS
- 1204:8080 # API
networks:
- traefik-net
volumes:
- /mnt/seaweedfs/traefik/certs/certs.json:/certs.json:ro
- /mnt/seaweedfs/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
- /var/run/docker.sock:/var/run/docker.sock
deploy:
replicas: 1
placement:
constraints:
- node.role==manager
restart_policy:
condition: on-failure
networks:
traefik-net:
external: true
4 Traefik을 사용해보십시오
다른 정의 파일로 서비스를 만들고 labels에 traefik를 설정합니다.
whoami는 각종 IP 주소나 호스트명 등을 확인할 수 있는 컨테이너입니다.
whoami-compose.yml
version: "3.4"
services:
whoami:
image: containous/whoami
networks:
- traefik-net
deploy:
replicas: 3
restart_policy:
condition: on-failure
labels:
- "traefik.enable=true"
# アクセスする際のホスト名 (テスト用の場合 ホスト名+アドレス+nip.ioになる)
- "traefik.host=whoami"
# Traefikの属するのと同じネットワークを指定
- "traefik.docker.network=traefik-net"
# Traefikで指定したアクセスする際のエントリーポイント(http/https等)
- "traefik.http.routers.whoami.entrypoints=http"
# コンテナ内で動作しているサービスのポート
- "traefik.http.services.whoami.loadbalancer.server.port=80"
networks:
# traefik作成時に作成したネットワーク名
traefik-net:
external: true
위를 배포하고 액세스해 보면 아래 그림과 같이 됩니다. 다시 로드하면 최상위 호스트 이름이 변경되어 여러 호스트에서 응답이 반환되는지 확인할 수 있습니다.
완주한 감상
격한 개그
설정 파일을 읽을 수 없는 문제
전회만큼 곤란하지 않아서 멋지게 끝났습니다만, 어쩐지, 설정 파일을 기입할 때에 수수께끼의 NULL이 삽입되어 잘 동작하지 않는 수수께끼 현상에 곤란했습니다. 원인은 SeaweedFS인 것 같고, 사용하고 있는 디렉토리는 아무리 사이즈가 작아도 즉시 동기화되는 것은 아니기 때문에, 그 폴더에 액세스 하고 있는 서비스를 완전하게 멈추거나 파일을 지워 다시 한번 재작성하지 않는다 그리고 좋지 않은 것 같습니다. Traefik 자체는 뭔가 몹시 편리할 것 같으므로, 향후 말 오랫동안 이용하고 싶습니다.
온프레로 설정한 사이트 연결되지 않는 문제
유저 씨로부터 연락 있어 깨달았습니다만, Swarm 내의 노드로, 이미 포트 80으로 움직이고 있던 nginx의 포트를 가로채 버려, 사이트에 연결되지 않게 되어 있었습니다. 이미 움직이는 프로세스가 있다면 다른 포트를 사용하고 사이트가 멈추지 않도록 조심합시다.
참고
Reference
이 문제에 관하여(ARM 보드 여러 가지로 집 DockerSwarm 클러스터 traefik편), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Domao/items/6407dd048da6535bcc71텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)