엘라스틱 서치 운영에 있어, 클러스터링 할 노드들에 대한 ping & discover 관련하여 매우 유용한 플러그인이 존재합니다.
기존 기 배포된 인스턴스에 올리는 형태가 아닌 자동화를 생각하신다면 해당 플러그인이 매우 유용하게 사용될 것입니다.
제 경우는 Ansible이란 툴을 이용해서 배포 및 형상관리를 진행하고 있는데요,
아래와 같은 방법을 통해서 클라우드 환경에 클러스터 노드를 구축합니다.
아래는 샘플입니다.
<pre><code>
# {{ ansible_managed }}
cluster.name: 클러스터명
node.name: {{ ansible_hostname }}
node.master: true
node.data: true
network.host: 0.0.0.0
bootstrap.mlockall: true
discovery.zen.ping_interval: 5s
discovery.zen.ping_timeout: 30s
discovery.zen.ping_retries: 3
# cloud-aws by hong
plugin.mandatory: “cloud-aws”
cloud.aws.region: “ap-northeast-1”
cloud.aws.access_key: “액세스키”
cloud.aws.secret_key: “시크릿키”
discovery.zen.ping.multicast.enabled: false
discovery.type: “ec2”
discovery.ec2.groups: “시큐리티그룹명”
discovery.ec2.host_type: “private_ip”
discovery.ec2.ping_timeout: “30s”
discovery.ec2.availability_zones: [“ap-northeast-1a”, “ap-northeast-1c”]
</code></pre>
위의 설정중 눈여겨 볼 부분은 # 주석의 cloud-aws 부분입니다.
해당 기능을 사용하는데 있어, 백업 & 리스토어 기능을 사용하기 위해서는 s3 권한을
자동 디스커버 관련 권한은 ec2-describe관련 권한이 필요합니다.
해당 IAM 키를 생성하실때 아래와 같은 폴리시를 이용하시면 됩니다.
|
해당 기능을 이용하여 ElasticSearch 데이터를 백업 복구 할 수 있으며 S3를 이용하기에 리전간 마이그레이션에도 이용할 수 있습니다.
주목할 만한 점은, discover옵션 중 discover.ec2.groups 지시자를 통해 동일한 Security Group을 사용하는 인스턴스에 discover가 가능하기 때문에, 고정된 아이피를 사용하지 않는 환경에서도 적절히 사용할 수 있다는 점입니다.
추가 옵션 설정등은 추후 정리하도록 하겠습니다~