Amazon EC2에는 여러 설정의 Nginx 서버가있어 때때로 새로운 설정을 구현하기 위해 구성 파일을 업데이트해야합니다.
현재 커스텀 AMI에 구성이 있으며 업데이트가 필요한 경우 AMI를 재구성 한 다음 EC2 인스턴스를 재구성해야합니다. 우리는 도우미 스크립트를 가지고 있지만 여전히 노력하고 있습니다. 더 좋은 방법이 있습니까?
답변
활용할 수있는 여러 가지 개념이 있습니다.
성공의 열쇠는 자동화입니다
첫 번째 옵션 은 현재 수행중인 작업을 계속 수행하는 것입니다. 즉, 구성을 변경할 때마다 EC2를 다시 작성하십시오 . 완전히 자동화 된 방식으로.
이제 AMI를 통해 구성 업데이트를 수행 할 때이 단계를 한 단계 더 진행 하여 일부 리포지토리의 구성 파일 변경시 다음을 수행 할 파이프 라인 을 만듭니다 .
- 가장 인기있는 도구 중 하나 인 Packer 는 새로운 AMI를 자동으로 구축합니다.
- 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에는 배포 옵션 개요 백서가 있으며이를 통해 개요를 쉽게 확인할 수 있습니다.
나는 그것이 도움이되기를 바랍니다 🙂
답변
구성을 EFS에 저장하고 Nginx 구성이 예상되는 위치에 EFS를 마운트하십시오. 또는 Amazon S3에 배치하고 가끔 동기화를 실행하거나 s3fs를 사용하십시오 (s3fs가 프로덕션 용도로는 충분하지 않을 수 있음).
구성을 변경해야 할 경우 AutoScaling 그룹의 원하는 크기를 늘려서 새 구성으로 새 인스턴스를 트리거하는 데 필요한 양을 두 배로 늘린 다음 이전 인스턴스를 제거하는 데 필요한 수준으로 되돌립니다. 또는 서버를 롤링 재부팅하면됩니다.
또 다른 옵션은 AWS 코드 배포와 같은 기본 자동화 도구를 사용하여 새 구성을 서버에 푸시하는 것입니다.
위의 완전 자동화 된 옵션은 기술적으로 더 좋고 깨끗하지만 구성을 거의 변경하지 않고 쉬운 솔루션을 원한다면 도움이 될 수 있습니다.
답변
AWS 실행 명령
https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html
또는 Opsworks https://aws.amazon.com/opsworks/를 사용할 수 있습니다
답변
AMI를 재 구축하거나 다른 것과 같이 본격적인 배포 파이프 라인을 생성하면 구성 파일 변경에 대해서만 제안하는 것이 과도하게 보입니다. Ansible을 사용하여 변경 사항을 푸시하고 모든 노드를 동기화 상태로 유지해야합니다. 일반적인 작업을 자동화하는 데 도움이되는 많은 Ansible 모듈이 있습니다.