
내부 IT 인프라 외에도 온라인 세계를 위한 서비스를 호스팅하는 약 500대의 Linux 시스템이 있습니다. 이들은 Database An, Product An, NFS, Backoffice 등과 같은 여러 클러스터로 그룹화됩니다. 또한 당사의 사양 및 요구 사항에 따라 외부 공급자가 관리합니다.
그러나 우리는 (웹) 소프트웨어 개발, 롤아웃 및 배포 중에 많은 문제에 직면합니다. 특히 개발 및 스테이징 환경은 라이브 시스템과 거의 공통점이 없기 때문에 (불쾌한 세부 사항은 생략합니다..) .
따라서 저는 가상 머신을 생성하고 다양한 라이브 시스템을 최대한 정확하게 복사하여 개발자를 위해 투명하게 "실제" 데이터베이스 대신 개발 데이터베이스에 연결하도록 준비했습니다(그렇지 않습니다 root
). 이것은 꽤 잘 작동하지만 ...
이러한 시스템을 원격으로 관리하고 관리할 수 있는 방법이 궁금했습니다.대량? 내가 모르는 소프트웨어 제품군이 있나요? 아니면 적어도 익숙해져야 할 몇 가지 기술이나 원리가 있습니까?
우리는 모든 개발자에게 로컬에서 실행할 수 있는 여러 이미지(VirtualBox)를 제공합니다. QA 부서 가상 클러스터(XEN 또는 Hyper-V)를 얻을 수 있습니다. 추가 서버 모듈을 제공해야 하거나 새 데이터베이스 연결을 다시 라우팅해야 하거나 패키지 관리자가 제공한 모든 것을 업데이트하려는 경우... 모든 시스템에 강제로 로그온하지 않고 어떻게 이를 수행할 수 있습니까? 동료들에게 고정 스크립트를 다운로드하고 실행하라고 요청하시겠습니까?
나는 많은 해결책이 있다고 믿습니다. 글쎄요, 검색 엔진에 올바른 키워드를 입력하기에는 제가 너무 멍청한 것 같아요... 아니면 이 문제가 들리는 것만큼 사소하지 않습니까?
참고로:
- 거의 모든 시스템이 Debian GNU/Linux 6.x "squeeze"를 실행하고 있습니다.
- 어떤 개발자도 자신의 워크스테이션에서 특정 OS를 사용하도록 강요받지 않습니다.
- 물론 예산은 제한되어 있지만 독점 소프트웨어를 구입하기에는 너무 적지 않습니다.
- 앞서 언급한 공급자와 관련된 솔루션이 선호됩니다.
답변1
정확히 무엇이 필요한지, 무엇을 찾고 있는지에 따라 다릅니다. 그러나 일반적으로 "구성 관리좋다:
등. 저는 개인적으로 Puppet을 추천하고 싶습니다. 커뮤니티가 크고 외부에서 제공되는 레시피가 많기 때문입니다. 이를 통해 시스템을 자동으로 구성하고 관리할 수 있습니다. 예를 들어 이를 자체 저장소 및 자동 업데이트와 결합하는 경우unattended-upgrades
시스템을 자동으로 업데이트할 수 있습니다.
company-base
또 다른 해결책은 필요한 소프트웨어에 자동으로 의존하고 시스템을 자동으로 구성할 수 있는 자신만의 패키지를 제공하는 것입니다 .
배포 자동화(베어본 및 가상화)도 살펴봐야 합니다. 이를 구성 관리 또는 자체 저장소와 결합하면 시스템을 쉽게 자동화하고 다시 설치할 수 있습니다. 자동 설치를 시작하려면 다음을 살펴보십시오.theformanlibvirt와 베어본 설치를 모두 지원하고 꼭두각시 지원 기능이 통합되어 있습니다. 직접 해보고 싶다면 살펴볼 수 있습니다.킥 스타트 (redhat et. al.) 또는 "미리 설정"을 사용하여 시스템을 자동으로 구성할 수 있습니다. 데비안의 경우 다음과 같은 것을 사용할 수도 있습니다디부트스트랩또는 이름이 지정된 래퍼grml-debootstrap가상화된 이미지를 지원합니다.
개발자에게 VirtualBox 이미지를 제공하는 데 도움이 되도록 다음을 살펴보세요.방랑자이를 통해 가상 환경을 사용자 정의하기 위해 Chef, Puppet 및 Shell 스크립트를 지원하는 VirtualBox를 통해 가상화된 시스템 생성을 자동화할 수 있습니다.
기존 공급자의 솔루션을 사용하려면 시스템 관리 방법을 문의해야 하지만 아마도 일종의 구성 관리일 것입니다. 구성 서버에 액세스할 수 있으면 시스템에서 해당 에이전트를 실행할 수 있습니다.
devops
Google 키워드의 경우 , 및 을 configuration management
살펴 보세요 .it automation
server orchestration
요컨대 가능한 한 많이 자동화하고 수동으로 작업하는 것에 대해서는 생각조차 하지 마십시오.
답변2
Ulrich는 이미 소프트웨어 배포 및 자동화된 서버 설정에 관해 답변을 제공했습니다.
이에 대한 원칙은 다음과 같습니다.
- 서버의 모양을 정의하세요. 여기에는 기본적으로 설치되는 일반 소프트웨어, 파티션 구성표 및 파일 시스템 레이아웃이 포함됩니다.
- 프로덕션, 스테이징, 테스트 및 개발 서버는 이러한 기본 표준과 관련하여 다르지 않아야 합니다(그렇지 않으면 나중에 그랬던 것처럼 문제가 발생하게 됩니다).
- 적절한 변경 관리를 사용하여 수행한 모든 변경 사항을 문서화하십시오(모든 구성에서 작은 한 줄 변경 사항 포함).
- 항상 테스트에서 먼저 변경하고, 개발 단계에서, 준비 단계에서, 프로덕션 단계에서 마지막으로 변경합니다.
귀하는 대량의 서버를 관리하기 위한 편리한 도구를 요청하셨습니다. 제가 개인적으로 가장 좋아하는 도구는 Cluster-Ssh( cssh
)입니다. 한 번만 입력하면 여러 서버에서 동시에 변경이 가능합니다.
문제를 발견하고 문제를 제거하는 해결 방법이 있는 경우:
- 실제로 작동하는 경우 Test/Dev/Staging/Prod(위 참조)에 수정 사항을 적용합니다.
- 가상 템플릿에 수정 사항을 적용하면 향후 VM 클론에 해당 버그가 발생하지 않습니다.
- 실제 설치 프로세스(kickstart/autoyast/무엇이든)에 수정 사항을 적용합니다.
- 모든 서버에 수정 사항 적용
수정해야 할 대량의 서버가 있는 경우 이 프로세스를 잘 문서화해야 하며 결국 다른 팀에서 수정 사항이 완전히 적용되었는지 확인해야 합니다.
이를 위해 우리는 Mantis(오픈 소스, PHP)를 사용합니다.
답변3
저는 여러 국가에서 약 30개 제품과 수백 대의 서버를 관리하고 있습니다. 저는 소프트웨어 구성 관리자이므로 루트 액세스 권한이 없고(설계상) 데이터베이스나 해당 서버에 접근하지 않으며(역시 설계상) 회사 보안 때문에 많은 어려움을 겪어야 합니다. 하지만 데이터베이스 링크 및 변경 사항을 포함하여 테스트, 준비 및 프로덕션의 구성을 관리합니다. ssh
, 및 쉘 스크립트 의 조합을 사용하여 서버로 나가는 여러 스크립트가 있습니다 python
.
고려해야 할 주요 사항은 다음과 같습니다.
- 서버와 어떤 종류의 상호 작용을 하게 됩니까? 파일 업로드만 하시나요? 명령줄 프로그램을 실행 중이신가요? 원격 X 클라이언트를 실행 중이신가요?
- 이러한 서버에 액세스하려면 어떤 수준의 보안이 필요합니까? 방화벽, 보안 네트워크, VPN?
ssh
중앙의 안전한 위치에서 충분 합니까 ? - 각 서버에서 얼마나 자동화할 수 있나요? 각 서버에 프로그램을 설치해서 실행할 수 있나요? 아니면
ssh
원격으로 실행하는 등의 방법으로 프로그램을 스트리밍해야 하나요 ?expect
명령줄 호출만으로 스크립트를 작성할 수 있습니까 ?
ssh
VirtualBox는 Ulrich가 언급한 것과 같은 시스템이나 시스템을 통해 관리할 수 있는 많은 명령줄 도구를 제공합니다 puppet
.
답변4
지난 몇 년 동안 스크립트를 사용하여 구성을 구축하는 기능에 초점을 맞춘 새로운 미니멀리스트 시스템 세트가 등장했습니다. 스크립트 작성을 위한 프레임워크이기 때문에 순서 지정이 필요한 작업에 탁월한 경향이 있습니다.
피인프라
pyinfra는 대규모로 인프라를 초고속으로 자동화합니다. 임시 명령 실행, 서비스 배포, 구성 관리 등에 사용할 수 있습니다.
유도
간단한 오케스트레이션 및 구성 관리
http://github.com/rollcat/judo
rset(1) : pln(5)
모든 스크립팅 언어를 사용하여 시스템 구성