일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- Service
- elasticsearch
- On-Premise
- Kubernetes
- Site-to-Site VPN
- grafana
- docker
- prometheus
- AWS
- vgw
- docker swarm
- cognito
- JavaScript
- CloudFormation
- Await
- optional chaining
- 비구조화 할당
- Endpoints
- 구조분해 할당
- DynamoDB
- null 병합 연산자
- VPC
- 단축 평가
- api gateway
- 옵셔널 체이닝
- transit gateway
- 온프레미스
- Proxy Resource
- Custom Resource
- 자바스크립트
- Today
- Total
만자의 개발일지
[Docker] Docker Swarm host mode로 서비스 생성하기 본문
본 포스팅은 ingress에 대한 지식을 필요로 합니다. ingress에 대한 정보는 아래 글을 참고해주시길 바랍니다.
https://yoo11052.tistory.com/184
Docker Swarm에서는 서비스를 생성하면 기본적으로 ingress mode로 서비스를 생성합니다.
ingress mode로 서비스를 생성하게되면 서비스로 요청이 들어올 시 서비스로 생성된 컨테이너 중 하나로 요청을 redirect하게 됩니다.
예시로 nginx 서비스를 띄운후 inspect 명령어로 정보를 출력해봤습니다.
$ docker service inspect nginx | jq '.[].Endpoint.Ports'
[
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80,
"PublishMode": "ingress"
}
]
위와 같이 PublishMode가 ingress로 되어있는 것을 보실 수 있습니다.
때문에 별도의 모드를 지정하지 않고 서비스를 생성해도 다음과 같이 자동으로 로드밸런싱이 가능했던 것입니다.
host mode
만약 로드밸런싱이 필요하지 않은 경우에는 어떻게 해야 할까요?
node-exporter나 cadvisor 같은 exporter의 경우 해당 노드에 있는 메트릭 정보를 수집해야 하기 때문에 다른 컨테이너로 요청을 redirect 해선 안됩니다.
따라서 이 경우 docker swarm에서 제공하는 host mode를 사용하여 해결할 수 있습니다.
host mode는 ingress mode와 달리 요청을 다른 컨테이너로 redirect하지 않습니다. host mode로 생성된 서비스에 요청을 보내면 해당 노드에서 실행되고 있는 컨테이너로 직접 요청을 전달합니다.
host mode로 서비스를 생성하는 방법은 간단합니다.
다음과 같이 -p 옵션뒤에 mode=host로 지정해 주면됩니다. 다만 host mode로 서비스를 생성 시 해당 노드에 컨테이너가 실행중인지 알 수 없기 떄문에 글로벌 서비스로 생성해주어야 합니다.
$ docker service create --name nginx --mode global -p mode=host,target=80,published=80 nginx:latest
다음과 같이 PublishMode가 host로 설정되있는 것을 보실 수 있습니다.
$ docker service inspect nginx | jq '.[].Endpoint.Ports'
[
{
"Protocol": "tcp",
"TargetPort": 80,
"PublishedPort": 80,
"PublishMode": "host"
}
]
참고
'Docker' 카테고리의 다른 글
[Docker] WARNING: IPv4 forwarding is disabled 해결 방법 (0) | 2022.08.01 |
---|---|
[Docker] Docker Swarm Worker Node에만 서비스 배포하기 (0) | 2022.07.28 |
[Docker] ECR Public Gallery에서 이미지 불러오기 (1) | 2022.06.27 |
[Docker] Docker Swarm Network의 종류 (0) | 2022.06.20 |
[Docker] Docker Swarm Cluster 구축하기(Swarm Mode) (0) | 2022.06.17 |