* 시나리오
: Master-node, Worker-node 2대로 구성
: CentOS7 환경에서 진행
* 공통 셋업 사항
: CentOS7 설치
: 클러스터간 통신을 위해 사용되는 포트 방화벽 해제
firewall-cmd --permanent --zone=public --add-port=2377/tcp
firewall-cmd --permanent --zone=public --add-port=7946/tcp
firewall-cmd --permanent --zone=public --add-port=7946/udp
firewall-cmd --permanent --zone=public --add-port=4789/tcp
firewall-cmd --permanent --zone=public --add-port=4789/udp
firewall-cmd --reload
: Docker 설치
yum install -y docker
systemctl start docker
systemctl enable docker
* Master Node 초기화
: 아래 구문을 마스터노드에서 실행하면 워커노드가 조인할 수 있는 조인 커맨드가 자동 생성되어 복사 & 붙여넣기를 워커노드에서 해주면 된다.
docker swarm init --advertise-addr [마스터노드ip][:포트(안쓰면 default 2333)]
ex) docker swarm init --advertise-addr 172.30.1.100
# 토큰을 분실하더라도 아래 커맨드로 재생성 가능
docker swarm join-token worker
* Worker Node Join
: 위에서 생성된 조인 커맨드 실행
# 예시
docker swarm join --token SWMTKN-1-17a8g5y4jnm1ch4mzrdo22p7w97hvkqupej4k6b8sawqbjebqn-ayoihym0yeewvz83zn3hvo815 172.30.1.100:2377
* 매니저 노드 추가
: 실제 운영환경에서 매니저 노드가 죽을 수 있으므로 가용성 측면에서 매니저 노드를 여럿 셋팅 할 수 있다.
: 아래 구문을 마스터 노드에서 실행 하고 나온 결과를 매니저로 만들 노드에서 실행 하면 된다.
docker swarm join-token manager
* 노드 목록 확인
docker node ls
* 서비스 생성 및 체크
: 서비스 생성
※ --with-registry-auth 옵션 : 매니저 노드에서 허브에 로그인 되어 있다면 워커 노드에서 로그인 되어 있지 않아도 허브 레지스크리에서 이미지를 받아올 수 있다.
docker service create --name my-web --publish published=80,target=80 --replicas 1 nginx:latest
: 서비스 체크
※ 각 노드에서 서비스를 붙어보면 서비스가 배포되지 않은 노드에서도 서비스가 실행되는것을 볼 수 있다.
※ 서비스와 관련된 커맨드는 꼭! 매니저노드에서 실행해야 먹힌다.
docker service ls
# 위에서 확인한 이미지 명을 넣어서 아래 커맨드를 입력하면 어느 노드에서 실행중인지 상세히 알수 있다.
docker service ps my-web
: 실행중인 노드에서 서비스를 상세히 체크 하기
docker ps --format "table {{.Names}}\t{{.Status}}"
: 서비스 삭제
docker service rm my-web
* 서비스 스케일링
docker service scale my-web=2
* 참고자료
https://yoo11052.tistory.com/183
https://team-platform.tistory.com/51
'Docker & Kubernetes' 카테고리의 다른 글
[Docker] Docker 로그 관리 (0) | 2023.03.15 |
---|---|
[Docker] GlusterFS volume-plugin 구성 (feat.CentOS7) (0) | 2023.02.08 |
[Kubernetes] Dashboard 셋업 및 외부 접속 설정 (1) | 2022.11.23 |
[Kubernetes] 클러스터 환경 구축 (0) | 2022.11.04 |
[Docker] Code-server 구축 (0) | 2022.11.04 |