Cluster settings from elasticsearch.yml are not working


(Emptyemail) #1

Hi, I could be doing something wrong. But for some reason the following properties in elasticsearch.yml are not applying to a new cluster.

threadpool.bulk.queue_size : 500
routing.allocation.awareness.attributes: rack,zone
routing.allocation.node_concurrent_recoveries: 5

I've also tried to prefix the with cluster.

I am able to set those properties via the api on a live cluster. But would like to be able to have defaults for new clusters that start up.

To view the properties I am using /cluster/_settings and getting back

{"persistent":{},"transient":{}}

Am I missing something?

Thanks!


(Mark Walkom) #2

Per the docs, it's;

cluster.routing.allocation.awareness.attributes
cluster.routing.allocation.node_concurrent_recoveries

Are you also setting these two on your nodes;

node.rack
node.zone

(Emptyemail) #3

Hi Mark, thanks for the quick reply.

I tried both ways, with and without cluster. prefix

I am setting node.rack, and node.zone The allocation awareness is working, but I have to manually issue a curl/api post to enable it.


(Mark Walkom) #4

It might be better if you post your config so we can take a look?


(Emptyemail) #5

Here you go. I've verified that all the variables are set correctly in the environment.

discovery:
  type: ec2
  ec2:
    tag:
      Name: ${master}
path:
  data: /data
cluster:
  name: ${name}
node:
  data: ${is_data}
  master: ${is_master}
  zone: ${zone}
  rack: ${rack}

network.publish_host: "_ec2_"
bootstrap.mlockall: true

threadpool.bulk.queue_size : 500
cluster.routing.allocation.awareness.attributes: rack,zone
cluster.routing.allocation.node_concurrent_recoveries: 5
indices.recovery.max_bytes_per_sec: 50mb

(russK) #6

I've been having similar issues with ec2 clustering discovery. Using the following guide and modifying according to the changes from 1.4.4 to 1.5.2 I've got all the different boxes up and running on AWS, but apparently the two elasticsearch nodes aren't joining into a cluster.

Link = https://github.com/andrewpuch/elasticsearch-logstash-kibana-tutorial/blob/master/README.md

Here's what I've got for my elasticsearch.yml

cluster.name: elasticsearch

cloud.aws.access_key: <MY_ACCESS_KEY>

cloud.aws.secret_key: <MY_SECRET_KEY>

cloud.aws.region: us-west-2

discovery.type: ec2

discovery.zen.ping.multicast.enabled: false

discovery.ec2.groups: my_security_group

discovery.ec2.tag.Name: "ELK - Elasticsearch"

http.cors.enabled: true

http.cors.allow-origin: "*"

It seems that the yml format has changed according to the elastic git for cloud-aws, but I can't quite parse how to make of the correct changes.

https://github.com/elastic/elasticsearch-cloud-aws

I'm happy to provide any other information that would be useful to debug this issue!
Cheers


(Emptyemail) #7

Does the IAM user have access to describe instances?
Does the security group allow traffic on 9300 to instances within the security group?
Did you upgrade the aws plugin when you upgraded ElasticSearch?
Do both instances have "ELK - Elasticsearch" as their name?

The config I posted runs fine on es 1.5.2 within an aws vpc


(russK) #8

I got my issue resolved. I was using an IAM key pair, but needed my AWS root keys. Once that change was made my devices clustered correctly with the yml file posted above.

To answer the questions:
IAM user was the issue (see above)
Traffic is allowed on 9200, 9300, and 5200
Clean install of all current versions pulled from the elastic.co site
Yes, both instances have "ELK - Elasticsearch" as their names


(system) #9