Files
obsidian/infra/infra-hosts.md

12 KiB

title, updated, tags
title updated tags
인프라 호스트 및 네트워크 2026-03-22
infra
network
kr-zone
openwrt

SSH 접속 정보

인프라 호스트 SSH 접속 정보: incus-jp1 (공인 42.125.196.116, Tailscale 100.109.123.1), incus-kr1 (공인 220.120.65.245, Tailscale 100.84.111.28), incus-hp2 (Tailscale 100.100.52.34), osaka(gw) (ssh root@100.108.39.107, 공인 172.233.93.180), Synology NAS (SSH 불가, Tailscale 100.126.100.82)

서버 상세

SSH 호스트 Tailscale IP 역할 비고
apisix-osaka 100.108.39.107 apisix API Gateway (오사카) SSH 직접 접속
incus-jp1 100.109.123.1 Incus 호스트 (도쿄) agents, db, default, monitoring 프로젝트
incus-kr1 100.84.111.28 Incus+K3s 호스트 (서울) GTX 1080 Ti, K3s control-plane (LAN 192.168.9.214), default 프로젝트
incus-kr2 100.119.109.41 Incus+K3s 호스트 (서울) K3s control-plane (LAN 192.168.9.135), default, inbest 프로젝트
incus-hp2 100.100.52.34 Incus+K3s 호스트 (서울) Xeon E5-2670 32코어, 188GB RAM, K3s control-plane (LAN 192.168.9.134), default, inbest 프로젝트
openwrt-gw 100.66.60.66 OpenWrt 라우터 (서울) HAProxy: 80/443 → APISIX hostNetwork 9080/9443 (3노드 roundrobin)
sandbox-tokyo 100.79.87.48 테스트 서버 (도쿄, Linode) vault-prod, wg-easy, nginx-tcp-proxy (Docker)
relay4wd 100.103.161.4 APISIX Gateway (서울, AWS Lightsail) inbest 전용, Docker APISIX 3.15.0, Debian 12, nano $5/월, SSH: admin + lightsail.pem
synology 100.126.100.82 NAS (시놀로지)

서울 K3s 클러스터

서울존 3대(hp2, kr1, kr2)를 K3s v1.34.5+k3s1 클러스터로 구성. 모두 control-plane 역할.

노드 LAN IP OS
incus-hp2 192.168.9.134 Debian 13 (trixie)
incus-kr1 192.168.9.214 Debian 13 (trixie)
incus-kr2 192.168.9.135 Debian 13 (trixie)

주요 네임스페이스: anvil, apisix, argocd, cert-manager, db, gitea, ironclad, kroki, longhorn-system, mq, openmemory, rabbitmq-system, safeline, system-upgrade, tools, vault

Traefik: DaemonSet (3노드), LoadBalancer 192.168.9.134/135/214:80,443,5672

APISIX: Deployment (replicas 3, hostNetwork, strategy Recreate), 3노드 :9080/:9443 바인딩

트래픽 흐름: 외부 → OpenWrt HAProxy (TCP 80/443) + nftables (UDP 443) → APISIX hostNetwork (9080/9443, 3노드) → K3s 서비스 → pods

Helm 릴리스

Release Namespace Chart App Version
apisix apisix apisix-2.13.0 3.15.0
argocd argocd argo-cd-9.4.14 v3.3.4
cert-manager cert-manager cert-manager-v1.20.0 v1.20.0
gitea gitea gitea-12.5.0 1.25.4
longhorn longhorn-system longhorn-1.8.2 v1.8.2
reflector kube-system reflector-10.0.18 10.0.18
safeline safeline safeline-10.1.0 9.3.2
traefik kube-system traefik-39.0.201 v3.6.9
traefik-crd kube-system traefik-crd-39.0.201 v3.6.9
rabbitmq-operator rabbitmq-system (kubectl apply) -
vault vault vault-0.32.0 1.21.2

ArgoCD Applications

App Namespace Repo
anvil anvil infra-apps (anvil-hosting)
ironclad ironclad infra-apps
bunnycdn-mcp tools bunnycdn-mcp
cf-bouncer-manager tools cf-bouncer-manager
cloud-api-emulator tools cloud-api-emulator
n8n tools infra-apps
namecheap-api tools namecheap-api
nocodb tools infra-apps
pgcat tools infra-apps
vultr-api tools vultr-api

kubectl 직접 관리 (Helm/ArgoCD 미적용)

db, kroki, mq (RabbitmqCluster CR), openmemory, system-upgrade

TCP 튜닝 (3노드 공통)

  • BBR 혼잡 알고리즘 + fq qdisc (/etc/sysctl.d/99-bbr.conf, /etc/modules-load.d/bbr.conf)
  • tcp_fin_timeout=15, tcp_fastopen=3, netdev_max_backlog=8192, tcp_max_syn_backlog=8192, tcp_keepalive_time=600, ip_local_port_range=1024-65535 (/etc/sysctl.d/99-tcp-tuning.conf)

서비스 위치

서비스 위치 접근 방법
apisix (오사카) apisix-osaka (Linode, Docker) SSH / Admin API
apisix (서울) K3s 클러스터 (apisix ns, hostNetwork 3노드) kubectl / Admin API (ClusterIP 10.43.70.216:9180, allow: 127.0.0.1/24 + 100.64.0.0/10 + 192.168.9.0/24 + 10.42.0.0/16)
Anvil K3s 클러스터 (anvil ns): nginx(x2), php-fpm(x5), redis, ssh-server, proxysql kubectl
ArgoCD K3s 클러스터 (argocd ns) kubectl / NodePort 30080
cert-manager K3s 클러스터 (cert-manager ns) kubectl
gitea K3s 클러스터 (gitea ns): gitea, postgresql, valkey kubectl, gitea.anvil.it.com
Ironclad K3s 클러스터 (ironclad ns): nginx, php-fpm, redis, ssh-server, proxysql kubectl / NodePort 30297
Kroki K3s 클러스터 (kroki ns) kubectl
Longhorn K3s 클러스터 (longhorn-system ns): 분산 스토리지 v1.8.2 kubectl
n8n K3s 클러스터 (tools ns) kubectl
NocoDB K3s 클러스터 (tools ns) kubectl, nocodb.inouter.com
OpenMemory K3s 클러스터 (openmemory ns): mcp, ui, qdrant kubectl
PgCat K3s 클러스터 (tools ns): PostgreSQL pooler kubectl
ProxySQL K3s 클러스터 (db ns) kubectl
SafeLine WAF K3s 클러스터 (safeline ns): detector, mgt, fvm, chaos, luigi, pg kubectl, safeline.inouter.com
vault K3s 클러스터 (vault ns): HA 3노드(vault-0/1/2), agent-injector, mcp-server kubectl / vault CLI / MCP
Vault (legacy) sandbox-tokyo (Docker, vault-prod) vault CLI
WireGuard sandbox-tokyo (wg-easy Docker)
BunnyCDN MCP K3s 클러스터 (tools ns) kubectl
cfb-manager K3s 클러스터 (tools ns): CrowdSec-Firewall-Bouncer 관리 kubectl
cloud-api-emulator K3s 클러스터 (tools ns): Linode/Vultr/Namecheap API kubectl
Prometheus, Grafana jp1 (monitoring 프로젝트) incus exec --project monitoring
DB 서버 jp1 (db 프로젝트) incus exec --project db
DB (분산) etcd+mariadb+postgres 각 서울 노드 Incus 컨테이너 incus exec
etcd (relay4wd용) jp1 (db), etcd-1 (10.253.102.11) etcd 2379
BunnyCDN 외부 SaaS BunnyCDN MCP 서버 / API
RabbitMQ K3s 클러스터 (mq ns): RabbitmqCluster Operator, ironclad vhost kubectl, Traefik TCPRoute 5672
backup kr2 → NAS → R2 systemd timer, rclone

Incus 프로젝트

  • jp1: agents, db, default, monitoring
  • kr1: default
  • kr2: default, inbest
  • hp2: default, inbest

jp1 컨테이너

agents 프로젝트: anvil, awl, blacksmith, cloak, courier, flux, forge, irondesk, irondesk-openmemory, openclaw, rabbitmq, smelt, stamp, tally, web

db 프로젝트: etcd-1 (10.253.102.11)

default 프로젝트: baserow, crowdsec (10.253.100.240), cs-cf-worker-bouncer, dev-web, gitea-runner, hey, iac-route, infra-tool, juice-shop, k8s, pricing-api, ssh-test, sshpiper, telegram-web-client, tor-server, vaultwarden, voice-api

monitoring 프로젝트: grafana (10.253.103.199), prometheus (10.253.100.193)

kr1 컨테이너

default 프로젝트: etcd (10.100.3.7), mariadb-2 (10.100.3.64)

kr2 컨테이너

default 프로젝트: etcd (10.100.1.198), mariadb-3 (10.100.1.162), cloudflared (10.100.1.95)

  • safeline VM: 셧다운 (K3s safeline ns로 이전, 삭제 예정)

inbest 프로젝트: mariadb10, nginx, php5, php8, phpmyadmin, sftp

hp2 컨테이너

default 프로젝트: etcd (10.100.2.11), jarvis (10.100.2.162), mariadb-1 (10.100.2.234), postgres-1 (10.100.2.5), trader (10.100.2.9)

GPU

kr1에 NVIDIA GeForce GTX 1080 Ti (11GB VRAM) 장착. 호스트 드라이버 550.163.01, CUDA 12.4.

Incus GPU 이미지

이미지 설명 크기
docker-gpu Debian trixie + Docker CE + NVIDIA Container Toolkit 295MB
podman-gpu Debian trixie + Podman + NVIDIA Container Toolkit (CDI) 277MB

GPU 컨테이너 사용법

# 컨테이너 생성
incus launch docker-gpu my-container

# GPU 패스스루 + 호스트 드라이버 자동 주입
incus config set my-container nvidia.runtime true
incus config device add my-container gpu gpu

# 컨테이너 안에서 GPU 확인
incus exec my-container -- nvidia-smi

nvidia.runtime=true 설정 시 호스트의 NVIDIA 드라이버 라이브러리가 컨테이너에 자동 마운트됨. 컨테이너 안에 드라이버 설치 불필요.

Docker: --runtime=nvidia 또는 --gpus all로 GPU 사용. Podman: CDI 방식, --device nvidia.com/gpu=all로 GPU 사용.

KR존 네트워크 토폴로지

인터넷
  └── OpenWrt 라우터 (공인 IP: 220.120.65.245, 내부: 192.168.9.1)
        ├── incus-kr1  (192.168.9.214)  ← K3s control-plane
        ├── incus-kr2  (192.168.9.135, br-uplink 고정)  ← K3s control-plane
        └── incus-hp2  (192.168.9.134)  ← K3s control-plane

외부 트래픽 흐름 (TCP):
  인터넷 → OpenWrt HAProxy(:80/:443) → APISIX hostNetwork(:9080/:9443, 3노드 roundrobin) → K3s svc → pods

외부 트래픽 흐름 (QUIC/HTTP3):
  인터넷 → OpenWrt nftables DNAT(UDP :443) → APISIX hostNetwork(:9443, numgen mod 3 roundrobin) → K3s svc → pods

내부 트래픽 흐름:
  LAN → K3s/Traefik(192.168.9.x:80/443) → pods 직접
  • 게이트웨이: OpenWrt 라우터 (root@192.168.9.1, SSH user: root)
  • OpenWrt HAProxy (TCP, mode tcp, 3노드 로드밸런싱):
    • frontend ft_http :80 → backend bk_apisix_http (roundrobin)
    • frontend ft_https :443 → backend bk_apisix_https (roundrobin)
    • backend 서버: hp2(192.168.9.134:9080/9443), kr1(192.168.9.214:9080/9443), kr2(192.168.9.135:9080/9443)
    • stats: :9999 (admin/admin)
  • OpenWrt QUIC/HTTP3 (UDP, nftables DNAT):
    • UDP 443 → numgen inc mod 3 → hp2/kr1/kr2 :9443 roundrobin
    • CDN IP 필터도 UDP 443에 적용됨
  • K3s datastore: Incus etcd 3노드 클러스터 (192.168.9.214, 192.168.9.135, 192.168.9.134)
    • /registry/ — K3s 클러스터 백엔드 스토어
    • /patroni/nocodb-cluster — NocoDB PostgreSQL HA
  • APISIX etcd (K3s 내부): apisix-etcd StatefulSet (ClusterIP 10.43.20.100:2379, prefix /apisix)
  • OVN 네트워크: ovn1 (10.165.246.0/24) — hp2↔kr2 간 오버레이
  • CDN IP 필터: BunnyCDN + Cloudflare IP만 80/443 허용, 그 외 WAN 차단
    • 스크립트: /etc/cdn-filter-update.sh
    • nftables: /etc/nftables.d/10-cdn-filter.nft
    • 크론: 매일 04:00 업데이트
  • Tailscale 광고 대역: 10.100.1.0/24 (kr2), 10.100.2.0/24 (hp2), 10.100.3.0/24 (kr1), 192.168.9.0/24 (LAN)
  • DNS rebind 예외: inouter.com (OpenWrt dnsmasq)
  • 공인 IP 220.120.65.245는 OpenWrt 라우터의 IP

네트워크 대역

네트워크 대역: 100.0.0.0/8 (Tailscale VPN), 10.253.0.0/16 (incus-jp1 내부), 10.100.3.0/24 (incus-kr1 incusbr0), 10.100.1.0/24 (incus-kr2 incusbr0), 10.100.2.0/24 (incus-hp2 incusbr0), 10.179.99.0/24 (incus-kr2 APISIX 전용), 10.42.0.0/16 (k8s 파드), 10.43.0.0/16 (k8s 서비스 ClusterIP), 172.17.0.0/16 (Docker 브릿지, 무시), 192.168.9.0/24 (kaffa 로컬 LAN)

K3s 클러스터 노드

노드명 K3s Internal IP 역할 호스트 위치
incus-hp2 192.168.9.134 control-plane
incus-kr1 192.168.9.214 control-plane 서울
incus-kr2 192.168.9.135 control-plane 서울

IPv6 prefix

jp1 prefix는 2400:8905:e002:1d02

web 컨테이너

web 컨테이너 (incus agents 프로젝트, IP 10.253.100.159): Caddy :80으로 /var/www/sites 서빙, btrfs-pool/shared-sites 볼륨을 stamp과 공유. ironclad.it.com 랜딩페이지 서빙 용도.

대시보드

사용 중인 대시보드는 dashboard.inouter.com(내부용)

Xray

Xray VLESS+XHTTP 스텔스 구성

네트워크 정책

실사용: 국내 트래픽은 직접, 해외는 프록시, 광고는 차단