개발상식 - 프록시서버와 클러스터링

pa324·2019년 11월 15일
0

프록시서버란?

  • Proxy서버는 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있는 서버이다.
  • Server와 Client사이에서 중계기 역할을 한다.

순방향 Proxy(Forward Proxy)

  • 내부망에서 외부망으로 접근할때, 먼저 Forward Proxy서버를 거쳐서 외부망에 연결되는 방식이다.
  • Proxy Server에서 In/Out bound패킷에 대한 보안 정책을 적용할 수 있다.
  • Proxy Server는 내부에 Cache를 유지하면 이미 한번 통신한 외부 자원이 있을경우 프록시 서버에서 캐싱처리를 해서 성능향상에 도움이 된다.

역방향 Proxy(Reverse Proxy)

  • 외부에서 내부 서버가 제공하는 서비스 접근시, Proxy서버를 거쳐서 내부 서버로 접근하는 방식이다.
  • 외부 사용자는 내부망의 서버 존재를 모른다. 모든 접속은 Reverse Proxy서버에게 들어오면, Reverse Proxy는 요청에 맵핑되는 내부 서버에게 요청을 넘긴다. (내부서버 정보를 외부로부터 숨긴다)
  • Reverse Proxy서버가 내부 서버의 정보를 맵핑한 상태이기 때문에, 로드밸런싱을 통해 부하 분산이 가능하다
  • 정적 컨텐츠 캐싱처리 가능

로드밸런싱과 클러스터링

로드밸런싱(Load Balancing)

  • 로드밸런싱은 부하 분산을 위해서 가상IP를 통해 여러 서버에 접속하도록 분배하는 기능
  • 하나의 서비스에 발생하는 트래픽이 많을 때, 여러 대의 서버가 분산처리하여 서버의 로드율 증가/부하량/속도저하를 고려해서 적절히 요청을 분산시켜주는 서비스
  • 동시에 오는 수많은 커넥션을 처리하고, 해당 커넥션이 요청 노드 중의 하나로 분산되어 전달하는 것
  • 대용량 서비스를 운영하기위해서 로드밸런싱은 필수
  • NAT : priavate IP를 public IP로 변환하는 주소 변조기
  • DSR : 로드밸런서 사용 시 서버에서 클라이언트로 되돌아 갈때, 목적지 주소를 스위치 IP가 아닌 클라이언트 IP로 전달해 네트워크 스위치를 거치지 않고 바로 클라이언트로 찾아가는 개념
  • Tunneling : 네트워크 상에 눈에 보이지 않는 통로를 만들어 통신할 수 있게하는 개념,
  • 로드밸런서를 사용하면 세션 데이터 관리하는게 쉽지 않다
    • 매 요청마다, 다른 서버로 접근하기 때문에, 정보 일관성 유지가 힘듬
      • 세션 고정이 필요하다, 특정 사용자의 요청이 전달될 노드를 고정시키는 방법이 존재하지만, 해당 노드에서 장애가 발생하면 고정이 의미가 없다.

클러스터링

  • 여러 개의 컴퓨터를 연결한 병렬 시스템으로 마치 하나의 컴퓨터처럼 사용하는것을 클러스터라고 한다
  • 클러스터링 환경에서는 특정 장비에 문제가 생기거나 특정 장비에서 실행중인 applicaiton에 문제가 발생해도 전체 서비스에 영향 x
  • Virtual IP를 기반으로 구현된다.
    • 서비스를 제공하는 실제 장비만 ip를 갖고, 데이터 처리는 virtual ip를 통해서 이루어진다.
      • 내부 시스템은 철저히 숨긴다.
  • 최근에 등장한, 컨테이너 오케스트레이션 도구인 'kubernetes'또한 클러스터링을 통해서 컨테이너를 관리해준다.

결론

로드밸런싱,클러스터링 모두 Scale-Out 방식으로 성능을 향상시킨다. Scale-up방식에 비해서 저렴하게 성능을 업그레이드할 수 있고 서버장애가 발생하더라도 중단 없이 다른 서버로 적절히 요청을 분산시켜서 무중단 운영이 가능하다.

profile
안녕하세요

0개의 댓글