24시간 365

서버/인프라지탱하는 기술

확대

출판사           제이펍

원출판사        기술평론사 (원서 ISBN 9784774135663)

원서명          [24時間365日] サーバ/インフラを支える技術

저자명          이토 나오야, 카츠미 유키, 다나카 신지, 히로세 마사아키, 야스이 마사노부, 요코가와 카즈야

역자명          진명조

출판일          2009년 4월 22일

페이지          436쪽

판  형          크라운판 변형(170*225) 반양장(Soft Cover)

정  가          25,000원

ISBN           978-89-962410-0-3  부가기호: 13560

분  야          오픈소스 / 네트워킹 / 데이터베이스 / 웹서버 / 보안

부록 소스코드         

 

도서구매사이트
강컴  교보문고  도서11번가  리브로  반디앤루니스  알라딘  영풍문고  예스이십사  인터파크 
 

도서 소개

“24시간 365일 무중단 서비스를 위해 지금 무엇을 할 수 있는가?”

당신의 질문이 위와 같다면 이 책은 바로 여러분의 것이다.


이 책은 일본의 구글이라고 칭송받는 ㈜Hatena와 모바일 플랫폼 서비스를 제공하는 KLab㈜의 서버/인프라 베테랑 엔지니어 6명이 실제 가동중인 시스템을 실례로 들면서 그들의 축적된 노하우를 공개하고 있다. 베테랑 저자들은 널리 알려지거나 혹은 직접 제작한 오픈소스 소프트웨어를 이용하여 24시간 365일 무중단 서비스를 운용하기 위한 ‘다중화’, ‘성능향상’, ‘확장성’, ‘운용효율성’에 대해 기본적인 이론과 함께 실무에서 검증된 그들만의 팁을 책에 풀어놓았다.


서버관리자에게는 무중단 서비스 외에도 위의 4가지 요소들에 대한 고민으로 서버를 항상 관리하고 있다. 그런데 흔히 구할 수 있는 오픈소스 소프트웨어(OSS)와 일반적인 도구로 ‘다중화’와 ‘확장성’을 겸비한 시스템을 구축할 수 있음에도, 단순히 ‘그런 게 있는 줄 몰랐어’, ‘그런 게 가능할 줄은 몰랐어’라는 생각에 그치고 있지는 않을까? 바로 여기에 이 책의 집필 동기가 있다. 즉, 이 책의 목표는 ‘다중화’되고 ‘확장성’도 있으면서 성능을 최고로 끌어올리고, 효과적인 운용을 위한 서버/인프라를 구축하기 위한 힌트를 여러분에게 전하기 위해서다.


뒷표지 내용

이 책은 ㈜Hatena와 KLab㈜의 서버/인프라 베테랑 엔지니어 6명이 실제 가동중인 시스템에 관한 실무적인 정보들을 제공하고 있다. 실무적이라고는 해도 하우투(How-To) 식의 매뉴얼 책은 아니다. 설치순서들에 대해 자세하게 설명하는 것도 아니고, 책에 쓰인 대로 명령을 실행한다고 해서 특별한 뭔가가 이루어지지도 않는다. 그렇다면 대체 무슨 내용이 쓰여 있을까?


시스템이란 「계(系)」다. ‘계’라는 것은 각각의 요소가 서로 연관되어 구성된 것이다. 이 책이 중요시하는 점이 바로 여기에 있다. 각각의 요소기술에 대해 상세히 설명하고, 상호 연관성, 조합, 연결 관계를 밝히는 기술들을 중점적으로 다루고 있다. 이 책의 목표는 「다중화」되고 「확장성」 있는 인프라를 구축하고 효율적으로 운용하기 위한 힌트를 여러분에게 전하기 위해서 집필되었다. 이 책에 기술되어 있는 것은 실제 현장에서 집필진이 어떻게 생각하고 고민하고 연구해왔는지, 그 궤적과 성과의 결과물이다. 그 결과물은 여러분이 이후에 인프라를 설계, 구축, 운용관리할 때 아주 긴요하게 이용할 수 있을 것이다.


이 책의 구성

1장 서버/인프라 구축 입문 …… 다중화 / 부하분산의 기본

2장 한 단계 높은 서버/인프라 구축 …… 다중화, 부하분산, 고성능 추구

3장 무중단 인프라를 향한 새로운 연구 …… DNS 서버, 스토리지 서버, 네트워크 

1~3장에 걸친 일관된 테마는 「다중화」와 「확장성」을 겸비한 인프라 디자인이다.

각 장의 절은 각각 독립된 주제지만, 「소규모 시스템을 출발점으로 어떻게 인프라를 정비해 나아갈까」라는 스토리 내에서 서로 연관되어 있다. 우선은 흐름을 파악하기 위해 1 ~ 3장 전체를 대략적으로 훑어보고 그 다음 관심 있는 절로 돌아가 차분히 읽어가는 방법을 추천한다.

4장 성능향상, 튜닝 …… 리눅스 단일 호스트, 아파치, MySQL

4장의 테마는 「성능향상」이다.

서버를 나열해서 로드밸런싱하고 시스템 전체의 성능향상을 꾀한다는 작전에는 그 구성요소인 개별서버의 튜닝도 빼놓을 수 없다. 4장에서는 특히 개별 성능향상에 관해 다루고 개별서버의 능력을 발휘하기 위해 필요한, 병목의 특징이나 튜닝에 대해 서술한다.

5장 효율적인 운용 …… 안정된 서비스를 향해

5장은 감시나 관리와 같은 「운용」이 테마다.

만일 서버 대수가 증가함에 따라 운용비용도 증가한다면 장래에는 운용비용이 병목이 되어 생각처럼 인프라를 확대할 수 없을 가능성이 있다. 다른 좋은 방법을 쓰면 얼마나 운용을 효율화할 수 있는지가 확장성 있는 인프라를 키워내는 열쇠가 된다고 할 수 있다. 5장에는 집필진의 운용환경에서 어떻게 효율적인 연구를 수행하는지, 그 사례를 소개한다.

6장 서비스의 무대 뒤 …… 자율적인 인프라, 다이나믹한 시스템 지향

마지막 6장에는 ㈜Hatena와 KLab㈜에서 운용 중인 DSAS의 여러 기능에 대해, 그리고 실제로 가동 중인 네트워크, 서버 인프라에 관련된 얘기를 한다.

집필진은 인프라팀 내에서도 핵심 엔지니어들이다. 내용은 테크니컬한 얘기와 함께 지금까지의 각 장에서는 너무 사소해서 소개할 수 없는 것이나 오늘에 이르기까지의 경위, 역사, 인프라 계열 엔지니어의 모티베이션이나 마인드와 같은 주제도 포함시킴으로써 읽을거리로서도 재미있게 구성하였다.


한국어판 서문

한국의 독자 여러분!


이번에, 저희 집필진이 쓴 이 책이 한국어로 번역된다는 말을 듣고 영광으로 생각함과 동시에 한국의 독자 여러분께 도움을 드릴 수 있게 되어 집필진 모두는 매우 기쁘게 생각하고 있습니다.


이 책은, 일본에서 웹 서비스를 제공하고 있는 ㈜Hatena와 KLab㈜의 엔지니어가 「확장성」, 「고성능」, 「운용의 효율화」라는 3가지를 키워드로 하여, 집필진의 경험을 바탕으로 한 노하우를 정리한 것입니다.


양사는 웹 서비스를 제공하고 있다는 공통점은 있지만 협업을 하고 있는 것은 아니므로, 서로의 인프라 시스템에 관해서는 잘 알지 못 했습니다. 그러나, 이 책을 집필하는 과정에서 양측의 시스템을 알게 되면서, 최종적인 구현 모습은 다를지라도 거기에 이르는 설계사상에는 유사한 점이 많아서 놀랐던 기억이 납니다. 

저는 한국어판 책에서도 동일한 노하우를 전할 수 있으리라 생각합니다. 즉, 살고 있는 나라나 말하는 언어가 다르더라도 「오픈소스 소프트웨어와 필수 하드웨어로 만든, 웹 서비스를 위한 인프라」라는 공통점이 있다면, 분명 그 노하우는 국가나 언어의 벽을 넘어서 통할 것이라고 저는 생각합니다.


틀림없이, 다양한 상황이나 환경이 있을 것이므로, 이 책에 쓰여 있는 내용이 독자 여러분의 시스템에 있는 그대로 적용할 수는 없을지도 모릅니다. 하지만, 여러분과 집필진 사이에는 「서버/인프라」라는 공통점이 있습니다. 분명, 우리의 노하우가 담긴 이 책 속에서 여러분은 새로운 발견과 식견을 얻을 수 있으리라 믿습니다. 그리고, 바다 건너에 있는 여러분에게 도움을 드릴 수 있어서 집필진은 매우 기쁘게 생각합니다.


끝으로, 이런 종류의 기술서는 영문 원서를 번역한 것이 많지만, 이렇게 좋은 기회를 준 번역 관계자 여러분, 그리고 이 책을 지금 손에 들고 있는 여러분에게 진심으로 감사합니다.


“당신의 엔지니어 인생이 늘 행복하길 기원하며…”


2009년 4월

도쿄 록본기에서

저자들을 대표해서 히로세 마사아키


저자 소개

이토 나오야 ㈜Hatena  http://d.hatena.ne.jp/naoya/

카츠미 유키 KLab㈜ 

다나카 신지 ㈜Hatena

히로세 마사아키 KLab㈜

야스이 마사노부 KLab㈜

요코가와 카즈야 KLab㈜


역자 소개

진명조

고려대학교 재료공학부를 졸업하고 ㈜오늘과내일 연구소에서 근무 중이다. 『입문자를 위한 루비』(2009), 『Binary Hacks : 해커가 전수하는 테크닉 100선』(2007), 『C언어로 배우는 알고리즘 입문』(2004) 등을 번역하였다. IT 개발자의 삶 속에서 작은 보람을 찾고자 오늘도 주어진 업무에 최선을 다하고 있다. 

차 례

1장 서버/인프라 구축 입문 …… 다중화 / 부하분산의 기본

1.1     다중화의 기본    2

        다중화란         2

        다중화의 본질    2

        라우터 장애시의 대응     4

        웹 서버 장애시의 대응    5

        장애극복         7

        장애검출 …… 헬스체크   8

        Active/Backup 구성 만들기       10

        서버를 효과적으로 활용하자 …… 부하분산         12

1.2     웹 서버의 다중화 DNS 라운드로빈        13

        DNS 라운드로빈         13

        DNS 라운드로빈의 다중화 구성 예        14

        보다 편하게 시스템 확장하기 …… 로드밸런서      18

1.3     웹 서버의 다중화 IPVS를 이용한 로드밸런서       19

        DNS 라운드로빈과 로드밸런서의 차이     19

        IPVS …… 리눅스로 로드밸런서 구성      20

        스케줄링 알고리즘        21

        IPVS 사용하기   23

        로드밸런서 구축하기      24

        L4스위치와 L7스위치     28

        L4스위치의 NAT구성과 DSR구성   29

        동일 서브넷인 서버를 부하분산할 경우 주의사항    31

1.4     라우터 및 로드밸런서의 다중화    33

        다중화란         33

        다중화 프로토콜 VRRP   33

        VRRP의 구조    34

        keepalived의 구조상의 문제       38

        keepalived 다중화        39

        keepalived 응용   43


2장 한 단계 높은 서버/인프라 구축 …… 다중화, 부하분산, 고성능 추구

2.1     리버스 프록시 도입 아파치 모듈   46

        리버스 프록시 입문       46

        HTTP 요청 내용에 따른 시스템의 동작 제어       47

        시스템 전체의 메모리 사용효율 향상       49

        리버스 프록시의 도입     57

        웹 서버가 응답하는 데이터의 버퍼링의 역할        53

        아파치 모듈을 이용한 처리의 제어         56 

        진보된 RewriteRule의 설정 예     64

        mod_proxy_balancer로 여러 호스트로 분산하기    65

2.2     캐시서버 도입 Squid, emcached   69

        캐시서버 도입    69

        Squid 캐시서버   71

        memcached에 의한 캐시         76

2.3     MySQL 리플리케이션 단시간에 장애복구하기       79

        DB서버가 멈춘다면?      79

        MySQL 리플리케이션 기능의 특징과 주의점        81

        리플리케이션의 원리      83

        리플리케이션 구성을 만들기까지   84

        리플리케이션 시작        87

        리플리케이션 상황 확인   89

2.4     MySQL 슬레이브 + 내부 로드밸런서 활용 예       94

        MySQL 슬레이브 활용방법        94

        슬레이브 참조를 로드밸런서 경유로 수행하는 방법          96

        내부 로드밸런서의 주의점 …… 분산방법은 DSR로 하라    101

2.5     고속, 경량의 스토리지 서버 선택   102

        스토리지 서버의 필요성   102

        이상적인 스토리지 서버   105

        HTTP를 스토리지 프로토콜로 이용하기    106

        남은 과제        108


3장 무중단 인프라를 향한 새로운 연구 …… DNS 서버, 스토리지 서버, 네트워크

3.1     DNS서버의 다중화       112

        DNS서버 다중화의 중요성        112

        주소변환 라이브러리를 이용한 다중화와 문제점     112

        서버팜에서의 DNS 다중화        115

        VRRP를 이용한 구성     115

        DNS서버의 부하분산     117

        정리     119

3.2     스토리지 서버의 다중화 DRBD로 미러링 구성      120

        스토리지 서버의 장애 대책        120

        스토리지 서버의 동기화 문제      120

        DRBD   121

        DRBD의 설정과 실행     123

        DRBD의 장애극복        127

        NFS서버를 장애극복할 때 주의점   131

        백업의 필요성    131

3.3     네트워크의 다중화 Bonding 드라이버, RSTP       132

        L1, L2 구성요소의 다중화        132 

        장애발생 포인트          132

        링크의 다중화와 Bonding 드라이버        133

        스위치의 다중화          135

        스위치의 증설    138

        RSTP   140

        정리     143

3.4     VLAN 도입 유연한 네트워크 구성   145

        서버팜에서 유연성이 높은 네트워크        145

        VLAN 도입이 가져오는 이점       146

        VLAN의 기본     150

        VLAN의 종류     151

        서버팜에서 활용          154

        열쇠는 물리적 구성의 단순화      159


4장 성능향상, 튜닝 …… 리눅스 단일 호스트, 아파치, MySQL

4.1     리눅스 단일 호스트 부하의 진상규명       162

        단일 호스트의 성능 끌어내기      162

        추측하지 말라, 계측하라   163

        병목 규명작업의 기본적인 흐름    165

        부하란 무엇인가          167

        Load Average를 계산하는 커널 코드 확인         177

        CPU사용률과 IO대기율   179

        멀티CPU와 CPU사용률   182

        CPU사용률이 계산되는 원리      184

        프로세스 어카운팅의 커널 코드 확인       186

        쓰레드와 프로세스        189

        ps, sar, vmstat 사용법   193

        OS튜닝이란 부하의 원인을 알고 이를 제거하는 것   207

4.2     아파치 튜닝      209

        웹 서버 튜닝     209

        웹 서버가 병목현상?     209

        아파치의 병렬처리와 MPM        210

        httpd.conf 설정   216

        Keep-Alive      227

        아파치 이외의 선택방안 검토      227

4.3     MySQL 튜닝의 핵심      230

        MySQL 튜닝의 핵심      230

        메모리 관련 파라미터 튜닝        233

        메모리 관련 체크툴 …… mymemcheck    237


5장 효율적인 운용 …… 안정된 서비스를 향해 

5.1     서비스의 가동감시 Nagios        240

        안정된 서비스 운영과 서비스의 가동감시   240

        Nagios의 개요   243

        Nagios의 설정   244

        웹 관리화면      250

        Nagios의 기본적인 사용법        253

        Nagios 응용법   258

        정리     264

5.2     서버 리소스 모니터링 Ganglia    265

        서버 리소스 모니터링     265

        모니터링 툴      266

        Ganglia …… 대량의 노드에 적합한 그래프화 툴   267

        아파치 프로세스의 상태 그래프화          269

5.3     서버관리의 효율화 Puppet        274

        효율적인 서버관리를 실현하는 툴 Puppet   274

        Puppet의 개요   275

        Puppet의 설정   276

        설정파일 작성방법        279

        로그 통지        288

        운용     290

        자동 설정관리 툴의 장단점        290

5.4     데몬의 가동관리 daemontools    292

        데몬이 비정상 종료했을 경우      292

        daemontools    293

        데몬의 관리방법          295

        daemontools의 팁       301

5.5     네트워크 부트의 활용 PXE, initramfs      306

        네트워크 부트    306

        네트워크 부트의 동작 …… PXE   307

        네트워크 부트의 활용 예          310

        네트워크 부트를 구성하기 위해    312

5.6     원격관리 관리회선, 시리얼 콘솔, IPMI     316

        원격 로그인      316

        네트워크 장애 대비       316

        시리얼 콘솔      320

        IPMI     323

        정리     325

5.7     웹 서버 로그관리 syslog, syslog-ng, cron, rotatelogs     326

        웹 서버 로그 집약, 수집   326

        집약과 수집      326

        로그 집약 …… syslog와 syslog-ng       327 

        로그 수집        331

        로그서버의 역할과 구성   333

        정리     333


6장 서비스의 무대 뒤 …… 자율적인 인프라, 다이나믹한 시스템 지향

6.1     Hatena의 내부   336

        Hatena의 인프라         336

        확장성과 안정성          339

        운용효율 향상    344

        전원효율 - 리소스 이용률 향상   348

        자율적인 인프라 지향     352

6.2     DSAS의 내부    353

        DSAS란         353

        시스템 구성 상세         361

        DSAS의 미래    376


샘플코드        377

찾아보기        396


신고
크리에이티브 커먼즈 라이선스
Creative Commons License

댓글을 달아 주세요



티스토리 툴바