데브옵스 devOps/Server
tailscale 이용해서 가상 네트워크로 묶기
dongburiii
2026. 11. 6. 17:22
728x90
반응형
발단
- 데이터베이스 인스턴스를 띄워두고 rabbitmq 3개를 한 서버에 밀어넣어 사용중이었음
- 그런데 계속 커넥션이 끊기는 것 같아, 분산 처리를 위해 각 서버에 띄우려고 했음
- 그러다 보니, 집 ip 내부의 private ip에 있는 노드와 클라우드 위의 컨테이너를 어떻게 서로 하나의 클러스터로 묶을지 고민하게 됨
방법
- tailscale 이라는 vpn 서비스를 통해 각 서버들을 하나의 가상 네트워크로 묶어버림
- 이렇게 되면 가상 ip 가 발급되고, 같은 vpn 내부의 노드끼리는 찾아갈 수 있음
- 외부에서 해당 ip 로는 당연히 못 찾아감
- 따라서 가상 네트워크로 묶을 모든 노드에 하나씩 설치하고 아래 방식으로 하나씩 인증해 묶으면 됨
curl -fsSL https://tailscale.com/install.sh | sh설치 완료 후 tailscale up 하면 브라우저로 인증 후 하나의 계정 아래에서 묶어 사용할 수 있게 됨
sudo tailscale up가상 ip를 찾는 방
- 100.xxx.xxx.xx 처럼 나옴
sudo tailscale status
포트 오픈
- vpn 내부에서만 통신 가능하게 적용
- public ip 혹은 포트포워딩이 필요 없음
- NAT을 우회해 암호화 터널을 통과하기 때문
# Tailscale 인터페이스(tailscale0)를 통한 모든 접속 허용
sudo ufw allow in on tailscale0- rabbitmq 포트 설정
| 포트 번호 | 용도 | 설명 |
|---|---|---|
| 4369 | EPMD (Erlang Port Mapper Daemon) | 노드 네임 서버 (어느 노드가 몇 번 포트를 쓰는지 탐색) |
| 25672 | CLI & Inter-node Communication | 노드 간 데이터 및 상태 동기화 핵심 포트 |
| 5672 | AMQP Protocol | 앱(클라이언트) 메시지 송수신 포트 |
컨테이너 설정
# 클라우드 서버 (rabbitmq-1) docker-compose.yml
services:
rabbitmq-1:
image: rabbitmq:3.13.3-management
container_name: rabbitmq-1
hostname: rabbitmq-1
restart: always
environment:
- RABBITMQ_ERLANG_COOKIE=rabbitmqCookie
- RABBITMQ_DEFAULT_USER=dong
- RABBITMQ_DEFAULT_PASS=dong
ports:
- 15672:15672
- 5672:5672
- 4369:4369
- 25672:25672
extra_hosts:
- "rabbitmq-2:192.168.0.11"
- "rabbitmq-3:192.168.0.12"
# 개인 서버 2 (rabbitmq-3) docker-compose.yml
services:
rabbitmq-2:
image: rabbitmq:3.13.3-management
container_name: rabbitmq-2
hostname: rabbitmq-2
restart: always
environment:
- RABBITMQ_ERLANG_COOKIE=rabbitmqCookie
- RABBITMQ_DEFAULT_USER=dong
- RABBITMQ_DEFAULT_PASS=dong
ports:
- 5672:5672
- 4369:4369
- 25672:25672
extra_hosts:
- "rabbitmq-1:192.168.0.10"
- "rabbitmq-3:192.168.0.12"
클러스터 조인
docker exec -it rabbitmq-2 rabbitmqctl stop_app
docker exec -it rabbitmq-2 rabbitmqctl join_cluster rabbit@rabbitmq-1
docker exec -it rabbitmq-2 rabbitmqctl start_appdocker exec -it rabbitmq-3 rabbitmqctl stop_app
docker exec -it rabbitmq-3 rabbitmqctl join_cluster rabbit@rabbitmq-1
docker exec -it rabbitmq-3 rabbitmqctl start_app- 상태확인
docker exec -it rabbitmq-1 rabbitmqctl cluster_status728x90
반응형