부하 평형기가 무엇인지, 언제 사용하는지 찾았습니다.
...네, 많은 일을 하면서 천천히 저를 괴롭히고 있습니다. 이것이 바로 제가 당신의 도움을 필요로 하는 이유입니다.청하다
우리 내 문제부터 시작합시다.
상상해 봐, 내가 새로운 모바일 응용 프로그램을 만들었어.내 시스템은 REST API를 사용하여 통신하는 프런트엔드 및 백엔드 서비스로 구성됩니다.이것은 나의 시스템 구조다.
단일 백엔드 인스턴스가 있는 아키텍처
나의 제품은 처음으로 출시되었는데, 단지 소수의 사용자만이 그것을 사용하고 있다.나의 백엔드 서비스는 여전히 예상대로 요청을 처리할 수 있다.나의 고객은 응용 프로그램이 매우 빨리 실행되기 때문에 매우 기쁘다.
현재, 내가 응용 프로그램에 더 많은 기능을 추가하면서 사용자도 증가하고 있다.나의 백엔드 서비스 처리 요청은 이전보다 많다.요청의 증가는 나의 백엔드 서비스에 영향을 미치기 시작하여 성능을 떨어뜨린다.모든 요청을 처리할 수 없기 때문에 백엔드 서비스도 중지되었습니다.이것은 가용성도 떨어졌다는 것을 의미한다.
사용자들은 프로그램이 느려졌다고 불평하기 시작했다.그들은 기분이 좋지 않다. 나도 마찬가지다. 왜냐하면 나는 사용자를 잃을까 봐 두렵기 때문이다.백엔드 성능을 향상시키기 위해 무엇을 할 수 있습니까?가용성을 높이기 위해 무엇을 할 수 있습니까?
몇 가지 방법으로 그것을 실현할 수 있다.응용 프로그램 알고리즘에 다시 접근할 수 있습니다.프로그래밍 언어를 바꿀 수 있습니다.서버에 더 많은 자원을 추가할 수 있습니다.백엔드 서비스 실례를 더 추가할 수 있습니다.네가 명명한 것이다.
이런 상황에서 나는 백엔드 서비스의 실례를 더 많이 추가할 것이다. 왜냐하면 나는 백엔드 서비스를 다시 쓸 시간이 충분하기 때문이다.
로드 밸런싱 도입
백엔드 서비스의 여러 가지 실례를 만들고 싶기 때문에, 요청을 모바일 응용 프로그램에서 이 실례로 바꾸는 메커니즘이 필요합니다.이곳에서 나는 부하 평형기를 사용했다.말 그대로 부하 평형기는 백엔드 실례 간에 작업 부하를 공유하는 데 쓰인다.여기는 나의 구조다.
여러 백엔드 인스턴스가 있는 아키텍처
부하 평형기는 자신의 알고리즘을 가지고 작업 부하를 공유한다.내가 선택할 수 있는 알고리즘은 매우 적다. 예를 들어 순환, 가중 순환, 최소 연결 등이다.나는 내가 필요로 하는 알고리즘을 선택할 수 있다.
이 장면을 사용하면 현재 나의 백엔드 서비스는 이전보다 더 적은 요청을 처리할 것이다.만약 내가 분당 평균 6000개의 요청을 처리한다고 가정한다면, 이 요청들은 백엔드 서비스로 처리된다.현재 나는 작업 부하를 세 개의 실례에 분배할 수 있다. 이것은 한 실례가 분당 2000개의 요청을 처리한다는 것을 의미한다.이것은 내가 성능과 정상적인 운행 시간을 향상시키는 데 도움을 줄 것이다.
우리는 HAProxy, Nginx, 클라우드 부하 균형 같은 부하 균형 기술을 사용할 수 있다.너는 네가 원하는 어떤 것도 고를 수 있다.
그 사건만 처리합니까?
분명히 아니야!부하 균형은 내가 고부하를 처리하고 싶은 상황만 처리하는 것이 아니다.그럼 또 뭐가 있을까요?
VM에서 컨테이너로 마이그레이션
가상 머신에서 실행되는 서비스가 있다는 것을 다시 한 번 상상해 봅시다.하지만 모든 배치를 용기로 옮기고 싶다는 것을 알아야 한다.간단하게 들린다. 왜냐하면 나는 용기를 사용하여 나의 모든 서비스를 재배치할 수 있기 때문이다.그 후에, 나는 모든 요청을 용기 집단으로 다시 정할 것이다.그런데 이게 좋은 방법인가요?
이런 방법은 위험이 너무 크다.용기 집단에 잘못된 배치가 있다고 가정해 보세요.그것은 정지를 초래할 수 있다.그렇다면 부하 평형기는 어떻게 나를 도와줍니까?
VM에서 컨테이너로의 마이그레이션 모드
용기 집단으로 직접 이동하는 것은 위험하기 때문에 나는 부분적으로 이동할 수 있다.모든 서비스를 용기 집단에 배치한 후, 나는 우선 그것에 대한 요청을 보내서 그것을 테스트하고 싶다.VM 클러스터와 컨테이너 클러스터 간에 로드 밸런싱을 공유할 수 있습니다.나는 부하 평형기를 20% 의 요청을 용기 집단에 공유하고 80% 의 요청을 가상 기기 집단에 공유하도록 설정했다.이런 방법을 사용하면 내 용기 집단을 감시해서 그 배치가 양호하다는 것을 확보할 수 있다.그때가 되면, 용기 집단을 완전히 사용할 자신이 있을 때까지 용기 집단에 더 많은 요청을 추가할 수 있다.
전체에서 마이크로 서비스로 마이그레이션
VM 클러스터를 컨테이너 클러스터로 마이그레이션하는 것과 유사합니다.내가 직접monolith를 옮길 때, 나는 위험이 있다.부하 평형기는 내가 일부분 이동하는 것을 도울 수 있다.나는 부하 평형기를 사용하여 나의 monolith 집단과 나의 microservices 집단 사이에서 요청을 공유할 수 있다.나는 마이크로서비스가 이미 잘 작동하고 있다고 확신할 때까지 부하 평형기를 사용한다.그리고 나는 완전히 옮겼다.
우리 고젝에서 뭐 했어요?
Gojek에서는 Weaver라는 내부 로드 밸런싱도 만들었습니다.이것은 개원 프로젝트이니, 너는 여기서 찾을 수 있다.
고잭
/
직물공
동적 분할 정책을 가진 고급 HTTP 리버스 에이전트
Weaver - 고급 기능을 갖춘 최신 HTTP 에이전트
백엔드 서비스의 여러 가지 실례를 만들고 싶기 때문에, 요청을 모바일 응용 프로그램에서 이 실례로 바꾸는 메커니즘이 필요합니다.이곳에서 나는 부하 평형기를 사용했다.말 그대로 부하 평형기는 백엔드 실례 간에 작업 부하를 공유하는 데 쓰인다.여기는 나의 구조다.
여러 백엔드 인스턴스가 있는 아키텍처
부하 평형기는 자신의 알고리즘을 가지고 작업 부하를 공유한다.내가 선택할 수 있는 알고리즘은 매우 적다. 예를 들어 순환, 가중 순환, 최소 연결 등이다.나는 내가 필요로 하는 알고리즘을 선택할 수 있다.
이 장면을 사용하면 현재 나의 백엔드 서비스는 이전보다 더 적은 요청을 처리할 것이다.만약 내가 분당 평균 6000개의 요청을 처리한다고 가정한다면, 이 요청들은 백엔드 서비스로 처리된다.현재 나는 작업 부하를 세 개의 실례에 분배할 수 있다. 이것은 한 실례가 분당 2000개의 요청을 처리한다는 것을 의미한다.이것은 내가 성능과 정상적인 운행 시간을 향상시키는 데 도움을 줄 것이다.
우리는 HAProxy, Nginx, 클라우드 부하 균형 같은 부하 균형 기술을 사용할 수 있다.너는 네가 원하는 어떤 것도 고를 수 있다.
그 사건만 처리합니까?
분명히 아니야!부하 균형은 내가 고부하를 처리하고 싶은 상황만 처리하는 것이 아니다.그럼 또 뭐가 있을까요?
VM에서 컨테이너로 마이그레이션
가상 머신에서 실행되는 서비스가 있다는 것을 다시 한 번 상상해 봅시다.하지만 모든 배치를 용기로 옮기고 싶다는 것을 알아야 한다.간단하게 들린다. 왜냐하면 나는 용기를 사용하여 나의 모든 서비스를 재배치할 수 있기 때문이다.그 후에, 나는 모든 요청을 용기 집단으로 다시 정할 것이다.그런데 이게 좋은 방법인가요?
이런 방법은 위험이 너무 크다.용기 집단에 잘못된 배치가 있다고 가정해 보세요.그것은 정지를 초래할 수 있다.그렇다면 부하 평형기는 어떻게 나를 도와줍니까?
VM에서 컨테이너로의 마이그레이션 모드
용기 집단으로 직접 이동하는 것은 위험하기 때문에 나는 부분적으로 이동할 수 있다.모든 서비스를 용기 집단에 배치한 후, 나는 우선 그것에 대한 요청을 보내서 그것을 테스트하고 싶다.VM 클러스터와 컨테이너 클러스터 간에 로드 밸런싱을 공유할 수 있습니다.나는 부하 평형기를 20% 의 요청을 용기 집단에 공유하고 80% 의 요청을 가상 기기 집단에 공유하도록 설정했다.이런 방법을 사용하면 내 용기 집단을 감시해서 그 배치가 양호하다는 것을 확보할 수 있다.그때가 되면, 용기 집단을 완전히 사용할 자신이 있을 때까지 용기 집단에 더 많은 요청을 추가할 수 있다.
전체에서 마이크로 서비스로 마이그레이션
VM 클러스터를 컨테이너 클러스터로 마이그레이션하는 것과 유사합니다.내가 직접monolith를 옮길 때, 나는 위험이 있다.부하 평형기는 내가 일부분 이동하는 것을 도울 수 있다.나는 부하 평형기를 사용하여 나의 monolith 집단과 나의 microservices 집단 사이에서 요청을 공유할 수 있다.나는 마이크로서비스가 이미 잘 작동하고 있다고 확신할 때까지 부하 평형기를 사용한다.그리고 나는 완전히 옮겼다.
우리 고젝에서 뭐 했어요?
Gojek에서는 Weaver라는 내부 로드 밸런싱도 만들었습니다.이것은 개원 프로젝트이니, 너는 여기서 찾을 수 있다.
고잭
/
직물공
동적 분할 정책을 가진 고급 HTTP 리버스 에이전트
Weaver - 고급 기능을 갖춘 최신 HTTP 에이전트
VM 클러스터를 컨테이너 클러스터로 마이그레이션하는 것과 유사합니다.내가 직접monolith를 옮길 때, 나는 위험이 있다.부하 평형기는 내가 일부분 이동하는 것을 도울 수 있다.나는 부하 평형기를 사용하여 나의 monolith 집단과 나의 microservices 집단 사이에서 요청을 공유할 수 있다.나는 마이크로서비스가 이미 잘 작동하고 있다고 확신할 때까지 부하 평형기를 사용한다.그리고 나는 완전히 옮겼다.
우리 고젝에서 뭐 했어요?
Gojek에서는 Weaver라는 내부 로드 밸런싱도 만들었습니다.이것은 개원 프로젝트이니, 너는 여기서 찾을 수 있다.
고잭
/
직물공
동적 분할 정책을 가진 고급 HTTP 리버스 에이전트
Weaver - 고급 기능을 갖춘 최신 HTTP 에이전트
묘사
Weaver는 동적 분할 정책을 가진 Tier 7 로드 밸런서입니다.
이것은 고급 기능을 갖춘 현대 HTTP 리버스 에이전트입니다.
특징:
설치
소스 코드에서 생성
git clone [email protected]:gojektech/weaver.git
make build
다양한 구조의 바이너리 파일
바이너리 파일을 다운로드하여 다음 위치에서 게시합니다. here
건축학
Weaver는 제어 평면
etcd
을 사용하여 특정한 루트 설정에 따라 전송 요청을 일치시키고 일부 분할 정책을 바탕으로 데이터를 서로 다른 백엔드로 구분합니다.Weaver는 서로 다른 라우팅으로 구성될 수 있습니다.
View on GitHub
우리는 기존의 부하 평형기 기술을 사용할 수 있다는 것을 알고 있기 때문에, 우리가 그것을 만든 이유를 읽을 수 있습니다.
직공: 간단한 절분.개막 Weaver — GOJEK의 기원... | Rajeev Bharshetty | GOJEK 제품 + 기술
라제프 바르샤티・ 2019년 3월 12일・ 6분 읽기 블로그GojekenEngineering。일반 도메인 이름 형식
절정 101: 짜는 방법.GOJEK 배포 가이드... | 작성자: Gowtham Sai | GOJEK 제품 + 기술
고담세・ 2019년 4월 16일・ 7분 읽기 블로그GojekenEngineering。일반 도메인 이름 형식
나는 네가 그것을 즐겨 읽기를 바란다.
카피호딘💻 ☕️
Reference
이 문제에 관하여(부하 평형기가 무엇인지, 언제 사용하는지 찾았습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/ecojuntak/i-found-what-is-load-balancer-and-when-to-use-it-1i4e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)