[NET] NCP - Global DNS 연결 절차 - Load balance

liho·2023년 9월 21일
0

Network

목록 보기
14/24
post-thumbnail

목표 :
1) 23.09.11 ~ 23.09.27 1차 프로젝트(Spring 기반) 결과물을 개인 도메인 bitsns.site(DNS)에 배포
2) 도메인 구매후 NCP(Naver Cloud Platform) 환경에서 도메인 등록 및 가상의 web-server로 접속하여 결과물 실행
3) infra를 다시 새로 구축한다는 마음으로 초심자도 보고 따라할수 있게 설명(ip는 임시적 값으로 설정)

도메인 구입 & setting

  • 가비아 도메인 구입후 해줘야 할 과정


    도메인을 구매한 후 해당 도메인의 웹 호스팅, 클라우드 서비스, 또는 특정 플랫폼과 통합하여 사용하려면 도메인 네임 서버를 해당 플랫폼의 네임 서버로 변경하여 도메인과 관련된 모든 설정과 서비스를 하나의 플랫폼에서 관리하고 편리하게 활용한다.

  • DNS를 활용한 architecture 설계 구성 계획

server 구축

bitcamp-VPC에 1개의 proxy-server를 구성으로 개발을 위한 private-server, DB를 위한 DB-server구축한다.

Load Blanace를 위한 TG 설정

  • TG 설정

    • 리스너 규칙으로 분리 가능하기에 port는 동일한 TG 생성해도 괜찮다.

    • Health check (하단의 helloController로 test)
      ✅ GET은 서버에게 데이터를 요청하는 용도 (읽기 전용 작업에 사용)
      ✅ POST는 서버에게 데이터를 전송하는 용도 (데이터를 서버에 제출하거나 변경하는 작업에 사용)
      ✅ 정상/ 실패 임계값 주기 가이드 라인
  • DNS 연결한 server 적용

    • 302 상태로 redirection 상태임을 확인
  • HelloControll test port 설정 (server 적용과 Health check는 위와 동일)

  • LB 설정

    • Listener 설정
    • 도메인과 join할 서버를 target하는 group으로 액션! (조건은 default)

LB / TG 설정 후 GlobalDNS 작업

  • * => 와일드 카드로 모든 호스트(www 포함)를 포함하는 레코드 추가후 배포

    • 예시 : 설정 배포까지 해야 완성
    • 처음 설명했던 도메인 구매 사이트에서 네임서버에 등록해줘야 할 값!

도메인 test

  • LB 작업을 마친후 server와 접속 DNS test helloApllication test (ununtu-18.04)
 apt-get update  
apt install openjdk-17-jdk
apt install gradle
apt upgrade gradle

// 백그라운드 작동
nohup java -jar {jar name} 1> nohup.log 2>&1 &

  • New Project 생성 후 Apllication 작성 및 build를 통한 /build/libs의 .jar 파일을 서버에 배포 후 -jar 명령으로 실행 및 application 작동 확인!
  • package 경로 확인 후 동일하게 생성

gradle.build 설정!

..
dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.boot:spring-boot-starter-actuator'
    implementation 'org.testng:testng:7.1.0'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
...
jar {

    // 기본 JAR 파일( 앱이름-plain.jar) 생성을 비 활성화
    enabled = false
}

HelloApplication

package com.example.hello;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class HelloApplication {

  public static void main(String[] args) {
    SpringApplication.run(HelloApplication.class, args);
  }

HelloController

package com.example.hello;

import org.springframework.web.bind.annotation.*;

@RestController
public class HelloController {
  @GetMapping("/")
  @ResponseBody
  
  public String hello() {
    return "hello ";
  }
}

HelloApplicationTests

  • src/test/java/com/example/hello/HelloApplicationTests
package com.example.hello;

import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;

@SpringBootTest
class HelloApplicationTests {

  @Test
  void contextLoads() {}
}

Finish

  • 아직 https protocol 적용 전이라서 주의 요함!

0개의 댓글