소규모의 자동화 된 Linux 배포 및 구성 관리-그만한 가치가 있습니까?


24

데비안을 실행하는 서버를 약 25 대 배포하려고합니다 . 머신은 웹 서버, 자바 애플리케이션 서버, 프록시, MySQL 박스와 같은 다른 역할을합니다. 향후 2 년 내에 2-5 대의 서버가 추가 될 수 있습니다.

필자는 시스템 설치에 fai 을 사용 하지만, 이러한 소규모에 대해 cfengine 또는 퍼펫 중앙 집중식 구성 관리 를 추가 할 가치가 있는지 확실하지 않습니다 .

이 규모의 환경에 구성 관리가 적합합니까?

답변:


29

데비안 사전 시드 (pre-seeding)를 혼합하여 사용하는 것이 좋습니다. 여기서 설치 프로그램은 모든 질문에 답할 텍스트 파일과 Puppet을 제공합니다.

FAI 대신 미리 설정을 사용하는 이유는 먼저 이미지를 설정하지 않고 최신 상태로 유지해야하기 때문입니다. 모든 작업을 수동으로 수행했을 때의 설치와 매우 유사한 설치로 끝납니다. 새 릴리스를 설치할 때 새 이미지를 다시 작성하지 않고 구성 파일을 변경 사항으로 업데이트해야합니다.

구성 관리 도구는 동일한 역할을 수행하는 여러 서버가 있고 웹 서버 클러스터와 같이 동일한 서버를 원하는 경우에 특히 유용합니다. 그러나 모든 서버의 기본 설치를 구성하는 데 유용 할 수도 있습니다. ntpd 및 MTA와 같은 모든 서버에 특정 패키지를 설치하려고합니다. 모든 서버에서 구성 파일을 변경하려고합니다. 또 다른 이점은 매니페스트를 서브 버전과 같은 형태로 유지하고 서버에서 변경된 사항과 서버를 만든 사람과 그 이유를 기록 할 수 있다는 것입니다. 서버 관리가 실패한 경우 구성 관리를 사용하면 생명을 구할 수 있으므로 신속하게 재 구축해야합니다. FAI 또는 미리 설정을 사용하여 OS를 설치하고, 꼭두각시를 설치 한 다음 이전과 동일하게 다시 빌드하십시오. 분명히 데이터 백업을 유지해야합니다.

구성 관리는이를 사용하여 변경을 수행하고 초기 비용이 설정되도록하기 위해 헌신이 필요하지만, 일단 설정이 완료되면 후회하지 않을 것입니다.

꼭두각시는 앞서 언급 한 두 가지 도구 중 가장 현대적인 도구입니다. 나는 누군가에게 그것을 정말로 추천합니다. 구성은 선언적 언어이며 더 높은 수준의 구성을 쉽게 구축 할 수 있습니다. 주변에는 매우 큰 커뮤니티가 있으며 메일 링리스트 나 IRC 채널에 도움을 줄 사람들이 항상 있습니다.


미리 시드에 대한 힌트를 주셔서 감사합니다. 나는 지금 그것에 대해 문서를 살펴보고 있습니다.
pQd 2016 년

FAI는 오래된 스쿨입니다. 나는 그것을 추천하지 않을 것입니다. 미리 설정 + 꼭두각시 ftw.
womble

우리는 FAI와 cfengine을 사용하고 약 1000 대의 기계를 가지고 있으며 매우 잘 작동합니다. 마이크로 스크립트를 작성하는 것이 더 쉬울 수 있으므로 자체 빌드 할 때 머신에 ssh 할 수 있다는 점은 주목할 가치가 있습니다.
James

오래 된 scool? 아니! FAI는 견고하며 10 년 이상의 경험을 가지고 있습니다. fai-project.org/reports
Thomas Lange

좋은 조언, 우리는 비슷한 접근법을 사용하며 잘 작동합니다. 그러나 나는 FAI를 기각하지 않을 것입니다. FAI는 설치에 이미지를 사용하지 않습니다 (SystemImager는이를 수행함). FAI 설치 관리자를 실행하는 데 사용되는 최소 nfs 루트 디렉토리를 설정해야합니다. 설치 프로세스는 구성 파일을 사용하여 자동화되고 다양한 사용자 정의 후크를 실행합니다. 미리 설정보다 장점은 FAI 클래스의 개념으로 다른 역할을 가진 여러 서버 (및 워크 스테이션)를 쉽게 처리 할 수 ​​있다는 것입니다.
JooMing

10

2-3 박스 이상의 환경과 특정 역할을 수행하는 '템플릿'또는 서버 개념이있는 환경에는 CFengine을 권장합니다.

왜? 간단히 말해 실수를 줄이면 환경의 모든 곳에서 파일 / 디렉토리 권한이 올바른지 확인 하고 더 많은 서버를 출시 할 때이 도구는 절대적으로 모든 것을 처리하고 실수를하지 않습니다.

숙련 된 시스템 관리자와 달리 이미 문제가 발생했을 때 12 시간이 지나면 웹 서버를 배포합니다 .... / etc / random / location으로 이동해야하는 불쾌한 작은 구성 파일을 기억할 것입니다 그렇지 않으면 / foo / bar 그렇지 않으면 애플리케이션이 청구서 고객과 같은 중요한 작업을 자동으로 수행하지 못합니까? :)

CFengine과 같은 도구는 환경 전체의 보안 업데이트를 수행하는 좋은 방법입니다. Nagios 구성 (NRPE)을 모든 상자에 떨어 뜨리는 것도 문제가됩니다. 다섯 상자 5 개 처리하든 상자는 은 cfengine과 시간을 절약 할 수 있습니다.

내 환경이 조금 더 크다는 점은 주목할 가치가 있지만, 참고 사항보다 작은 환경에 CFengine을 배포 했으므로 권장 사항입니다!

아마도 다음 질문은 CFengine vs Puppet입니까? 그것은 더 어려운 결정이며, 특히 오류 로깅과 관련하여 Puppet의 미성숙으로 인해 CFengine을 항상 사용했습니다. 요즘에는 확실하지 않습니다. 다시 꼭두각시 내 특정 문제에 보면, 그들은 고통스럽게 아직도 내가 서버를 진단 3 시간 소요되는 시간을 기억 관련 SSL 인증서했다 <-> 약간 무거운 RTFM과 RTFS와 irc.freenode.net/#puppet에서 클라이언트 연결 문제는 에서만 찾을 수 오류는 기록되지 않았으며 Luke는 "아, 정말 고치기 어렵다"고 말하지 않았습니다. :(


좋은 지적. 문제는 제 경우에는 매우 전문화 될 것입니다. 중복 때문에 템플릿 수는 아마도 n / 2 정도일 것입니다. 여기서 n은 총 서버 수입니다.
pQd 2016 년

1
나쁘지 않습니다. WWW 클러스터의 대부분은 n / 2가 아니라면 n + 2이며 HAproxy와 같은로드 밸런서 뒤에 노드를 배치하는 데 CFengine을 사용하면 매우 유연 할 수 있습니다. IPVS와 keepalive도 관리 할 수 ​​있습니다 :-) n / 2 이중화 요구 사항이 있더라도 환경에 동일하거나 유사한 구성 파일이 많이 있습니까? CFengine에는 IP 와 같은 것을 포함하는 "템플릿"구성 파일과 같은 작업을 수행하기위한 'editfiles'도구가 있으며 런타임에 올바른 정보로 찾기 및 바꾸기를 기억하십시오. ;)
nixgeek

귀하의 의견에 감사드립니다. 또한 중앙 구성에서 스크류 업으로 생산을 중단하는 것이 약간 두렵습니다. 구성의 자동 폴링을 비활성화하고 각 시스템에서 로깅하고 모든 것이 정상인지 수동으로 업데이트하고 강제로 확인하는 것에 대해 어떻게 생각하십니까? [예, 나는 nagios / 커스텀 모니터링을 할 것입니다 ...하지만 여전히].
pQd 2016 년

1
구성 관리 기술에 대한 확신은 시간이 흐르지 만 그 동안 자동 상자 폴링을 비활성화하고 'cssh'를 사용하여 각 상자 클래스에 로그인하여 'cfagent -qv'(또는 무엇이든!)를 실행하십시오. 업데이트를 푸시하려고합니다. 자신감 강화를위한 유용한 팁을 원한다면 가상 머신을 '스테이징'환경으로 구축하고 모든 변경 사항이 먼저 진행되도록하십시오. CFengine 또는 Puppet 구성을 Subversion으로 유지하는 경우 분기와 태그 만 사용하면 매우 쉽습니다.
nixgeek 2016 년

시스템 (재) 설치, 구성 관리를 엄청나게 단순화하기 위해 SLACK을 사용하는 것이 좋습니다. 여기에 있습니다 : sundell.net/~alan/projects/slack
HK_

5

cfengine 및 꼭두각시 외에 chef도 있습니다. 항상 예상치 못한 방향으로 커질 것이므로 이러한 도구 중 하나를 사용하는 것이 좋습니다. 이것은 중앙 위치에서 물건을 관리하는 데 도움이됩니다.

인식해야 할 중요한 점은 모든 것을 얻을 수는 없지만 적어도 90 %를 얻을 수 있다면 시작이라는 것입니다. 게다가 재미 있고 장기적으로 인생을 더 편하게 해줄 것입니다. 마지막으로 앞으로 나아갈 수있는 좋은 기술입니다.


chef는 최근 구성 관리 장면에 입장했습니다. 꼭두각시의 커스텀 선언 언어와 달리 루비를 작성하여 원하는 것을 수행하도록 구성되었습니다. 시간은 어떤 방법이 잘 작동하는지 알려줄 것입니다. 저는 현재 꼭두각시 캠프에 앉아 있습니다.
David Pashley 2016 년

3

나는 5 년 이후 cfengine을 사용하여 데비안을 설치하고 있습니다 (오늘은 woody에서 lenny까지). 에칭으로 커스텀 debian-installer를 빌드합니다. Preseed 덕분에 "whats the hostname"이라는 단일 질문이 나타납니다. 이 cfengine은 전체 서버 (dnssec, samba, ntpd, 기본 (Samba) 사용자 및 비밀번호를 사용하는 dns + dhcp, ssh, openvpn, apache vHosts, LVM에서 rsnapshot을 사용한 백업, 사용자 정의 webminmodule 등)를 구성합니다.

서버를 하나만 설치하더라도 툴박스에서 다음과 같이 cfengine-scripts를 사용합니다.

control:

  Repository  = ( $(CFREPO) )
  IfElapsed = ( 0 )
  Syslog = ( on )
  actionsequence = ( editfiles shellcommands )
  CPTYPE = ( sum )

editfiles:
  { /etc/sysctl.conf
    # don't spam on tty:
    BeginGroupIfNoSuchLine "kernel.printk.*=.*2 4 1 7"
      DeleteLinesMatching "^kernel.printk.*=.*"
      Append "kernel/printk=2 4 1 7"
    EndGroup
    # no E(xplicit?) C(ongestion) N(otification) 
    BeginGroupIfNoSuchLine "net.ipv4.tcp_ecn.*=.*0"
      DeleteLinesMatching "^net.ipv4.tcp_ecn.*=.*"
      Append "net/ipv4/tcp_ecn=0"
    EndGroup
    BeginGroupIfNoSuchLine "net.ipv4.ip_forward.*=.*1"
      DeleteLinesMatching "^net.ipv4.ip_forward.*=.*"
      Append "net/ipv4/ip_forward=1"
    EndGroup
    DefineClasses "configchange_sysctl"
  }

shellcommands:
  configchange_sysctl::
    "/sbin/sysctl -p /etc/sysctl.conf"

# vim: set ts=2:

cf2- 스크립트는 사람이 읽을 수 있기 때문에 cfengine을 좋아합니다.

따라서 자동 구성 관리 도구로 작업 할 가치가 있습니다.

/ 토르스텐


2

작은 사이트에서도 가치가 있습니다. 성장함에 따라 일관성이 중요합니다. 그리고 당신은 당신의 위치가 성장할 것이라는 것을 알고 있습니다. 작은 상태에서 시작하는 것이 가장 좋습니다. Cfengine은 대단합니다. 특히, 모든 패키지 관리자를 현장에서 처리 할 수있는 버전 3과 실제 가볍고 안전하며 "정상 작동"합니다. 꼭두각시는 방금 주장한 것을 전달하지 않았습니다. 요리사를 시도하지 않았습니다.

cfengine의 장점은 초경량이지만 실제로는 더 많은 기능이 있다는 것입니다. 보안은 꼭두각시가 사용하는 웹 인증서가 아니라 ssh와 같습니다. cfengine에 대해 상사에게 이야기했을 때 그는 공상 과학이라고 생각했습니다. :) 미래를 찾고 있다면 Marc Burgess의 연구 논문을 읽어보십시오. 멋진 것.


1

작은 사이트를 운영 할 때 내가 원하는 최고의 도구는 '푸시 버튼'빌드입니다. 패치, 업데이트 및 재 구축이 쉬워지면서 향후 수많은 다른 문제를 해결할 수 있습니다.

모든 상자에 ssh가 올바르게 설치되어 있지 않습니까? 컬 / wget / vim도 없습니까? 각 상자에 갖고 싶은 다른 사내 도구는 어떻습니까?

서버를 중앙에서 관리하는 것은 미래의 노력을 훨씬 쉽게하기 위해 노력해야하는 첫 번째 도구 중 하나입니다.


1

나는 여기의 모든 것에 동의합니다. 규모가 크지 않으면 작동하는 인프라를 배우고 설정하기 시작해야합니다. 그때 당신은 성장할 때 준비됩니다.

실행하려는 것에 따라 FAI, cfengine 및 데비안 / 우분투 사전 시드에 갈 것입니다. FAI는 다양한 도구로 작업 할 수 있으므로 데비안과 같은 배포판을 시작하는 것이 좋습니다. FAI (및 cfengine) 클래스 제어 구성을 사용하면 설치를 작은 모듈로 쉽게 나눌 수 있으며 각 모듈에 사용할 모듈을 선택할 수 있습니다. 이런 식으로, 많은 다른 기계가 있어도 유용합니다. 이 스크립트를 사용하여 설치를 문서화하므로 실제로 더 유용합니다. 그리고 새로운 기계에 설치할 때, 아무것도 잊지 않을 것입니다.

예, 라이브 설치에서 변경 사항을 배포하기 전에 테스트 할 컴퓨터가 있어야합니다. 그러나 이와 같은 구성 스크립트를 사용하면 실제 설치 단계를 잊지 않아도됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.