안녕하세요. 정말 오랜만에 글을 쓰게 되었습니다.
회사 업무로 굉장히 바빳던 데다가, 이번에 서버 이전도 함께 진행하게 되어 오래 걸렸습니다.

회사 업무와 업무 사이사이에는 하드웨어 쇼핑을 진행하였습니다.
Oracle Cloud infrastructure는 램은 24GiB로 충분하지만, CPU가 고작 4코어 밖에 할당이 불가능하였습니다.

지금까지는 1코어 8GiB 머신에 k8s를 올려서 워드프레스와 온갖 서비스를 제공하였으나,
성능의 한계를 경험하게 되어 on premise로 구성하게 되었습니다.

글은 약 4개월 만에 쓰게 되었고, 약 3주 정도는 wordpress 접근이 불가능했었습니다.

완벽한 고가용성

기존에는 OCINetwork Loadbalancer와 Instance를 이용하여 k8s를 서비스 하였습니다.

NLB의 장점은 public IP를 받을 수 있다는 점입니다.
게다가 NLB는 당연히 이중화가 되어있죠.

이번에 on premise로 구성하면서도 가용성을 위해 이 NLB를 사용하고 싶었습니다.

NLB는 종료할일이 없고, OCI VM은 4대로 구성하여 3대가 꺼진다고 하여도 로드 밸런싱이 제공됩니다.
집에 있는 쿠버네티스와 ceph도 3개의 물리 머신으로 quorum이 만족되어있습니다.
마지막으로 쿠버네티스는 3개의 master(server)와 3개의 worker(agent)로 구성하였습니다.

물리머신은 한대까지는 종료되어도 서비스에 지장이 없고,
가상 머신은 워커 노드 한개를 제외한 2개의 워커 노드와 3개의 마스터 노드가 종료되어도 해당 노드에 있는 pod는 서비스하는데 지장이 없습니다.

OCI VM의 역할

NLB가 존재한다고 하여도, NLB는 집에 있는 on premise로 loadbalancing을 제공하지 않습니다.
사실 OCI는 제공을 해주긴 하는데, 유료인데다가 대역폭도 낮습니다.ㅠㅠ

그래서 NLB에서 OCI의 인스턴스로 트래픽을 전달하고, OCI에는 로드밸런싱 애플리케이션과 VPN을 구성하여 on premise의 고가용성을 확보합니다.
이를 위해 gobetween(UDP), nginx stream(TCP), tailscale(VPN)을 이용하여 구성하였습니다.

대략 다음과 같은 구성을 가집니다.
네트워크 그림 그린 도구는 GNS3입니다.

OCI 인스턴스에는 성능 차이가 있어서 A1에 가중치가 높습니다.
k8s에도 wordpress는 agent 노드에만 올라가기 때문에 server 노드로 트래픽이 전달 되어도 agent로 전달해주는 역할만 수행합니다.
역시 가중치가 agent에 훨씬 높게 설정 되어있습니다.

마무리

추후 구성 설정 방법에 대해서는 따로 올리도록 하겠습니다.

“wordpress에 고가용성을 적용시켰습니다”에 대한 2개의 응답

  1. zozez 아바타
    zozez

    저도 비슷하게 OCI에 인스턴스 3개랑 집에 있는 PC를 wiregurard로 묶어서 k3s 환경까진 구성했는데

    지금 구성은
    공인IP는 control-plain으로 쓸 vm instance 하나에 추가하고 nlb구성은 별도로 하지 않았습니다.
    이 상태에서 cloudflare turnel을 이용하면 외부에서 k3s에 접근 가능하긴 한데
    cloudflare의 100mb 업로드 제한 때문에 turnel을 이용하지 않고 내부로 접근하려고 하니 쉽지가 않네요ㅜㅜ

    cola16k님 어떤 방식으로 설정 하셨는지 올려주시면 많은 도움 될 것 같은데 포스팅 기대하겠습니다:)

    1. wp.cola16 아바타

      좋은 의견 감사합니다.
      요즘 엔비디아랑 싸우느라고 블로그를 못들어왔네요.
      게시글은 작성 안해도 이틀에 한번씩은 접속해서 댓글은 확인 했었는데…
      암튼 저도 지금은 nlb는 응답속도가 중요한 몇몇 애플리케이션만을 위해서 생성해두고 사용중입니다.

      저는 클라우드 플레어를 통해서 100MB 제한이 있는대로 사용 중이구요.
      100메가 이상이 필요한 일에 대해서만 wireguard나 tailscale을 이용하고 있습니다.

      외부 공유하는 장소에 100MB 이상의 업로드가 필요한 경우도 NLB를 사용하고 있긴 합니다.
      혹시 nlb를 구성하지 않으려고 하시는 이유를 알수 있을까요?

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다


Ads Blocker Image Powered by Code Help Pro

광고 차단 감지됨!

닫기를 누르면 이용하실 수 있지만, 광고 차단은 해제해주시면 좋겠습니다.
Powered By
100% Free SEO Tools - Tool Kits PRO