[etc] ElasticSearch – cloud-aws Plugin

엘라스틱 서치 운영에 있어, 클러스터링 할 노드들에 대한 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 키를 생성하실때 아래와 같은 폴리시를 이용하시면 됩니다.

{

“Version”: “2012-10-17”,

“Statement”: [

{

“Effect”: “Allow”,

“Action”: “s3:*”,

“Resource”: [

“arn:aws:s3:::버킷명”,

“arn:aws:s3:::버킷명/*”

]

},

{

“Effect”: “Allow”,

“Action”: “EC2:Describe*”,

“Resource”: “*”

}

]

}

 

해당 기능을 이용하여 ElasticSearch 데이터를 백업 복구 할 수 있으며 S3를 이용하기에 리전간 마이그레이션에도 이용할 수 있습니다.

주목할 만한 점은, discover옵션 중 discover.ec2.groups 지시자를 통해 동일한 Security Group을 사용하는 인스턴스에 discover가 가능하기 때문에, 고정된 아이피를 사용하지 않는 환경에서도 적절히 사용할 수 있다는 점입니다.

 

추가 옵션 설정등은 추후 정리하도록 하겠습니다~

 

 

글쓴이