노드 VPN 사용시 유용한 transmission-openvpn 의 오토힐 컨테이너 문의
개인적으로 미디어 서버를 운용하고 있어 다양한 서비스들을 VPN에 올려 사용하고 있습니다.
유즈넷을 병행하고 있어서 해외자료의 경우 큰 어려움이 없는데 역시나 국내의 경우 트랜스 미션을 사용하지 않을 수가 없겠습니다.
아무래도 초심자가 설정하기 편해서 위 트랜스 미션 OPENVPN을 사용하고 있는데
위 컨테이너에게는 문제가 하나 있습니다.
바로 핑을 통해 체크하다가 VPN이 끊어지는 경우라면 알아서 재연결을 한다는데
어쨌든 컨테이너의 네트워크 연결이 끊어지면 종료하는게 기본값이라는 것입니다.
그러다 보니 자주는 아니지만 한달에 한번 혹은 두번정도 수동으로 재기동하고 있습니다.
다만 이렇다 보니 간혹 당황스러울 때가 있기도합니다.
혹시 기능이 추가되진 않았을까 싶어 공식 가이드를 살펴보니 새로 추가 되었는지 위 오토힐이라는 녀석을 권장하더군요?
사실 같은 네트워크에 묶을 필요도 없을 것 같지만 일단 한세트로 올려두었습니다.
오토힐의 대상은 컨테이너의 헬스체크를 사용중인 것들만 가능한 것으로 보이는데..
사실 도커에는 기본 헬스체크 기능이 있어서 HEALTHCHECK를 먼저 도커 이미지에 적용하라는 부분이 좀 헷갈리고 있습니다.
제대로 적용이 된 것인지 판단하기가 굉장히 아리송한데..
--interval=DURATION
(기본값:30s
)
30초마다 체크하고 있으니 전체 컨테이너를 자동 수복하게 해놓으면 적용이 되는 것인지
혹시 사용하고 계신분이 있다면 후기를 듣고 싶어 질문드립니다.
좋은답변을 받기위해서는 좋은 질문이 필요합니다.
유의할점⚠️
- 예의를 지켜주세요. 답변자는 답변을 할 의무는 없습니다.
- 질문에 대한 대부분의 답은 검색으로 찾아보실 수 있습니다.
- 답변자가 답변을 하면서 대개 많은 경우는 다시 질문을 하는 경우가 많이 있습니다.
- (질문의 대한 정보가 부족합니다. ~일 경우 결과물이 어떻게 됩니까? 등등)
질문방법🙏
자신의 상황을 최대한 자세히 설명해주세요.
상황이 정확하고 많을 수록 답변의 정확도가 올라갑니다.
ex) ex) 헤놀로지라면 메인보드 모델 칩셋정보, CPU, 사용한 DSM 버전, 모델, 부수적인 추가 컨트롤러 나 랜카드 등과 어떠한 로더의 이미지를 사용했는지.(arpl-i18n, mshell), 어떤 버전을 사용했는지, 문제가있다면 어떠한것인지 스크린샷을 동반하고 에러의 경우 에러로그를 출력해서 주시면 좋습니다.
*가능하면 최신버전 OS/SW를 이용해주세요
답변에대한 피드백을 주세요.
정보가 질문에 모두 담겨있지않다면 대부분의 답변이 다른정보를 요구합니다.
이러한 답변에 대해 명확한 피드백을 주시면 도움이 됩니다.
version: "3.7"
services:
deunhealth:
image: qmcgaw/deunhealth
container_name: deunhealth
network_mode: "none"
environment:
LOG_LEVEL: debug
HEALTH_SERVER_ADDRESS: 127.0.0.1:9999
TZ: Asia/Seoul
restart: always
volumes:
- /var/run/docker.sock:/var/run/docker.sock
version: "3"
services:
vpn:
image: azinchen/nordvpn:latest
container_name: nordvpn
network_mode: "bridge"
cap_add:
- net_admin
devices:
- /dev/net/tun
environment:
- USER=
- PASS=
- COUNTRY=Korea
- GROUP=Standard VPN servers
- RANDOM_TOP=10
- RECREATE_VPN_CRON=5 */3 * * *
- NETWORK=192.168.0.0/24
- OPENVPN_OPTS=--mute-replay-warnings
ports:
- 8088:8088
restart: unless-stopped
torrent:
image: linuxserver/qbittorrent:latest
container_name: qbitt_vpn
network_mode: service:vpn
environment:
- WEBUI_PORT=8088
- PUID=1024
- PGID=100
volumes:
- /volume3/docker/qbitt_vpn/:/config
- /volume2/Share/TV:/downloads
healthcheck:
test: ["CMD", "curl", "-f", "https://www.google.com"]
interval: 1m30s
timeout: 15s
retries: 3
labels:
- "deunhealth.restart.on.unhealthy=true"
depends_on:
- vpn
restart: always
이러한 답변과 예제까지 너무나 감사합니다. :)
저 Default의 의미는 헬스체크 사용시의 의미로 통상 기본이라던가 그런게 아니었군요~!
OPENVPN_OPTS=--inactive 3600 --ping 10 --ping-exit 60 # VPN 연결이 끊어지면 컨테이너 강제 종료(킬 스위치)
위옵션 덕분인지 몰라도 다행히 기본적으로 헬씨로 표현되는걸 보니 transmission-openvpn의 상태는 상태체크를 하는 것 처럼 보이는군요!
설정을 자세히 살펴보니 단순히 헬스체크를 한다는게 요점이 아니군요!
나요기님의 설정을 일부 따라가 보겠습니다.
수정해보니 언헬씨일때 재기동이 잘 따라가는데 이게 결국 라벨을 지정해야만 했었군요!
추가로 curl 테스트가 불가한 컨테이너는 어떻게 체크해야할지 아리송하긴합니다.
너무나 감사합니다!
컨테이너가 연결이 끊기면 unhealthy가 되는 게 아니라 그냥 종료되는 걸로 보이는데, restart: always 또는 on-failure옵션으로는 안 되는 건가요?
아직도 정확한 이해를 하지 못해 설명이 부실합니다 :(
수동설정도있어요
https://dirmathfl.tistory.com/m/429
도커yml 설정
cmt alert