책이야기 - Automating UNIX and Linux Administration 2판, 24시간 365일 서버/인프라를 지탱하는 기술

문태준의 이미지

간만에 kldp에 글을 올리네요. 아래 내용은 sysadminstudy 에 올린 내용인데 다른 분들한테도 참고가 될 듯하여 여기에도 글을 올립니다. 24시간 365일 서버/인프라를 지탱하는 기술은 여기 kldp 블로그에도 공동구매때문에 글이 올라왔었죠. 요즘 kldp쪽에서는 시스템 어드민쪽 이야기는 워낙 없어서 글을 잘 안 쓰게 되는 듯.
http://groups.google.com/group/sysadminstudy

automating UNIX and Linux Administration 2판 책을 주문하고 주문이 잘못되어 한달만에 받았는데 큰 틀은 1판과 비슷하지만 cfengine 에 대한 내용이 대폭 보강되었네요.
모니터링에서 nagios 도 cfengine 과 연동을 하여 사용을 하고 있고 1판에는 없던 gangila (서버 리소스 모니터링 Ganglia) 에 대한 내용도 있습니다. gangila 는 저는 써보지 않았는데 24시간 365일 서버/인프라를 지탱하는 기술에서도 소개를 하고 있습니다. 참고로 24시간 365일 서버/인프라를 지탱하는 기술에서는 cfengine 대신 puppet 을 소개하고 있는데 내용은 자세하지 않습니다.

Automating UNIX and Linux Administration 1판에서는 특정 작업을 위한 개별 도구에 대한 이야기가 많았다면 2판은 cfengine 을 이용하여 전체적으로 어떻게 시스템관리를 통합적으로 할것인지에 대한 아이디어를 주는 것 같네요.

24시간 365일 서버/인프라를 지탱하는 기술은 시스템을 안정되게 운영하는 기술을 중점적으로 소개하고 있어서 각자 자신의 상황
에 따라 알맞은 툴을 골라서 쓰는데 도움이 될 듯 합니다. 그렇지만 6장 서비스의 무대 뒤 ...... 자율적인 인프라, 다이나믹한 시스템 지향이 있는데 개별적인 툴을 종합하여 어떻게 자동화된 인프라를 만들지에 대해서는 내용이 좀 아쉬운 감이 있네요.
운영업무를 효율화하는 부분은 Automating UNIX and Linux Administration 2판이 더 도움이 될 듯 하군요.

댓글

자일자일의 이미지

주문 전에는 책의 크기가 상당할거라 생각했는데
가로 세로의 크기도 크지 않고, 페이지 수도 많지않은데다가
내용도 크게 어렵지 않은편이라 쉽게 읽히네요.

automating UNIX and Linux Administration도 관심이 가지만 언어의 장벽에...
"24시간 365일.." 다 읽고 나면 추천해주신 시스템 관리자의 시간관리 기법인가..
그것 읽어보려고합니다.

aero의 이미지

자동화를 위해서 cfengine이나 puppet 같은 걸 사용하는 건 오히려 관리부하를
증가시킬수 있다고 봅니다. 둘다 모두 다소 이상적이라 현실과는 괴리가 있다고나 할까요.

둘다 서버/에이전트 데몬형태로 떠서 동작하기 때문에 작업전에 이런 것들이 제대로 동작하고
있는지 확인하고 관리해야하며 멀티플랫폼을 완벽하게 지원도 못하고 UNIX류 플랫폼을 주
타켓으로 하고 있으면서도 관리자들이 이미 잘 알고 있는 쉘 스크립트나 기타 스크립트언어를 사용하여도
충분한 걸 놔두고 범용성 없는 자신만의 별도의 DSL(Domain Specific Language)를 익혀야 합니다.

그리고 cfengine은 C기반이라 패키지가 제공되지 않는 시스템이면 어떻게 컴파일해서 설치해야
할지 설치를 잘 할 수 있을지 고민해야되고 puppet은 ruby기반이라 그것만을 위해서 버전별
하위 호환성을 담보할 수 없는 언어를 puppet하나만을 사용하기 위해 설치하는 것도 관리상 부담이죠.

전 자동화는 서버별 주요설정등을 소스저장소 처럼 관리하고 checkout형태로 적용하고
기타 자동화 작업같은 것들은 리모트로 접속해서 일반 쉘스크립트등을 보내거나 가져와서
적용하는 구조가 더 낫다고 봅니다.
( 예전에 제가 http://kldp.org/node/87110#comment-412662 에서 언급한 slack같은 형태)

그리고 모니터링은 munin,gangila,zabbix,zenoss,cacti 등등 많지만 수천대를 넘어가는
서버를 모니터링 해야하는 scale의 문제에 봉착했을때는 분산모니터링이 필수인데
정교하고 검증된 분산모니터링 구조(http://nagios.sourceforge.net/docs/1_0/distributed.html)를
지원하는건 구관이 명관이라고 nagios 밖에 답이 없는 것 같더군요.
뭐 다른 것들도 말로는 분산모니터링이 가능하다고 하는 것들도 있지만 대부분 수십~수백대 규모의
이상적인 환경에 맞춰서 만들어진 것들이라 말이 분산이지 10만대 규모에서도 scale-up해서 잘 쓰이고
있다는 nagios에 비할바가 아니라고 봅니다.
그리고 관리자 입장에서 모니터링이란게 어떤 성능치 트랜드만 보는게 아니고
(대부분의 모니터링 시스템은 여기에만 초점을 맞추고 있죠.) 시스템의 각종 상태에 대한
정교한 경고,통보,이력관리,통계 이런것들도 포함되어야 하는데 이런 기본적인 기능에 충실한 것도
nagios가 다른 것들에 비해 가지는 강점이라고 생각하고요.

지나가다 생각나는대로 좀 끄적여 봤습니다. :)

문태준의 이미지

serverfault.com 에서 관련주제를 몇가지 찾아보았습니다.
유사한 주제로 아래 글을 읽어보았네요. (링크는 밑에 적었음)

cfengine, puppet 모두 멀티플랫폼을 지원하지 않는 단점이 있습니다. 윈도우에 cygwin 등을 이용하여 올릴 수는 있지만 이게 잘 작동할지는 잘 모르겠습니다.

단일한 os기반이라면 cfengine 설치에 대해서 고민을 할 일은 없을 듯하고 puppet 은 ruby 언어를 따로 설치해야하는 부담이 있지만 툴 나름대로의 유용함이 있다면 큰 문제는 아닐 듯 합니다.

말씀하신대로 cfengine 이나 puppet 이 제공하는 좋은 기능이 있겠지만 역으로 이때문에 관리부하가 생길 가능성이 있고 조그마한 실수에도 큰 문제가 생길 수 있습니다. 어떠한 툴을 쓰느냐에 상관없이 관리를 체계적이고 효율적으로 할 수 있는 기반시스템과 정책등이 있어야 하는데 이건 aero님이 말을 한대로 한다고 하더라도 계속 부딪치는 문제이겠지요.
cfengine 이나 puppet 의 경우도 해당 툴을 사용하는 것으로 끝나는 것이 아니라 호스트에 대한 관리, 그룹관리 등을 할 수 있는 시스템이 받쳐주어야 하지요. 이건 어떤 툴을 쓰더라도 마찬가지겠지요.

slack 은 문서가 아직은 별로 제공이 되지 않는 듯 하여 제공하는 기능을 잘은 모르겠네요. 천상 살펴보려면 프로그램 다운로드 받아서 소스보고 연구가 필요할 듯.

끙~~ 아뭏든 저도 잘 결론이 안 나네요.

http://serverfault.com/questions/465/automating-server-deployment

Where I am working at the moment, we have to manage the Linux portion of our server farm which is just over 300 Linux servers. This includes mostly HP Proliants, followed by IBM 3850s, some IBM blades, VMware ESX, and some KVM for our internal management servers.
cobbler

We looked at cobbler but the problem there was that cobbler is very RHEL/Red Hat specific. We need to support RHEL and SLES at the least, and Ubuntu is next.
puppet

We did consider puppet, however later decided against it as it depends on Ruby, which means that an upgrade of Ruby, could potentially break our management system.
hotwire

Hotwire is what we use (developed internally, but is open-source), and have done so for the last few years. It firstly inventories the systems that are going to be built, which means inventorying the data-center, rack, hardware, operating system, network, etc, and secondly perform the rapid build & deploy. Once the system is built, hotwire's auto-inventory keeps the inventory in-sync, while cfengine maintains them. Hotwire knows about the server hardware by talking to the SMBIOS/DMI data in the Bios via python-dmidecode.

The bonus points are that it is combines the inventory and build process into one, so there's less to manage, and the live-inventory feature is great as we know if something is not quite right.

The disadvantages are that the user-interface still needs polishing, and there are bugs here and there, but development is still hot, and bugs reported are fixed relatively fast.
cfengine

We use cfengine because other than it, and puppet, there is nothing else. It actually is a good tool, but "good" only as a function of how good your policies are - if you set dangerous policies, then a small mistake can cause alot of damage. For example, by policy, we don't "modify" files, we either replace them, or we don't. Also all files replaced have a header that makes any person editing it know that it will be replaced the next time it runs (it is run via cron hourly).

The configuration and all files pushed out by cfengine to the servers are also kept in a SCM, and using post-commit hooks, where possible, we check the syntax and if that fails, then the commit is rejected. This is easy for nice applications such as Apache, but not so easy for most enterprise applications.

---------------------------
문태준
http://groups.google.co.kr/group/sysadminstudy 시스템어드민 공부모임
http://tunelinux.pe.kr
http://database.sarang.net

---------------------------
문태준
http://groups.google.co.kr/group/sysadminstudy 시스템어드민 공부모임
http://tunelinux.pe.kr
http://database.sarang.net

junilove의 이미지

리눅스 서버만 60대 정도되는 환경에 nagios를 도입할려고 시도해봤는데; 설치환경부터 막혀버려서 zabbix쪽으로 돌아가는 중입니다.
설치는 간단한데 뭔간 2% 부족하다는 느낌이 드네요. (아무래도 언어의 장벽때문인것 같습니다.)
상용으로 http://www.brainz.co.kr/product/infra_01.php 환경에서 관제를 한적이 있는데,
위에서 말씀하시는 경고, 통보, 이력관리, 통계 이런것이 잘 되있더군요. 아무래도 상용툴을 먼저 접한뒤에 입맛이 까다로와진것 같습니다.
이것저것 자동화를 적용해볼려고 하니, 좋은 결과물이 나오면 올려보도록 하겠습니다.
아무래도 zabbix + munin + cfengine 정도로 끝날것 같습니다.

aero의 이미지

nagios는 다소 설치 및 설정이 까다로운 건 사실입니다.
진입장벽이 있다고 해야하나...

그래서 nagios를 코어로 사용하고 껍데기를 좀 씌워서 설치및 관리의
편리성을 높인 솔루션들이 많이 존재합니다.

http://www.groundworkopensource.com/

http://www.centreon.com/

등등

http://www.ubuntugeek.com/nagios-configuration-tools-web-frontends-or-gui.html

그리고 요즘에 nagios의 개발 프로세스에 불만을 품고 fork한
http://www.icinga.org/ 라는 것도 있죠

그런데 제가 추천드리는 nagios enhancement는
http://opsview.org/
입니다.
다른 것들은 기본 무료버젼과 상용지원버젼의 기능과 지원범위가 다른반면
opsview는 전혀 그런 제약이 없으며 앞으로도 절대 그런 정책을 취하지
않겠다고 약속하고 있으며 분산모니터링/클러스터링도 아주 손쉽게 설정할 수 있습니다.

junilove의 이미지

좋은 정보 감사합니다. ^^
다른 것을은 본적은 있는데 http://opsview.org/ 는 처음보네요.
zabbix에 좌절되면 다시 옮겨가봐야겠습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.