build a linux webhosting server

58

Upload: -

Post on 18-Jul-2015

542 views

Category:

Software


2 download

TRANSCRIPT

Page 1: build a linux webhosting server
Page 2: build a linux webhosting server

오픈 소스 소프트웨어를 이용한웹호스팅 서버 구축 도전기

Page 3: build a linux webhosting server

선린인터넷고등학교30213 윤정현

Team Log 0기 부장

Page 4: build a linux webhosting server

웹호스팅?

Page 5: build a linux webhosting server

WWWHosting

Page 6: build a linux webhosting server

네트워크 구상

Page 7: build a linux webhosting server

네트워크 구상계획 시

Page 8: build a linux webhosting server

현실..

Page 9: build a linux webhosting server

8

9

2048 MB

4608 MB

4096 MB(4 GB)

6656 MB

일반 PC 기준 8 Router X 9 Server

<

Page 10: build a linux webhosting server

-3431 MB

Page 11: build a linux webhosting server

현실..

Page 12: build a linux webhosting server

그래서..

Page 13: build a linux webhosting server

ServerClient

NAT eth0 외부 인터넷 접속Internal eth1 내부 인터넷 접속(Server) 동일 환경 구현 RAM 낭비 최소화

Page 14: build a linux webhosting server

서버 구축

Page 15: build a linux webhosting server

어떤 웹 서버를 선택할까?

Page 16: build a linux webhosting server

어떤 웹 서버를 선택할까?

기존 서버 상황

다양한 종류의 서버가 통합으로 운영 중

한 곳에서 오류가 발생하면 전체에 영향을 주는 구조

대부분의 사이트가 PHP로 구현되어 있음

PHP 성능이 보장되는 웹 서버 선택이 필수

WAS를 지원하지 않고 아파치만 사용 중

개발 언어 선택에 있어서 매우 제한적

Page 17: build a linux webhosting server

어떤 웹 서버를 선택할까?

요구사항

운영체제와 상관없이 플랫폼 구축이 가능한가?

NGINX와 APACHE는 가능, IIS는 윈도우 서버가 필요

적은 자원으로 많은 동접자 수용이 가능한가?

APACHE와 같은 쓰레드/프로세스 기반 구조를 가진 웹 서버는 무리

NGINX와 같은 비동기 이벤트 기반 구조를 가진 웹 서버가 필요

다양한 종류의 WAS를 지원 가능한가?

프록시 모듈이 잘 갖춰져 있는 웹 서버가 요구 됨

Page 18: build a linux webhosting server

어떤 웹 서버를 선택할까?

'웹 서버' ? NGINX : APACHE

Page 19: build a linux webhosting server

어떤 웹 서버를 선택할까?

동시 접속 요청

아파치는 처음과 비해 현저하게 처리량이 떨어짐

엔진엑스는 처음과 비슷한 처리량을 보여줌

메모리 사용량

아파치는 동시 접속 요청이 많을수록 메모리 사용량 증가

엔진엑스는 처음과 비슷한 메모리 사용량을 보여줌

Page 20: build a linux webhosting server

어떤 웹 서버를 선택할까?

대부분의 사이트가 PHP로 구현되어 있음

PHP 성능이 보장되는 웹 서버 선택이 필수

아파치는 PHP 처리 능력이 월등하게 높음

엔진엑스는 fastcgi 의존성 때문에 성능이 높지 않음

Page 21: build a linux webhosting server

어떤 웹 서버를 선택할까?

서로의 장점을 활용하자

엔진엑스는 정적인 파일에서 높은 처리 능력을 보임

아파치는 동적인 파일에서 높은 처리 능력을 보임

같이 쓰면 되겠네!

Page 22: build a linux webhosting server

그래서..

Nginx + Apache: Reverse Proxy

Nginx

http/80

Reverse proxy

http/8080Apache webserver 1

http/8080Apache webserver 2

http/8080Apache webserver 3

Nginx 80번 정적파일 ex) htmlApache 8080 동적파일 처리 ex) php

Page 23: build a linux webhosting server

Proxy도 모르겠는데Reverse Proxy는 뭐야?

Page 24: build a linux webhosting server

Proxy도 모르겠는데 Reverse Proxy는 뭐야?

사전적 의미: 대리, 대리권, 대리 투표, 대리인

로컬 서버프록시

Proxy?

Page 25: build a linux webhosting server

Proxy도 모르겠는데 Reverse Proxy는 뭐야?

클라이언트가 자신을 통해서 다른 네트워크 서비스에간접적으로 접속할 수 있게 해 주는 서버

Proxy Server?로컬 서버프록시

Page 26: build a linux webhosting server

Nginx

http/80

Reverse proxy

http/8080Apache webserver 1

http/8080Apache webserver 2

http/8080Apache webserver 3

Reverse Proxy?

클라이언트가 서버에 요청을 하면 그사이에서 요청을 대리로 수행하는 것

Page 27: build a linux webhosting server

Nginx

http/80

Reverse proxy

http/8080Apache webserver 1

http/8080Apache webserver 2

http/8080Apache webserver 3

Reverse Proxy? Reverse Proxy 도입 효과

서비스 형태는 유지하면서 웹 서버의 장

점들을 살려 성능 극대화

내부 네트워크에 대한 단일 액세스 지점

을 제공하여 내부 HTTP 서버 보호

HTTP 요청의 내용에 따라 시스템의 동작

제어

전에는 지원하지 못했던 다양한 WAS 지

Page 28: build a linux webhosting server

Nginx

http/80

Reverse proxy

http/8080Apache webserver 1

http/8080Apache webserver 2

http/8080Apache webserver 3

Reverse Proxy?

Page 29: build a linux webhosting server

그럼 데이터베이스 서버는?

Page 30: build a linux webhosting server

그럼 데이터베이스 서버는?

Thread Pool, 강화된 스토리지 엔진 (InnoDB → XtraDB, Federated → FederatedX), 새로운 스토리지엔진(Aria, Cassandra), 새로운 플러그인(HandlerSocket), 새로운 기능(Virtual Column) 등이MariaDB에 포팅되어 있다.

MariaDB는 ‘GPL v2’04 라이선스에 따르기 때문에라이선스 정책에서 상당히 자유롭다. “오라클이MySQL을 유료화하면 어떻게 하나”라고 걱정하고 있다면, MariaDB 사용을 고려해보는 것도 좋다.

마리아DB 커뮤니티는 MySQL과 비교해 리플리케이션부분 속도가 약 4~5천 배 정도 빠르며, MySQL이 가지고 있는 모든 제품의 기능을 완벽히 구현하면서도성능 면에서는 최고 70%의 향상을 보이고 있다고 주장한다.

Page 31: build a linux webhosting server

그럼 데이터베이스 서버는?

MariaDB는 ‘GPL v2’04 라이선스

오픈 소스 소프트웨어 컨셉과 일치

다양하고 강력한 플러그인 및 기능 제공

쓰레드풀, 이노디비 기능을 원했음

리플리케이션 부분 속도가 약 4~5천 배 빠르다.

MariaDB로 선택한 이유

Page 32: build a linux webhosting server

그래서.. DB DB DB

DB

MariaDB Replication 설정

Page 33: build a linux webhosting server

Replication은 또 뭐야?

Page 34: build a linux webhosting server

Replication은 또 뭐야?

사전적 의미: 응답, 사본, 복제, 복사

Replication?

DB DB

Page 35: build a linux webhosting server

Replication은 또 뭐야?

데이터를 물리적으로 다른 서버의 저장 공간 안에동일한 데이터를 복사하는 기술

MariaDB Replication?

DB DB

Page 36: build a linux webhosting server

MariaDBReplication

MariaDB Replication 원리

1) Master에서 데이터 변경이 일어나면

Master DB에 반영

2) 변경된 이력을 Binary Log에 기록

3) Slave IO Thread가 Master 변경 Event

를 감지하고 Master Binary Log를

Slave Relay Log에 기록

4) Slave SQL Thread는 Relay Log를 읽고

Slave DB에 기록DB DB DB

DB

MySQL Replication은 데이터를 이중화

Page 37: build a linux webhosting server

MariaDBReplication

DB DB DB

DB

MySQL Replication은 데이터를 이중화

Page 38: build a linux webhosting server

Bind DNSReplication

DNSDNS

Bind DNS Replication

Master 서버는 1차 네임서버이며 Slave

서버는 2차 네임서버로 활용

Master 네임서버와 동일한 기능을 수행,

레코드유형 역할

관리상 편리하며 존 파일을 따로 설정하

여 발생하는 영역 데이터의 불일치 오류

를 피할 수 있음

Page 39: build a linux webhosting server

localhost

DB FTP Mail

web

DNSserver

DB DB DB

DB

DB FTP Mail

web

DNS DNS web web

WEB, DB, DNS, MAIL, FTP 서버 구축했다. 이제 뭐하지?

Page 40: build a linux webhosting server

서버 운영

Page 41: build a linux webhosting server

SFTP chroot

기존 서버 상황

SSH 접근이 가능하여 다른 영역에 접근

이 가능

FTP chroot 기능을 활용하여도 SFTP로

접근하면 무용지물

퍼미션 관리를 통해 상대 영역에 접근 할

수는 없지만 디폴트 경로는 읽기가 가능

읽기가 가능하여 로그 파일 및 설정 파일

이 외부로 노출 될 수 있음

Page 42: build a linux webhosting server

SFTP chroot

FTP chroot가 소용이 없으면 FTP를 지워버리고 SFTP chroot를 제공하는 건 어때?

Page 43: build a linux webhosting server

SFTP chroot

Secure FTP 사용 키 값 암호화 스니핑 불가능

Your PC Remote Server

SFTP chroot 설정 효과

SSH처럼 키 값 암호화를 통해 스니핑 방지

chroot 설정을 통해 내부 사용자 격리 가능

Page 44: build a linux webhosting server

하드용량 제어

Page 45: build a linux webhosting server

하드용량 제어

하드용량 제어를 통해 서버 풀이발생하지 않게 quota 툴을 사용

Page 46: build a linux webhosting server

SSO 유저 관리

Page 47: build a linux webhosting server

SSO 유저 관리

최초 등록된 사용자는 서버의 모든 자원에 접근 및 활용 가능

Page 48: build a linux webhosting server

서버 프로그래밍

Page 49: build a linux webhosting server

localhost

DB FTP Mail

web

DNSserver

사용자 수가

서버 관리자 작업량

Page 50: build a linux webhosting server

localhost

DB FTP Mail

web

DNSserver

정규화 된 자동 시스템이 필요

Page 51: build a linux webhosting server

Bash 자동화 시스템

쉘 스크립트는 C 언어와 유사하며 리눅스 명령어를 직접 사용할수 있는 매우 강력한 언어

Page 52: build a linux webhosting server

모든 기능은 함수로

각각의 기능을 함수로 개발하여관리자가 필요한 기능을 골라 작업할 수 있게 구현

Page 53: build a linux webhosting server

1분 만에 서비스 구현

Reverse Proxy 서버, SFTP 서버, MAIL 서버, DNS 서버, DB 서버 등을 1분 만에 SSO 계정생성 및 서비스 가능

Page 54: build a linux webhosting server

서버 계획

Page 55: build a linux webhosting server

서버 형상관리

기존 웹호스팅 서버를 구축하기 위

해서는 많은 시간이 소요

Chef를 사용하여 어디서든 빠르게

웹호스팅 서버를 원하는 만큼 구축

Page 56: build a linux webhosting server

서버 모니터링

기존 모니터링 툴과 자체 툴로는 직

관적인 모니터링 서비스 제공 불가

Graphite를 사용하여 GUI로 직관적

인 로그 정보를 제공

Page 57: build a linux webhosting server

아마존 AWS

아마존 AWS의 다양한 서비스로 똑같

은 서비스를 만들고 운영하고 싶음

Page 58: build a linux webhosting server

감사합니다.선린인터넷고등학교

30213 윤정현

E-mail : [email protected]