본문 바로가기

Cloud/Oracle Cloud Infrastructure

20. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 로드밸런서 (로드밸런서생성)

2019/01/16 - [Cloud/Oracle Cloud Infrastructure] - 19. OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 - 로드밸런서 (아파치웹서버)

4단계. 로드밸런서 구성

로드밸런서 생성

퍼블릭 로드밸런서를 구성할 때는 앞서 살펴본 대로 Primary 로드밸런서와 Standby 로드밸런서를 담기 위한 서브넷을 별도로 각각 만들어야 하는데, VCN 구성 단계에서 “subnetLBA”, “subnetLBS” 라는 이름으로 이미 만들었다. 그리고 로드밸런서의 인터넷과의 연결을 위해 시큐리티 설정 설정을 앞서 했다.

지금부터는 로드밸런서를 생성한다. 로드밸런서 생성은 [Core Infrastructure] 아래 [Networking] > [Load Balancers] 화면에서 한다. Compartment “dbapp_comp” 것을 확인하고 진행한다. “Create Load Balancer” 클릭하면 로드밸런서 생성 창이 나타난다.

로드밸런서 이름, Shape, VCN, 서브넷 등을 입력하고 “Create” 클릭하면 로드밸런서가 생성된다.


       Name: 로드밸런서 이름 입력. “loadBalancer” 입력

       Shape: 로드밸런서 Shape 선택. OCI 로드밸런서는 제공하는 네트웍 대역폭에 따라 세가지 Shape 있다. 100Mbps, 400Mbps, 8000Mbps. 여기서는 “100 Mbps” 선택했다.

       Virtual Cloud Network: 로드밸런서가 소속될 VCN 선택한다. “dbapp_vcn” 선택.

       Subnet(1 of 2): Primary 로드밸런서의 서브넷을 선택한다. “subnetLBA” 선택

       Subnet(2 of 2): Standby 로드밸런서의 서브넷을 선택한다. “subnetLBS” 선택

 

로드밸런서가 생성되면, 아래와 같이 로드밸런서에 퍼블릭 IP 할당된다. 로드밸런서의 퍼블릭 IP 통해 들어오는 트래픽이 이후 설정할 백엔드 서버, 두대의 웹서버로 분산된다.


백엔드 셋 생성

OCI 로드밸런서에서 로드 밸런싱 대상이 되는 서버들, 로드밸런서로 부터 받은 TCP 또는 HTTP 트래픽에 응답해서 컨텐츠를 만들어내는 어플리케이션 서버를 백엔드 서버(Backend Server)라고 부른다. 그리고 이러한 백엔드 서버를 묶은 논리적인 개념을 백엔드 (Backend Set)이라고 하는데 로드 밸런싱 정책은 백엔드 단위로 설정된다.

OCI 로드밸런서의 부하 분산 작동 방식은 가중치에 따라 연결(Connection) 수를 조절하는 방식이다. 가중치가 3 서버는, 가중치가 1 서버 보다 3 많은 연결을 받게 되는데, 가중치를 어떻게 부여할 지는 정책에 따라 달라진다. OCI 로드밸런서의 정책은 Round Robin, Least Connections, IP Hash 세가지로 설정할 있다.

이번 단계에서 작업은 ①백엔드 셋을 만들면서 부하 분산 정책을 설정하고, 백엔드 셋에 백엔드 서버(여기서는 웹서버#1,2) 할당할 것이다.

백엔드 셋을 만들기 위해 앞서 만든 로드밸런서 “loadBalancer” 상세화면 하단의 “Create Backend Set” 클릭한다.


“Create Backend Set” 클릭하면 백엔드 생성 창이 나타난다. 백엔드 이름, 정책, Health Check 설정 정보 등을 입력하고 “Create” 클릭한다.


       Name: 백엔드 이름 입력. “backendSet” 입력

       Traffic Distribution Policy: 백엔드 서버로 트래픽을 분산시킬 어떠한 방식으로 지를 목록에서 선택. 여기서는 “Weighted Round Robin” 선택

-         Round Robin: 백엔드 목록에 있는 서버 순서대로 순차적으로 트래픽을 분산

-         Least Connections: 활성화된 연결(Active connection) 수가 가장 적은 백엔드 서버쪽으로 트래픽을 분산

-         IP Hash: 네트웍 트래픽 소스의 IP 주소를 해싱 (Hashing key) 해서 트래픽을 동일한 백엔드 서버로 라우팅하는 방식. 동일한 소스 클라이언트의 요청은 해당 백엔드 서버가 살아 있는한 최초 연결과 동일한 백엔드 서버로 트래픽이 계속 향하도록 하는데 목적

       Use SSL: 백엔드 셋에 SSL 인증을 추가할 사용. 여기서는 체크하지 않음 (기본값). 체크할 경우 인증서 정보 등을 필요로 .

       Use Session Persistence: 클라이언트에서 백엔드 웹서버로 세션 정보를 유지할 사용. 여기서는 체크하지 않음 (기본값). 체크할 경우 쿠키 이름, Fallback 여부 등에 대한 정보를 필요로 .

       Health Check: 백엔드 서버의 상태 체크를 설정한다. 테스트에서는 프로토콜, 포트, URL Path 설정했다.

-         Protocol: “HTTP” “TCP” 사용할 통신 프로토콜을 선택한다. “HTTP” 선택

-         Port: Health Check 사용될 백엔드 서버의 포트를 입력한다. “80” 포트를 사용

-         Interval in ms: 선택 항목임. Helath Check 빈도를 millisecond 단위로 입력한다. 입력하지 않으면 10000 (10) 적용된다. 여기서는 입력하지 않았다.

-         Timeout in ms: 선택 항목임. Health Check 응답하는데 로드밸런서가 기다리는 최대 시간을 millisecond 단위로 입력한다. 여기서 설정한 시간 내에 응답이 경우만 Health Check 성공으로 간주된다. 값을 입력하지 않으면 3000 (3) 적용된다. 여기서는 입력하지 않았다.

-         Number of retries: 선택 항목임. Health Check 재수행 시도 횟수. 이를 넘어가도 응답이 없으면, 백엔드 서버가 정상 상태가 아닌 것으로 판단한다. 기본값은 3이다. 여기서는 입력하지 않았다.

-         URL Path (URI): Health Check 수행할 URL 엔드 포인트. “/” 입력했다.

-         Status Code: 프로토콜이 “HTTP” 경우만 설정한다. 정상 상태인 백엔드 서버가 리턴해야 상태 코드를 지정. 여기서는 입력하지 않았다.

-         Response Body Regex: 프로토콜이 “HTTP” 경우만 설정한다. 백엔드 서버로 부터 받은 응답을 파싱(parsing)하기 위한 정규식. 여기서는 입력하지 않았다.  

 

참조. Health Check 상태

백엔드 셋을 구성하는 백엔드 서버의 전체적인 상태를 나타내는 레벨은 다음과 같다. Prmary, Standby 로드밸런서 다의 상태를 나타낸다.


       OK: Primay, Standby 로드밸런서 모두 OK 상태를 리턴하는 경우

       WARNING: Primay, Standby 로드밸런서 , 하나만 OK 리턴하는 경우

       CRITICAL: Primay, Standby 로드밸런서 모두 OK 상태를 리턴하지 못하는 경우

       UNKNOWN: Primay, Standby 로드밸런서 하나의 상태가 UNKNOWN 이거나, 시스템이 관련 메트릭을 가져오지 못하는 경우

 

 백엔드 셋을 생성하고 나면 다음과 같은 생성 상태 팝업이 나타난다.


작성자: 정영균


OCI를 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 시리즈

1. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Intro

2. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

3. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN

4. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (인터넷게이트웨이)

5. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (라우트테이블)

6. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (시큐리티리스트)

7. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – VCN (서브넷)

8. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버

9. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (시큐리티 리스트)

10. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (인스턴스)

11. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (웹서버 연결)

12. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – Bastion 서버 (NAT 설정)

13. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버

14. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (rsync)

15. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정)

16. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템)

17. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 웹서버 (NFS 설정파일시스템마운트)

18. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서

19. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (아파치웹서버)

20. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (로드밸런서생성)

21. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (백엔드서버)

22. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 로드밸런서 (리스너)

23. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스

24. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템)

25. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (데이터베이스구성)

26. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

27. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (DB 시스템연결)

28. OCI이용해서데이터베이스어플리케이션아키텍쳐구성하기 – 데이터베이스 (백업)

29. OCI 이용해서 데이터베이스 어플리케이션 아키텍쳐 구성하기 – 데이터베이스 (DR 구성)