문제

내 조직의 웹 사이트는 Front End WebServers + AWS의 몇 가지 배경 처리 서버에서 실행되는 Django 응용 프로그램입니다.

현재 ASBIBLE 모두를 사용하고 있습니다 :

  • 시스템 구성 (베어 OS 이미지에서)
  • 수동으로 트리거 된 코드 배포를 빈번합니다.

동일한 Ansible PlayBook은 로컬 VAGRant DEV VM 또는 처음부터 생산 EC2 인스턴스를 프로비저닝 할 수 있습니다.

이제는 EC2에서 자동 싸우기를 구현하려고하고 치료를 필요로합니다. 서버로서의 서버는 애완 동물이 아닙니다. " 철학.

첫 번째 전제 조건은 정적으로 관리되는 방식 인벤토리에서 동적 인 EC2 API 기반 인벤토리로 이동하는 것이 었습니다.

다음 큰 질문은 한밤중에 던지기 인스턴스가 위나 아래로 올라 오는이 새로운 세계에서 배치하는 방법입니다. 내가 생각할 수있는 옵션은 다음과 같습니다.

  1. 각 배포 에 대해 새로운 완전히 배포 된 AMI를 굽고, 실행 구성으로 새로 만들기를 만들고 그 값으로 그룹을 업데이트하십시오. 매우 번거롭지는 않지만 깨끗한 슬레이트 접근 방식으로 인해 매우 신뢰할 수 있으며 코드가 요구되는 코드가 여기에 있어야합니다. 또한 인스턴스 부팅시 추가 단계가 필요하지 않으므로 업 & 실행 중입니다.
  2. 자주 변경되지 않는 기본 AMI 을 사용하여 Bootup에서 자동으로 최신 응용 프로그램 코드를 가져오고 웹 서버를 시작하십시오. 일단 필요에 따라 수동 배포를 수행하면 전개됩니다. 그러나 새 코드가 시스템 구성 (새 패키지, 사용 권한 등)의 변경에 의존하는 경우에 무엇이 코드 버전과 시스템 / AMI 버전 간의 종속성을 돌보는 것처럼 보입니다. 반면 "단지 완전한 실행 실행"접근 방식은 더욱 통합되고 신뢰할 수있었습니다. 실제로 잠재적 인 두통 이상입니까?
  3. Docker를 사용하십니까? 나는 그것이 유용 할 수있는 강한 헌치를 가지고 있지만, 나는 그것이 우리의 그림에 맞는 방법은 아직 확실하지 않습니다. 우리는 rabbitmq + memcache와 같은 rabbitmq + memcache가있는 상대적으로자가 포함 된 Django 프런트 엔드 앱을 통해 우리가 어쨌든 동일한 호스트에서 실행되지 않을 것입니다. 따라서 시스템 패키지 + 최신 코드가 포함 된 Asible을 사용하여 Docker 이미지를 구축하는 데있어 어떤 이점이 있으므로 EC2 인스턴스에서 직접 수행하십시오.
  4. 어떻게합니까? 모든 통찰력 / 모범 사례? 감사합니다!

도움이 되었습니까?

해결책

이 질문은 매우 의견을 기반으로합니다. 그러나 당신에게 나의 취임을주기 위해, 나는 AMI를 방해받은 다음 CloudFormation을 사용하여 Autoscaling, Monitoring 및 Pre-Baked Amis로 스택을 배치 할 수 있습니다. 이것의 이점은 AMI Autoscaling UP에 미리 구워진 응용 프로그램 스택 대부분이 더 빨리 발생합니다.

Docker는 또 다른 접근 방식이지만 내 의견으로는 EC2를 이미 사용하는 경우 응용 프로그램에 추가 레이어를 추가 할 수 있습니다. Docker는 단일 서버에서 컨테이너를 원할 경우 정말 유용 할 수 있습니다. 서버에 몇 가지 추가 용량이 있고 Docker는 기존 시스템을 간섭하지 않고 동일한 서버에서 해당 추가 응용 프로그램을 실행할 수 있습니다.

일부 사람들이 단일 서버에서 리소스를 최적화하는 일종의 방법으로 도커가 유용하지만 컨테이너에서 응용 프로그램을 미리 굽힐 수있는 일종의 방법으로 도커가 유용하지 않은 경우가 있습니다. 따라서 새 버전이나 새 코드를 배포 할 때 서버 전체에서 이러한 Docker 컨테이너를 복사 / 복제 한 다음 이전 컨테이너 버전을 중지하고 새 컨테이너 버전을 시작하십시오.

나의 두 센트.

다른 팁

하이브리드 용액은 원하는 결과를 제공 할 수 있습니다.S3에 헤드 Docker 이미지를 저장하고 시작시 스크립트를 간단하게 가져 오는 스크립트로 STIVE (또는 사용자 데이터가있는 주식 AMI로 전달하십시오).버전 제어 헤드 이미지를 최신 안정 버전으로 이동하여 인스턴스 시작시 구성 할 수있는 인스턴스 태그를 기반으로하는 인스턴스 태그를 파악할 수있는 Docker 버전을 식별 할만 큼 충분히 새 버전의 테스트 스택을 구현할 수도 있습니다.

You can also use AWS CodeDeploy with AutoScaling and your build server. We use CodeDeploy plugin for Jenkins.

This setup allows you to:

  1. perform your build in Jenkins
  2. upload to S3 bucket
  3. deploy to all the EC2s one by one which are part of the assigned AWS Auto-Scaling group.

All that with a push of a button!

Here is the AWS tutorial: Deploy an Application to an Auto Scaling Group Using AWS CodeDeploy

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top