[ft_services] 3. nginx란?, wordpress란?, phpmyadmin란? mysql이란? ftps란? influxDB란? grafana란?

이호용·2021년 6월 10일
0

42_ft_services

목록 보기
3/8

최종목표.

  • Kubernetes를 사용해 서비스를 배포 해봅시다.

  • 지난시간까지 쿠버네티스의 개념에 대해 알아보았습니다. 이번시간에는 특정 조건들이 주어지는 서비스를 구현해보도록 하겠습니다.

1. 필수파트

    1. 다중 서비스 클러스터를 설정해야합니다.
    1. 각 서비스는 전용 컨테이너에서 실행되어야합니다.
    1. Alpine Linux를 사용하여 컨테이너를 빌드해야하기 때문입니다.
    1. 또한 setup.sh에서 호출되는 Dockerfile이 작성되어 있어야합니다.
    1. 사용할 이미지를 직접 빌드해야합니다.
    1. 이미 빌드된 이미지를 사용하거나 DockerHub와 같은 서비스를 사용하는 것은 금지되어 있습니다.
    1. 하나의 스크립트 파일을 이용해 모든 응용프로그램을 셋업 합니다.
    1. 쿠버네틱 웹 데시보가, 너의 클러스터 관리를 도와준다.
  • 모든 컨테이너는 구성 요소중 하나가 충돌하거나, 중지되는 경우 다시 시작해야합니다.
    1. 서비스에 대한 각 요청이 로드 밸런서를 사용하여 수행되는지 확인하십시오.
    1. FTPS, Grafana, Wordpress, PhpMyAdmin, nginx의 kind는 “LoadBalancer”여야합니다.
    1. Influxdb MySQL의 kind는 “ClusterIP”여야합니다.
    1. 다른 엔트리들이 있을 수 있지만 kind가 “NodePort”가 될 수는 없습니다.

2. 로드 밸런서

  • 서비스의 외부 액세스를 관리하는 로드 밸런서가 클러스터의 유일한 엔트리포인트가 될 것입니다.
  • 반드시 서비스에 맞는 포트를 유지해야합니다(Grafana는 IP:3000처럼).
  • 로드 밸런서는 단일 IP를 갖습니다.
  • 클라우드 제공 업체에서 제공하는 로드밸런서를 사용하려고 시도하는 건 쓸모 없어요.
    당신은 MetalLB를 봐야합니다.

3. 워드프레스

  • 워드프레스 포트 5050에서 mysql 데이터베이스를 수신하는 웹사이트.
  • 워드프레스와 mysql은 별도의 컨테이너에서 실행되어야 합니다.
  • 워드프레스 웹사이트는 여러사용자 및 관리자를 가질 수 잇습니다.
  • wordpress는 자체의 nginx서버를 필요로 합니다.
  • Load Balancer는이 서비스로 직접 리디렉션 할 수 있어야합니다.

4. phpmyadmin

  • phpmyadmin은 5000포트에서 동작하고, mysql와 연결되어 있어야합니다.
  • phpmyadmin은 자체 niginx서버가 있어야합니다.
  • Load Balancer는이 서비스로 직접 리디렉션 할 수 있어야합니다.

5. nginx

  • 콘테이너와 함께 nginx서버는 80, 443에서 수신 대기중입니다.
  • 80포트은 http유형이며, https인 443으로 시스템적인 리다렉션(301)이 있어야 합니다.
  • 표시되는 페이지는 http오류가 아닌 이상 중요하지 않습니다.
  • 이 컨테이너는 리다렉션을 만드는데 대한 /wordpress경로에대한 액세스를 허용합니다. IP:WPPORT로 리디렉션(307)하는 접근을
  • 또한 /phpmyadmin로의 접근을 허용해야합니다. 리버스 프록시로 IP:PMAPORT로.

6. ftps

  • 포트 21을 수신하는 서버.

7. mysql

  • InfluxDB가 터지거나 중지되는 경우에, 데이터가 지속되는지 확인해야합니다.

8. influxDB

  • InfluxDB 데이터베이스와 grafana플랫폼은 연결되어 있고, grafana는 포트 3000에서 수신 가능합니다
  • InfluxDB와 Grafana는 두 개의 별개 컨테이너에 있어야합니다.
  • InfluxDB가 터지거나 중지되는 경우에, 데이터가 지속되는지 확인해야합니다.

9. Grafana

  • Grafana는 모든 컨테이너를 모니터링합니다, 서비스 하나당 대시보드 하나를 만들어야합니다.
  • InfluxDB와 Grafana는 두 개의 별개 컨테이너에 있어야합니다.

과제 용어 정리

1. nginx란?

  • 웹 서버에 10,000개의 클라이언트의 접속을 동시에 다룰수 있는 기술적인 문제(apachedml c10k problem)를 해결하기 위해 만든 Event-driven구조의 http, Reverser Proxy, IMAP/POP PROXY server를 제공하는 오픈 소스 프로그램.
  • 대표적인 웹서버로 대두되는 두개의 서버 apache와 nginx가 있습니다.
  • 웹서버는 해당 서비스의 트래픽을 감당해야하는 역활이기에, 선택할때 신중히 결정해야한다.

apache 특징

  • apache의 경우 거의 모든 os와 지원이되고, 문서화 및 통합 지원 이점이 있습니다.
  • 웹서버 자체내에서 동적으로 컨텐츠를 처리합니다.
  • 클라이언트 요청을 처리하기 위해 멀티 스레드 방식을 따릅니다.

nginx 특징

  • 제한된 하드웨어 리소스로도 여러 클라이언트 요청을 동시에 효율적 처리

  • 경량 아키텍처와 높은 동시성이 있습니다.

  • 클라이언트 요청을 이벤트 중심의 접근 방식 사용, 단일 쓰레드를 통해 여러 연결을 처리할수 있습니다.

    세부 정리는 오른쪽 글을 참고해주세요. nginx개념과 nginx와 아파치 차이점에 대해 정리한 글이 있습니다.

2. 로드벨런서란?

  • 로드밸런서는 이름에서도 알수 있듯 서버에 가해지는 부하를 분산해주는 장치 또는 기술을 통칭합니다
  • 실습에서는 쿠버네티스로 들어오는 사용자 요청을 좀더 효율적으로 분산하기위해 사용할 겁니다.

    사용에 필요한 경우 : 로드밸런싱은 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술입니다. 서비스 규모가 작다면 하나의 서버로 모두 해결하겠지만, 규모가 커지게 되고, 클라이언트수가 늘어나면 기존 서버로는 문제가 생깁니다. 이러한 문제를 해결하기 위해 로드벨런서를 사용합니다. 하지만 부하가 많이 생긴다고 꼭 로드벨런서를 사용하셔야 하는건 아닙니다. 부하의 대처방법은 두가지가 있는데, scale-out의 경우 앞서 설명했던 서버의 개수를 늘려 부하를 분산하는 방법이고, 하나의 서버의 성능을 향상 시켜 해결하는 방법도 있습니다. 이 방법은 scale-up이라고 합니다. 이 글에서는 scale-out으로 부하를 분산할것입니다.

3. wordpress란?

워드프레스란 PHP로 작성된 온라인 오픈 소스 웹사이트 저작 도구입니다.

4. phpmyadmin란?

  • phpMyAdmin은 MySQL을 월드 와이드 웹 상에서 관리할 목적으로 PHP로 작성한 오픈 소스 도구이다.

    mysql을 실행창에서 관리하는거 생각보다 힘든데, phpmyadmin을 사용하면 좀더 쉽게 관리할 수 있다.

5. ftps란?

  • file transfer protocol security
  • http와 FTP는 모두 tcp통신을 합니다.
  • http의 경우 요청이 들어오면, 서버에서 사용자에게 파일을 전송하는 단방향 작업이 이루어지지만,
  • ftp의 경우 ftp서버와 클라이언트 사이에 서로 파일이 전송이 가능한 양방ㅎㅇ 작업을 합니다.
  • 또한 ftp는 두개의 포트를 이용해 대이터를 주고 받아 대용량 데이터 전송에 용의합니다.(하나는 명령을 내리기 위한 포트, 다른하나는 데이터를 전송하기 위한 포트)
  • ftps : ssl을 ftp통신에 추가한것, 자세한 설명은 뒤에 ftps를 만들때 첨부.

6. mysql란?

  • 오픈 소스 데이터베이스이며, MySQL AB사가 개발하여 배포/판매하고 있는 데이터베이스(DataBase)이다.
  • 좀더 쉽게 설명하자면 웹 서비스를 구현하는데 필요한 데이터들을 엑셀형태로 보기좋게 정리해주는 역활을 한다.
  • 사실 mysql이라 썼지만, 실습에서는 mariaDB를 사용하려고 한다.
  • 물론 다른 점이 있겟지만, mariaDB의 기반이 mysql인점.
  • 대부분 동작들이 mysql로 진행하는 사람들과 비슷하게 실행 되기 떄문에 별차이 없이 진행할수 있을거다.
  • mysql은 사용자의 동적 요청이 들어았을때 처리를 해주기 위해 사용했다.
  • 자세한 설명은 아래 실습을 하면서 추가하겠다.

7. influxDB란?

  • 이름에서 볼수 있듯 이또한 db의 한 종류이다.
  • 생각보다 db의 종류는 많다. 자연어 처리(문장을 끊어서 mysql에 저장하면 힘드니까 문장 자체를 db에 저장할떄는 를 하기위해 c++의 map자료형 같은 구조로 되어있는 MongoDB도 있고, key-value 방식으로 저장하는 Redis db도 있다.
  • influxDB의 경우 시계열 형태, 실시간으로 클라이언트의 정보를 가지고 와서 저장하는 역활을 수행하게 하기 위해 여기서는 influxDB를 사용하였다.

8. Grafana란?

  • Grafana를 사용하면 저장된 위치에 상관없이 메트릭 을 쿼리, 시각화, 경고 및 이해할 수 있습니다
  • 또한 자체 알럿(Alert)기능을 사용하여 슬랙(Slack), 이메일, 디스코드 등 다양한 채널에 알림을 보낼 수 있다.
  • 솔직히 시각화는 쿠버네티스 dashboard를 통해 어느정도 볼수 있지만, 짱짱 좋았던건, slack이나 디스코드 이메일로 데이터의 상태를 받아볼수 있다는 점이 좋았다.
  • influxdb로 가지고 온 데이터들을 시각화 시켜 보여준다.

다음시간에 할것.

  • sh파일을 통해 쿠버네티스 사용해보기, 도커 이미지 파일과 쿠버네티스 yaml파일을 통해 설정하기.

0개의 댓글

관련 채용 정보