본문 바로가기

IT

Docker swarm으로 awx cluster 환경 구성

1. 목적 : vm기반 여러 docker host를 단일 docker host로 구성하고 awx task instance를 분산시키기 위함

2. cluster 생성

- Manager: 10.10.10.101 (node1)

- Worker : 10.10.10.102 (node2)

3. Docker swarm init

docker swarm init --advertise-addr 10.10.10.101

4. docker swarm join

# 3번에서 생성된 명령어로 Worker 노드에서 명령어 실행
docker swarm join --token xxxxx-x-xxxxxxx.... 10.10.10.101:2377

5. docker node list 보기

$ docker node ls

6. /etc/tower/setting.py 정보 수정

# 기존
CLUSTER_HOST_ID = 'awx'
# 수정
CLUSTER_HOST_ID = os.environ['HOSTNAME']

7. docker compose file 변경

- 기존 단일 구성 compose에서 task image의 hostname, deploy추가

task:
  image: ...
  hostname: task-{{.Task.Slot}} # hostname은 각기 다르게 복제된 수 만큼 hostname 설정
  deploy:
     mode: replicated
     replicated: 6 # instance 6개 생성
  ...
  ...
  ...

8. start awx compose

* 시작하기 전 각 instance끼리 pv 파일 동기화가 필요

$ vi start_docker_swarm.sh
docker stack deploy -c ./docker-compose.yml --with-registry-auth swarm

9. stop awx compose

$ vi shutdown_docker_swarm.sh
docker stack rm swarm

10. docker swarm list

$ docker service ls

11. awx task replica 갯수 보기

$ docker service ps swarm_task