여러 개의 동일한 서버에서 동시에 Nginx 구성 파일을 어떻게 업데이트합니까?


12

Amazon EC2에는 여러 설정의 Nginx 서버가있어 때때로 새로운 설정을 구현하기 위해 구성 파일을 업데이트해야합니다.

현재 커스텀 AMI에 구성이 있으며 업데이트가 필요한 경우 AMI를 재구성 한 다음 EC2 인스턴스를 재구성해야합니다. 우리는 도우미 스크립트를 가지고 있지만 여전히 노력하고 있습니다. 더 좋은 방법이 있습니까?


3
몇 가지 예를 들면
poige

답변:


26

활용할 수있는 여러 가지 개념이 있습니다.

성공의 열쇠는 자동화입니다

첫 번째 옵션 은 현재 수행중인 작업을 계속 수행하는 것입니다. 즉, 구성을 변경할 때마다 EC2를 다시 작성하십시오 . 완전히 자동화 된 방식으로.

이제 AMI를 통해 구성 업데이트를 수행 할 때이 단계를 한 단계 더 진행 하여 일부 리포지토리의 구성 파일 변경시 다음을 수행 할 파이프 라인 을 만듭니다 .

  1. 가장 인기있는 도구 중 하나 인 Packer 는 새로운 AMI를 자동으로 구축합니다.
  2. Nginx 집합을 자동으로 재 구축합니다 . Application Load Balancer 가 앞에 있는 Auto Scaling 그룹 에 모든 Nginx 서버가 이미 있어야합니다 . 당신이 아닌 경우 당신이해야 으로는 업데이트 단순하게 업데이트를 할 것입니다 ASG 시작 구성 및 인스턴스가 새로운 AMI에서 재 구축 얻기 위해 기다리고.

두 번째 옵션 은 인스턴스를 제자리에 유지 하고 구성 파일 을 다시 작성하지 않고 구성 파일 만 배포하는 것입니다. 일반적으로 구성 파일을 코드로 취급하고 코드 릴리스를 배포 할 때와 같은 방식으로 구성 변경 사항을 배포 할 수 있습니다. AWS는이를 지원하는 많은 도구를 보유하고 있습니다.

  • Chef를 내부적으로사용하고이 방법으로 Nginx 업데이트를 스크립팅 할 수있는 AWS Elastic Beanstalk .
  • AWS Code Suite 의 다른 부분과 잘 통합되는 완전히 스크립트 가능한 배포 도구 인 AWS Code Deploy :
    • Nginx 구성 파일을 Git에 보관할 수있는 코드 커밋 .
    • 코드 커밋에서 구성 파일이 업데이트 될 때마다 자동으로 배포를 트리거 할 수있는 코드 파이프 라인
  • 모든 서버를 동일한 방식으로 구성 할 수있는 AWS 이외의 도구로 널리 사용되는 Ansible 또는 Puppet .

이러한 Nginx 구성 업데이트 자동화에 익숙해지면 자동화를 나머지 인프라까지 확장 할 수 있습니다.


AWS에는 배포 옵션 개요 백서가 있으며이를 통해 개요를 쉽게 확인할 수 있습니다.

나는 그것이 도움이되기를 바랍니다 :)


Ansible 또는 Puppet의 대안은 솔트 (Salt)로, 마스터 / 미니언 유형의 설정을 위해 설계되었으며 대규모 배포에 최적화되어 있습니다.
Araho

5

구성을 EFS에 저장하고 Nginx 구성이 예상되는 위치에 EFS를 마운트하십시오. 또는 Amazon S3에 배치하고 가끔 동기화를 실행하거나 s3fs를 사용하십시오 (s3fs가 프로덕션 용도로는 충분하지 않을 수 있음).

구성을 변경해야 할 경우 AutoScaling 그룹의 원하는 크기를 늘려서 새 구성으로 새 인스턴스를 트리거하는 데 필요한 양을 두 배로 늘린 다음 이전 인스턴스를 제거하는 데 필요한 수준으로 되돌립니다. 또는 서버를 롤링 재부팅하면됩니다.

또 다른 옵션은 AWS 코드 배포와 같은 기본 자동화 도구를 사용하여 새 구성을 서버에 푸시하는 것입니다.

위의 완전 자동화 된 옵션은 기술적으로 더 좋고 깨끗하지만 구성을 거의 변경하지 않고 쉬운 솔루션을 원한다면 도움이 될 수 있습니다.



1

AMI를 재 구축하거나 다른 것과 같이 본격적인 배포 파이프 라인을 생성하면 구성 파일 변경에 대해서만 제안하는 것이 과도하게 보입니다. Ansible을 사용하여 변경 사항을 푸시하고 모든 노드를 동기화 상태로 유지해야합니다. 일반적인 작업을 자동화하는 데 도움이되는 많은 Ansible 모듈이 있습니다.


불변 인프라의 한 가지 이점은 취약하고 유지 관리해야하는 "애완 동물"서버가 없다는 것을 알고 있다는 것입니다. 따라서 문제없이 prod / DR / 테스트에서 더 많은 서버를 만들 수 있다는 확신을 갖게됩니다.
Tim
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.