Azure Load Balancer

Adam·2024년 7월 29일
0

개발일지

목록 보기
6/15

애저 환경에서 로드 밸런서를 이용해서 서비스를 안정화를 해야하는 부분이 있어서 애저 로드 밸런서를 사용하기 전 조사한 내용에 대해서 간단히 정리를 해보려고 한다.

What is Azure Load Balancer?

Azure Load Balancer는 Microsoft Azure에서 제공하는 고가용성 및 확장성을 지원하는 트래픽 관리 서비스입니다. 이 서비스는 클라우드 애플리케이션의 부하 분산을 도와 서버의 성능을 최적화하고, 가용성을 높이며, 장애 발생 시 자동으로 트래픽을 재배치하여 서비스를 지속적으로 유지할 수 있게 합니다. 아래는 Azure Load Balancer에 대한 상세한 설명입니다.

1. 기능 및 역할

Azure Load Balancer는 다양한 기능을 제공합니다:

부하 분산 (Load Balancing): 여러 서버(또는 VM)에 트래픽을 고르게 분산시켜, 특정 서버에 과부하가 발생하지 않도록 합니다. 이는 애플리케이션의 성능을 최적화하고 응답 시간을 줄이는 데 도움이 됩니다.

고가용성 (High Availability): 하나의 서버가 장애를 겪더라도 다른 서버가 트래픽을 처리할 수 있게 해줍니다. 이를 통해 서비스 다운타임을 최소화하고 사용자의 경험을 개선할 수 있습니다.

유지보수 모드 지원: 서버의 유지보수가 필요할 경우 특정 서버에 대한 트래픽을 일시적으로 중지하고, 다른 서버로 트래픽을 재배치할 수 있습니다.

2. 구성 요소

Azure Load Balancer는 여러 구성 요소로 이루어져 있습니다:

프론트엔드 IP 구성 (Frontend IP Configuration): 클라이언트가 트래픽을 보낼 수 있는 공용 또는 사설 IP 주소입니다. 이 IP를 통해 트래픽이 Load Balancer로 들어옵니다.

백엔드 풀 (Backend Pool): 트래픽이 분산되는 서버 또는 VM의 집합입니다. 백엔드 풀에 추가된 서버들은 Load Balancer의 트래픽을 처리하게 됩니다.

부하 분산 규칙 (Load Balancing Rules): 트래픽을 어떻게 분산할지를 정의하는 규칙입니다. 예를 들어, HTTP 트래픽은 특정 포트를 통해 백엔드 풀의 서버로 전달되도록 설정할 수 있습니다.

프로브 (Probes): 백엔드 풀에 있는 각 서버의 상태를 모니터링하는 기능입니다. 서버가 정상적으로 작동하는지 확인하며, 문제가 발생한 서버는 자동으로 트래픽 분산 대상에서 제외됩니다.

3. 유형

Azure Load Balancer는 두 가지 주요 유형으로 나뉩니다:

공용 Load Balancer (Public Load Balancer): 인터넷에 노출된 서비스의 트래픽을 분산합니다. 클라이언트는 공용 IP 주소를 통해 애플리케이션에 접근할 수 있습니다.

사설 Load Balancer (Internal Load Balancer): VNet 내에서만 사용 가능한 트래픽 분산 기능을 제공합니다. 주로 내부 애플리케이션 간의 트래픽을 분산할 때 사용됩니다.

4. 사용 사례

Azure Load Balancer는 다양한 시나리오에서 사용될 수 있습니다:

웹 애플리케이션: 웹 서버의 부하를 분산하여 고가용성 및 성능을 보장합니다.

데이터베이스 클러스터: 데이터베이스 서버에 대한 트래픽을 분산하여 성능과 가용성을 높입니다.

API 서비스: API 요청을 여러 서버로 분산하여 서비스가 중단 없이 지속될 수 있도록 합니다.

5. 장점

확장성: 필요에 따라 쉽게 서버를 추가하여 시스템을 확장할 수 있습니다.

비용 효율성: 서버 자원을 효율적으로 사용하여 비용을 절감할 수 있습니다.

보안: 트래픽을 관리하고 제어하여 보안을 강화할 수 있습니다.

Azure Load Balancer는 클라우드 환경에서 고가용성과 성능을 유지하고자 하는 모든 애플리케이션에 필수적인 도구입니다. 이를 통해 복잡한 네트워크 트래픽을 효율적으로 관리하고, 사용자 경험을 개선할 수 있습니다.

Azure Load Balancer 설정(Public Load Balancer)

1. 리소스 그룹 생성

리소스를 관리하기 쉽게 리소스 그룹을 먼저 생성합니다.

  1. 포털 상단의 검색 바에 “리소스 그룹”을 입력하고 선택합니다.

  2. “+ 새 리소스 그룹”을 클릭하고 리소스 그룹 이름을 지정합니다.

  3. 사용할 지역을 선택하고 “검토 + 만들기”를 클릭하여 리소스 그룹을 만듭니다.

2. 가상 네트워크 (VNet) 및 서브넷 생성

Load Balancer와 VM들이 포함될 가상 네트워크를 생성합니다.

  1. “가상 네트워크”를 검색하여 선택한 후 “+ 추가”를 클릭합니다.

  2. 네트워크 이름을 지정하고, 동일한 리소스 그룹과 지역을 선택합니다.

  3. 기본 서브넷을 설정하거나, “서브넷 추가”를 클릭하여 추가적인 서브넷을 만듭니다.

  4. “검토 + 만들기”를 클릭하여 가상 네트워크를 생성합니다.

3. 가상 머신(VM) 생성 및 설정

분산할 웹 애플리케이션을 호스팅할 가상 머신을 생성합니다.

  1. “가상 머신”을 검색하여 선택한 후 “+ 추가”를 클릭합니다.

  2. 필요한 설정을 입력합니다:

• 리소스 그룹: 앞서 생성한 리소스 그룹 선택

• VM 이름, 지역, 이미지(운영체제), 크기 선택

• 인증 방법 선택 (SSH 키 또는 비밀번호)

  1. 네트워킹 탭에서, 앞서 만든 가상 네트워크와 서브넷을 선택합니다.

  2. 동일한 방법으로 추가적인 VM을 생성하여 다중 서버 환경을 구축합니다.

4. Azure Load Balancer 생성

이제 본격적으로 Load Balancer를 설정합니다.

  1. “Load Balancer”를 검색하여 선택한 후 “+ 추가”를 클릭합니다.

  2. 필요한 설정을 입력합니다:

• 리소스 그룹: 앞서 생성한 리소스 그룹 선택

• 이름: Load Balancer 이름 지정

• 지역 선택

• 퍼블릭 IP 주소: “새로 생성”을 클릭하여 퍼블릭 IP 주소를 만듭니다.

  1. “검토 + 만들기”를 클릭하여 Load Balancer를 생성합니다.

5. 백엔드 풀 설정

백엔드 풀은 트래픽을 분산할 VM 집합입니다.

  1. Load Balancer 페이지에서 “백엔드 풀”을 클릭합니다.

  2. “+ 추가”를 클릭하고, 백엔드 풀 이름을 지정합니다.

  3. 백엔드 풀에 포함될 VM들을 선택합니다.

  4. 설정을 완료하고 저장합니다.

6. 헬스 프로브(Health Probe) 설정

헬스 프로브는 백엔드 VM의 상태를 모니터링하는 데 사용됩니다.

  1. Load Balancer 페이지에서 “헬스 프로브”를 클릭합니다.

  2. “+ 추가”를 클릭하고, 프로브 이름을 지정합니다.

  3. 프로브 프로토콜(예: HTTP)과 포트(예: 80)를 설정합니다.

  4. 프로브 경로(예: /health)를 지정합니다.

  5. 인터벌과 비정상 임계값을 설정하고 저장합니다.

7. 부하 분산 규칙 설정

부하 분산 규칙은 트래픽이 백엔드 풀로 어떻게 분산될지를 정의합니다.

  1. Load Balancer 페이지에서 “부하 분산 규칙”을 클릭합니다.

  2. “+ 추가”를 클릭하고, 규칙 이름을 지정합니다.

  3. 프론트엔드 IP 설정에서 사용할 퍼블릭 IP를 선택합니다.

  4. 백엔드 풀을 선택하고, 백엔드 포트(예: 80)와 프로토콜을 설정합니다.

  5. 세션 지속성(Session Persistence) 옵션을 설정합니다.

  6. 헬스 프로브를 선택하고 저장합니다.

8. 테스트 및 검증

모든 설정이 완료되면, 실제로 작동하는지 테스트합니다.

  1. 퍼블릭 IP 주소를 브라우저에 입력하여 웹 애플리케이션에 접속합니다.

  2. 트래픽이 정상적으로 분산되는지 확인하기 위해 각 VM의 로그나 메트릭을 모니터링합니다.

  3. Active VM을 의도적으로 비활성화하여 Standby VM으로의 자동 트래픽 전환이 잘 이루어지는지 테스트합니다.

9. 모니터링 및 유지보수

Azure Monitor와 같은 모니터링 도구를 사용하여 Load Balancer 및 백엔드 VM의 성능과 상태를 지속적으로 모니터링합니다. 필요시 VM의 수를 조정하거나, 성능 튜닝을 수행합니다.

Azure Load Balancer 설정(Internal Load Balancer)

1. 로드 밸런서로 이동:

• Azure 포털에서 “로드 밸런서”를 검색하여 선택합니다.

• “+ 추가”를 클릭하여 새 로드 밸런서를 생성합니다.

2. 로드 밸런서 구성:

구독: 사용할 Azure 구독을 선택합니다.

리소스 그룹: 기존 리소스 그룹을 선택하거나 새로 생성합니다.

이름: 로드 밸런서의 이름을 지정합니다.

지역: VNet과 동일한 지역을 선택합니다.

유형: “내부”를 선택하여 내부 로드 밸런서를 만듭니다.

SKU: 요구사항에 따라 Basic 또는 Standard를 선택합니다. Standard는 더 많은 기능과 보안 옵션을 제공합니다.

가상 네트워크: LRS 서버와 다른 내부 서버가 위치한 VNet을 선택합니다.

서브넷: 로드 밸런서가 동작할 서브넷을 선택합니다.

3. 프론트엔드 IP 구성:

• “프론트엔드 IP 구성”을 클릭하고 “+ 프론트엔드 IP 구성 추가”를 선택합니다.

• 프론트엔드 IP 구성의 이름을 지정하고, 지정된 서브넷 내에서 사용할 정적 사설 IP 주소를 할당합니다. 이 IP는 내부 클라이언트가 로드 밸런서와 통신하는 데 사용됩니다.

4. 백엔드 풀:

• 로드 밸런서 페이지에서 “백엔드 풀”로 이동하여 새 백엔드 풀을 추가합니다.

• 백엔드 풀에 LRS 서버(VM)를 추가합니다. 이 서버들이 로드 밸런서로부터 트래픽을 수신하게 됩니다.

5. 헬스 프로브(Health Probe):

• 로드 밸런서 페이지에서 “헬스 프로브”로 이동하여 새 헬스 프로브를 추가합니다.

• 프로브 프로토콜(예: TCP)과 포트 번호를 설정하여 LRS 서버의 상태를 모니터링합니다. 예를 들어, 소켓 연결을 모니터링할 수 있습니다.

• 프로브 간격과 비정상 임계값을 설정하여 서버가 비정상 상태로 간주되는 조건을 정의합니다.

6. 부하 분산 규칙:

• 로드 밸런서 페이지에서 “부하 분산 규칙”으로 이동하여 새 규칙을 추가합니다.

• 프론트엔드 IP, 프로토콜(TCP/UDP), 및 포트 번호를 지정합니다.

• 백엔드 풀과 헬스 프로브를 규칙에 연결합니다.

• 세션 지속성 옵션을 설정하여 상태 유지가 필요한 연결을 유지할 수 있습니다.

7. 테스트 및 검증

  1. 내부 연결성 테스트:

• VNet 내 다른 서버에서 로드 밸런서의 프론트엔드 IP로 접속하여 LRS 서버로의 트래픽이 올바르게 라우팅되는지 확인합니다.

• LRS 서버가 수신한 요청을 기록하고 로그를 통해 트래픽 분산이 정상적으로 이루어지는지 확인합니다.

  1. 헬스 모니터링:

• 헬스 프로브가 LRS 서버의 상태를 정확하게 모니터링하는지 확인합니다. 로드 밸런서는 정상적인 서버로만 트래픽을 전달해야 합니다.

  1. 장애 대응 및 부하 테스트:

• LRS 서버 중 하나를 의도적으로 비활성화하여 다른 서버로 트래픽이 자동으로 전환되는지 테스트합니다.

• 부하 테스트를 수행하여 로드 밸런서가 트래픽을 균등하게 분산하는지 확인합니다.

8. 보안 및 유지보수

  1. 네트워크 보안 그룹(NSG):

• NSG를 적용하여 VNet 내 트래픽 흐름을 제어하고, 로드 밸런서 및 LRS 서버로의 접근을 허용된 내부 트래픽으로 제한합니다.

  1. 모니터링 및 로깅:

• Azure Monitor 및 기타 모니터링 도구를 사용하여 로드 밸런서와 백엔드 서버의 성능과 상태를 지속적으로 모니터링합니다.

• 문제 발생 시 신속하게 대응할 수 있도록 알림을 설정합니다.

  1. 정기적인 유지보수:

• VM과 애플리케이션에 최신 보안 패치를 적용하고 정기적으로 업데이트합니다.

• 로드 밸런서와 백엔드 풀의 구성을 필요에 따라 조정하여 최적의 성능을 유지합니다.

profile
Keep going하는 개발자

0개의 댓글