SlideShare une entreprise Scribd logo
1  sur  58
Télécharger pour lire hors ligne
오픈 소스 소프트웨어를 이용한
웹호스팅 서버 구축 도전기
선린인터넷고등학교
30213 윤정현
Team Log 0기 부장
웹호스팅?
WWW
Hosting
네트워크 구상
네트워크 구상
계획 시
현실..
8
9
2048MB
4608MB
4096 MB
(4 GB)
6656 MB
일반 PC 기준 8 Router X 9 Server
<
-3431MB
현실..
그래서..
ServerClient
NAT  eth0  외부 인터넷 접속
Internal  eth1  내부 인터넷 접속
(Server) 동일 환경 구현  RAM 낭비 최소화
서버 구축
어떤 웹 서버를 선택할까?
어떤 웹 서버를 선택할까?
기존 서버 상황
 다양한 종류의 서버가 통합으로 운영 중
 한 곳에서 오류가 발생하면 전체에 영향을 주는 구조
 대부분의 사이트가 PHP로 구현되어 있음
 PHP 성능이 보장되는 웹 서버 선택이 필수
 WAS를 지원하지 않고 아파치만 사용 중
 개발 언어 선택에 있어서 매우 제한적
어떤 웹 서버를 선택할까?
요구사항
 운영체제와 상관없이 플랫폼 구축이 가능한가?
 NGINX와 APACHE는 가능, IIS는 윈도우 서버가 필요
 적은 자원으로 많은 동접자 수용이 가능한가?
 APACHE와 같은 쓰레드/프로세스 기반 구조를 가진 웹 서버는 무리
 NGINX와 같은 비동기 이벤트 기반 구조를 가진 웹 서버가 필요
 다양한 종류의 WAS를 지원 가능한가?
 프록시 모듈이 잘 갖춰져 있는 웹 서버가 요구 됨
어떤 웹 서버를 선택할까?
'웹 서버' ? NGINX : APACHE
어떤 웹 서버를 선택할까?
동시 접속 요청
 아파치는 처음과 비해 현저하게 처리량이 떨어짐
 엔진엑스는 처음과 비슷한 처리량을 보여줌
메모리 사용량
 아파치는 동시 접속 요청이 많을수록 메모리 사용량 증가
 엔진엑스는 처음과 비슷한 메모리 사용량을 보여줌
어떤 웹 서버를 선택할까?
 대부분의 사이트가 PHP로 구현되어 있음
 PHP 성능이 보장되는 웹 서버 선택이 필수
 아파치는 PHP 처리 능력이 월등하게 높음
 엔진엑스는 fastcgi 의존성 때문에 성능이 높지 않음
어떤 웹 서버를 선택할까?
서로의 장점을 활용하자
 엔진엑스는 정적인 파일에서 높은 처리 능력을 보임
 아파치는 동적인 파일에서 높은 처리 능력을 보임
 같이 쓰면 되겠네!
그래서..
Nginx + Apache: Reverse Proxy
Nginx
http/80
Reverse proxy
http/8080
Apache webserver 1
http/8080
Apache webserver 2
http/8080
Apache webserver 3
Nginx  80번 정적파일 ex) html
Apache  8080 동적파일 처리 ex) php
Proxy도 모르겠는데
Reverse Proxy는 뭐야?
Proxy도 모르겠는데 Reverse Proxy는 뭐야?
사전적 의미: 대리, 대리권, 대리 투표, 대리인
로컬 서버프록시
Proxy?
Proxy도 모르겠는데 Reverse Proxy는 뭐야?
클라이언트가 자신을 통해서 다른 네트워크 서비스에
간접적으로 접속할 수 있게 해 주는 서버
Proxy Server?
로컬 서버프록시
Nginx
http/80
Reverse proxy
http/8080
Apache webserver 1
http/8080
Apache webserver 2
http/8080
Apache webserver 3
Reverse Proxy?
클라이언트가 서버에 요청을 하면 그
사이에서 요청을 대리로 수행하는 것
Nginx
http/80
Reverse proxy
http/8080
Apache webserver 1
http/8080
Apache webserver 2
http/8080
Apache webserver 3
Reverse Proxy?
Reverse Proxy 도입 효과
 서비스 형태는 유지하면서 웹 서버의 장
점들을 살려 성능 극대화
 내부 네트워크에 대한 단일 액세스 지점
을 제공하여 내부 HTTP 서버 보호
 HTTP 요청의 내용에 따라 시스템의 동작
제어
 전에는 지원하지 못했던 다양한 WAS 지
원
Nginx
http/80
Reverse proxy
http/8080
Apache webserver 1
http/8080
Apache webserver 2
http/8080
Apache webserver 3
Reverse Proxy?
그럼 데이터베이스 서버는?
그럼 데이터베이스 서버는?
Thread Pool, 강화된 스토리지 엔진 (InnoDB →
XtraDB, Federated → FederatedX), 새로운 스토리지
엔진(Aria, Cassandra), 새로운 플러그인
(HandlerSocket), 새로운 기능(Virtual Column) 등이
MariaDB에 포팅되어 있다.
MariaDB는 ‘GPL v2’04 라이선스에 따르기 때문에
라이선스 정책에서 상당히 자유롭다. “오라클이
MySQL을 유료화하면 어떻게 하나”라고 걱정하고 있
다면, MariaDB 사용을 고려해보는 것도 좋다.
마리아DB 커뮤니티는 MySQL과 비교해 리플리케이션
부분 속도가 약 4~5천 배 정도 빠르며, MySQL이 가
지고 있는 모든 제품의 기능을 완벽히 구현하면서도
성능 면에서는 최고 70%의 향상을 보이고 있다고 주
장한다.
그럼 데이터베이스 서버는?
 MariaDB는 ‘GPL v2’04 라이선스
 오픈 소스 소프트웨어 컨셉과 일치
 다양하고 강력한 플러그인 및 기능 제공
 쓰레드풀, 이노디비 기능을 원했음
 리플리케이션 부분 속도가 약 4~5천 배 빠르다.
 MariaDB로 선택한 이유
그래서.. DB DB DB
DB
MariaDB Replication 설정
Replication은 또 뭐야?
Replication은 또 뭐야?
사전적 의미: 응답, 사본, 복제, 복사
Replication?
DB DB
Replication은 또 뭐야?
데이터를 물리적으로 다른 서버의 저장 공간 안에
동일한 데이터를 복사하는 기술
MariaDB Replication?
DB DB
MariaDB
Replication
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은 데이터를 이중화
MariaDB
Replication
DB DB DB
DB
MySQL Replication은 데이터를 이중화
Bind DNS
Replication
DNS
DNS
Bind DNS Replication
 Master 서버는 1차 네임서버이며 Slave
서버는 2차 네임서버로 활용
 Master 네임서버와 동일한 기능을 수행,
레코드유형 역할
 관리상 편리하며 존 파일을 따로 설정하
여 발생하는 영역 데이터의 불일치 오류
를 피할 수 있음
localhost
DB FTP Mail
web
DNS
server
DB DB DB
DB
DB FTP Mail
web
DNS DNS web web
WEB, DB, DNS, MAIL, FTP 서버 구축했다. 이제 뭐하지?
서버 운영
SFTP chroot
기존 서버 상황
 SSH 접근이 가능하여 다른 영역에 접근
이 가능
 FTP chroot 기능을 활용하여도 SFTP로
접근하면 무용지물
 퍼미션 관리를 통해 상대 영역에 접근 할
수는 없지만 디폴트 경로는 읽기가 가능
 읽기가 가능하여 로그 파일 및 설정 파일
이 외부로 노출 될 수 있음
SFTP chroot
FTP chroot가 소용이 없으면 FTP
를 지워버리고 SFTP chroot를 제공
하는 건 어때?
SFTP chroot
Secure FTP 사용  키 값 암호화  스니핑 불가능
Your PC Remote Server
SFTP chroot 설정 효과
 SSH처럼 키 값 암호화를 통해 스니핑 방지
 chroot 설정을 통해 내부 사용자 격리 가능
하드용량 제어
하드용량 제어
하드용량 제어를 통해 서버 풀이
발생하지 않게 quota 툴을 사용
SSO 유저 관리
SSO 유저 관리
최초 등록된 사용자는 서버의 모든 자원에 접근 및 활용 가능
서버 프로그래밍
localhost
DB FTP Mail
web
DNS
server
사용자 수가
서버 관리자 작업량
localhost
DB FTP Mail
web
DNS
server
정규화 된 자동 시스템이 필요
Bash 자동화 시스템
쉘 스크립트는 C 언어와 유사하
며 리눅스 명령어를 직접 사용할
수 있는 매우 강력한 언어
모든 기능은 함수로
각각의 기능을 함수로 개발하여
관리자가 필요한 기능을 골라 작
업할 수 있게 구현
1분 만에 서비스 구현
Reverse Proxy 서버, SFTP 서
버, MAIL 서버, DNS 서버, DB
서버 등을 1분 만에 SSO 계정
생성 및 서비스 가능
서버 계획
서버 형상관리
 기존 웹호스팅 서버를 구축하기 위
해서는 많은 시간이 소요
 Chef를 사용하여 어디서든 빠르게
웹호스팅 서버를 원하는 만큼 구축
서버 모니터링
 기존 모니터링 툴과 자체 툴로는 직
관적인 모니터링 서비스 제공 불가
 Graphite를 사용하여 GUI로 직관적
인 로그 정보를 제공
아마존 AWS
아마존 AWS의 다양한 서비스로 똑같
은 서비스를 만들고 운영하고 싶음
감사합니다.
선린인터넷고등학교
30213 윤정현
E-mail : wyun13043@gmail.com

Contenu connexe

Tendances

웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드Hyunjik Bae
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회
 
두근두근 ASP.NET 5!
두근두근 ASP.NET 5!두근두근 ASP.NET 5!
두근두근 ASP.NET 5!SangHoon Han
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기Hyun-jik Bae
 
04 자바 네트워크
04 자바 네트워크04 자바 네트워크
04 자바 네트워크arahansa yong
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화Choonghyun Yang
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초 경륜 이
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개Hyunjik Bae
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012devCAT Studio, NEXON
 
N04 xmpp and_android
N04 xmpp and_androidN04 xmpp and_android
N04 xmpp and_androidSun-Jin Jang
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림우림 류
 
모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링기환 천
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발현승 배
 
크로스플랫폼으로 다시 태어난 ASP.NET Core
크로스플랫폼으로 다시 태어난 ASP.NET Core크로스플랫폼으로 다시 태어난 ASP.NET Core
크로스플랫폼으로 다시 태어난 ASP.NET CoreSangHoon Han
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)Sang Don Kim
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) Jin wook
 
모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작기환 천
 

Tendances (20)

웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드웹서버와 ProudNet 서버간 상호작용 가이드
웹서버와 ProudNet 서버간 상호작용 가이드
 
한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic한국청소년정보과학회 1회 세미나 - RestFul API Basic
한국청소년정보과학회 1회 세미나 - RestFul API Basic
 
두근두근 ASP.NET 5!
두근두근 ASP.NET 5!두근두근 ASP.NET 5!
두근두근 ASP.NET 5!
 
프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기프라우드넷 사용법 훑어보기
프라우드넷 사용법 훑어보기
 
04 자바 네트워크
04 자바 네트워크04 자바 네트워크
04 자바 네트워크
 
다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화다중성 확보, 시스템 안정화
다중성 확보, 시스템 안정화
 
노드js 기초
노드js 기초 노드js 기초
노드js 기초
 
ProudNet 1.7 소개
ProudNet 1.7 소개ProudNet 1.7 소개
ProudNet 1.7 소개
 
이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012이승재, 실시간 HTTP 양방향 통신, NDC2012
이승재, 실시간 HTTP 양방향 통신, NDC2012
 
N04 xmpp and_android
N04 xmpp and_androidN04 xmpp and_android
N04 xmpp and_android
 
서버성능개선 류우림
서버성능개선 류우림서버성능개선 류우림
서버성능개선 류우림
 
모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링모바일 Rpg 게임서버 리팩토링
모바일 Rpg 게임서버 리팩토링
 
FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발FCGI, C++로 Restful 서버 개발
FCGI, C++로 Restful 서버 개발
 
Node
NodeNode
Node
 
크로스플랫폼으로 다시 태어난 ASP.NET Core
크로스플랫폼으로 다시 태어난 ASP.NET Core크로스플랫폼으로 다시 태어난 ASP.NET Core
크로스플랫폼으로 다시 태어난 ASP.NET Core
 
Node.js 첫걸음
Node.js 첫걸음Node.js 첫걸음
Node.js 첫걸음
 
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
[Td 2015]개발하기 바쁜데 푸시서버와 메시지큐는 있는거 쓸래요(김영재)
 
아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift) 아파치 쓰리프트 (Apache Thrift)
아파치 쓰리프트 (Apache Thrift)
 
Redis acc 2015
Redis acc 2015Redis acc 2015
Redis acc 2015
 
모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작모바일 Rpg 게임서버 제작
모바일 Rpg 게임서버 제작
 

Similaire à build a linux webhosting server

[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE 흥래 김
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdfSeung kyoo Park
 
[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란thecirclefoundation
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live세준 김
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기KwangSeob Jeong
 
Semiproject sambyeoljo 20200224
Semiproject sambyeoljo 20200224Semiproject sambyeoljo 20200224
Semiproject sambyeoljo 20200224songjeongcheol
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석Tommy Lee
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자Young Min Shin
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018devCAT Studio, NEXON
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
REST API 설계
REST API 설계REST API 설계
REST API 설계Terry Cho
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version옥시즌
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석Jennifer Noh
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략Cyworld AppStore (SK Communications)
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03Changyol BAEK
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들Hyunjik Bae
 

Similaire à build a linux webhosting server (20)

[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE  [제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
[제14회 JCO 컨퍼런스] 개발자를 위한 서버이중화 by JAVACAFE
 
삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf삶이편해지는_백엔드_개발자_지식.pdf
삶이편해지는_백엔드_개발자_지식.pdf
 
Semi project
Semi projectSemi project
Semi project
 
[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란[동그라미재단] 2014ㄱ찾기_에어_PHP란
[동그라미재단] 2014ㄱ찾기_에어_PHP란
 
1711 azure-live
1711 azure-live1711 azure-live
1711 azure-live
 
Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기Laravel로 스타트업 기술 스택 구성하기
Laravel로 스타트업 기술 스택 구성하기
 
Semiproject sambyeoljo 20200224
Semiproject sambyeoljo 20200224Semiproject sambyeoljo 20200224
Semiproject sambyeoljo 20200224
 
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
[개방형 클라우드 플랫폼 오픈세미나 오픈클라우드 Pub] 3.open shift 분석
 
PHP로 웹개발을 해보자
PHP로 웹개발을 해보자PHP로 웹개발을 해보자
PHP로 웹개발을 해보자
 
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
이승재, 실버바인 서버엔진 2 설계 리뷰, NDC2018
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
REST API 설계
REST API 설계REST API 설계
REST API 설계
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
파일 전송 SFTP 서버 솔루션 - CrushFTP - old version
 
L4교육자료
L4교육자료L4교육자료
L4교육자료
 
오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석오픈 소스 클라우드 플랫폼 분석
오픈 소스 클라우드 플랫폼 분석
 
현실적 PWA
현실적 PWA현실적 PWA
현실적 PWA
 
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
[2010 네이트 앱스토어 개발자 세미나] 앱스 제작 사례 (2) 소셜게임 서버 구성 전략
 
안정적인 서비스 운영 2014.03
안정적인 서비스 운영   2014.03안정적인 서비스 운영   2014.03
안정적인 서비스 운영 2014.03
 
스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들스마트폰 온라인 게임에서 고려해야 할 것들
스마트폰 온라인 게임에서 고려해야 할 것들
 

build a linux webhosting server

  • 1.
  • 2. 오픈 소스 소프트웨어를 이용한 웹호스팅 서버 구축 도전기
  • 9. 8 9 2048MB 4608MB 4096 MB (4 GB) 6656 MB 일반 PC 기준 8 Router X 9 Server <
  • 13. ServerClient NAT  eth0  외부 인터넷 접속 Internal  eth1  내부 인터넷 접속 (Server) 동일 환경 구현  RAM 낭비 최소화
  • 15. 어떤 웹 서버를 선택할까?
  • 16. 어떤 웹 서버를 선택할까? 기존 서버 상황  다양한 종류의 서버가 통합으로 운영 중  한 곳에서 오류가 발생하면 전체에 영향을 주는 구조  대부분의 사이트가 PHP로 구현되어 있음  PHP 성능이 보장되는 웹 서버 선택이 필수  WAS를 지원하지 않고 아파치만 사용 중  개발 언어 선택에 있어서 매우 제한적
  • 17. 어떤 웹 서버를 선택할까? 요구사항  운영체제와 상관없이 플랫폼 구축이 가능한가?  NGINX와 APACHE는 가능, IIS는 윈도우 서버가 필요  적은 자원으로 많은 동접자 수용이 가능한가?  APACHE와 같은 쓰레드/프로세스 기반 구조를 가진 웹 서버는 무리  NGINX와 같은 비동기 이벤트 기반 구조를 가진 웹 서버가 필요  다양한 종류의 WAS를 지원 가능한가?  프록시 모듈이 잘 갖춰져 있는 웹 서버가 요구 됨
  • 18. 어떤 웹 서버를 선택할까? '웹 서버' ? NGINX : APACHE
  • 19. 어떤 웹 서버를 선택할까? 동시 접속 요청  아파치는 처음과 비해 현저하게 처리량이 떨어짐  엔진엑스는 처음과 비슷한 처리량을 보여줌 메모리 사용량  아파치는 동시 접속 요청이 많을수록 메모리 사용량 증가  엔진엑스는 처음과 비슷한 메모리 사용량을 보여줌
  • 20. 어떤 웹 서버를 선택할까?  대부분의 사이트가 PHP로 구현되어 있음  PHP 성능이 보장되는 웹 서버 선택이 필수  아파치는 PHP 처리 능력이 월등하게 높음  엔진엑스는 fastcgi 의존성 때문에 성능이 높지 않음
  • 21. 어떤 웹 서버를 선택할까? 서로의 장점을 활용하자  엔진엑스는 정적인 파일에서 높은 처리 능력을 보임  아파치는 동적인 파일에서 높은 처리 능력을 보임  같이 쓰면 되겠네!
  • 22. 그래서.. Nginx + Apache: Reverse Proxy Nginx http/80 Reverse proxy http/8080 Apache webserver 1 http/8080 Apache webserver 2 http/8080 Apache webserver 3 Nginx  80번 정적파일 ex) html Apache  8080 동적파일 처리 ex) php
  • 24. Proxy도 모르겠는데 Reverse Proxy는 뭐야? 사전적 의미: 대리, 대리권, 대리 투표, 대리인 로컬 서버프록시 Proxy?
  • 25. Proxy도 모르겠는데 Reverse Proxy는 뭐야? 클라이언트가 자신을 통해서 다른 네트워크 서비스에 간접적으로 접속할 수 있게 해 주는 서버 Proxy Server? 로컬 서버프록시
  • 26. Nginx http/80 Reverse proxy http/8080 Apache webserver 1 http/8080 Apache webserver 2 http/8080 Apache webserver 3 Reverse Proxy? 클라이언트가 서버에 요청을 하면 그 사이에서 요청을 대리로 수행하는 것
  • 27. Nginx http/80 Reverse proxy http/8080 Apache webserver 1 http/8080 Apache webserver 2 http/8080 Apache webserver 3 Reverse Proxy? Reverse Proxy 도입 효과  서비스 형태는 유지하면서 웹 서버의 장 점들을 살려 성능 극대화  내부 네트워크에 대한 단일 액세스 지점 을 제공하여 내부 HTTP 서버 보호  HTTP 요청의 내용에 따라 시스템의 동작 제어  전에는 지원하지 못했던 다양한 WAS 지 원
  • 28. Nginx http/80 Reverse proxy http/8080 Apache webserver 1 http/8080 Apache webserver 2 http/8080 Apache webserver 3 Reverse Proxy?
  • 30. 그럼 데이터베이스 서버는? Thread Pool, 강화된 스토리지 엔진 (InnoDB → XtraDB, Federated → FederatedX), 새로운 스토리지 엔진(Aria, Cassandra), 새로운 플러그인 (HandlerSocket), 새로운 기능(Virtual Column) 등이 MariaDB에 포팅되어 있다. MariaDB는 ‘GPL v2’04 라이선스에 따르기 때문에 라이선스 정책에서 상당히 자유롭다. “오라클이 MySQL을 유료화하면 어떻게 하나”라고 걱정하고 있 다면, MariaDB 사용을 고려해보는 것도 좋다. 마리아DB 커뮤니티는 MySQL과 비교해 리플리케이션 부분 속도가 약 4~5천 배 정도 빠르며, MySQL이 가 지고 있는 모든 제품의 기능을 완벽히 구현하면서도 성능 면에서는 최고 70%의 향상을 보이고 있다고 주 장한다.
  • 31. 그럼 데이터베이스 서버는?  MariaDB는 ‘GPL v2’04 라이선스  오픈 소스 소프트웨어 컨셉과 일치  다양하고 강력한 플러그인 및 기능 제공  쓰레드풀, 이노디비 기능을 원했음  리플리케이션 부분 속도가 약 4~5천 배 빠르다.  MariaDB로 선택한 이유
  • 32. 그래서.. DB DB DB DB MariaDB Replication 설정
  • 34. Replication은 또 뭐야? 사전적 의미: 응답, 사본, 복제, 복사 Replication? DB DB
  • 35. Replication은 또 뭐야? 데이터를 물리적으로 다른 서버의 저장 공간 안에 동일한 데이터를 복사하는 기술 MariaDB Replication? DB DB
  • 36. MariaDB Replication 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은 데이터를 이중화
  • 37. MariaDB Replication DB DB DB DB MySQL Replication은 데이터를 이중화
  • 38. Bind DNS Replication DNS DNS Bind DNS Replication  Master 서버는 1차 네임서버이며 Slave 서버는 2차 네임서버로 활용  Master 네임서버와 동일한 기능을 수행, 레코드유형 역할  관리상 편리하며 존 파일을 따로 설정하 여 발생하는 영역 데이터의 불일치 오류 를 피할 수 있음
  • 39. localhost DB FTP Mail web DNS server DB DB DB DB DB FTP Mail web DNS DNS web web WEB, DB, DNS, MAIL, FTP 서버 구축했다. 이제 뭐하지?
  • 41. SFTP chroot 기존 서버 상황  SSH 접근이 가능하여 다른 영역에 접근 이 가능  FTP chroot 기능을 활용하여도 SFTP로 접근하면 무용지물  퍼미션 관리를 통해 상대 영역에 접근 할 수는 없지만 디폴트 경로는 읽기가 가능  읽기가 가능하여 로그 파일 및 설정 파일 이 외부로 노출 될 수 있음
  • 42. SFTP chroot FTP chroot가 소용이 없으면 FTP 를 지워버리고 SFTP chroot를 제공 하는 건 어때?
  • 43. SFTP chroot Secure FTP 사용  키 값 암호화  스니핑 불가능 Your PC Remote Server SFTP chroot 설정 효과  SSH처럼 키 값 암호화를 통해 스니핑 방지  chroot 설정을 통해 내부 사용자 격리 가능
  • 45. 하드용량 제어 하드용량 제어를 통해 서버 풀이 발생하지 않게 quota 툴을 사용
  • 47. SSO 유저 관리 최초 등록된 사용자는 서버의 모든 자원에 접근 및 활용 가능
  • 49. localhost DB FTP Mail web DNS server 사용자 수가 서버 관리자 작업량
  • 50. localhost DB FTP Mail web DNS server 정규화 된 자동 시스템이 필요
  • 51. Bash 자동화 시스템 쉘 스크립트는 C 언어와 유사하 며 리눅스 명령어를 직접 사용할 수 있는 매우 강력한 언어
  • 52. 모든 기능은 함수로 각각의 기능을 함수로 개발하여 관리자가 필요한 기능을 골라 작 업할 수 있게 구현
  • 53. 1분 만에 서비스 구현 Reverse Proxy 서버, SFTP 서 버, MAIL 서버, DNS 서버, DB 서버 등을 1분 만에 SSO 계정 생성 및 서비스 가능
  • 55. 서버 형상관리  기존 웹호스팅 서버를 구축하기 위 해서는 많은 시간이 소요  Chef를 사용하여 어디서든 빠르게 웹호스팅 서버를 원하는 만큼 구축
  • 56. 서버 모니터링  기존 모니터링 툴과 자체 툴로는 직 관적인 모니터링 서비스 제공 불가  Graphite를 사용하여 GUI로 직관적 인 로그 정보를 제공
  • 57. 아마존 AWS 아마존 AWS의 다양한 서비스로 똑같 은 서비스를 만들고 운영하고 싶음