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