2016-03-02 58 views
1

我的目標是在EC2中的三個實例上運行6節點集羣。 我在每個實例上放置一個只有一個主節點和一個只有數據的節點(使用有彈性的劇本)。elasticsearch:EC2發現:主節點工作數據節點失敗

來自三個實例中每一個實例的主節點都使用EC2發現找到彼此沒有問題,並形成三個羣集並選出一個主節點。 來自相同實例的數據節點在啓動時失敗,並顯示以下錯誤。

有什麼我試圖
- 交換數據節點通過主機名明確zen.unicast發現的工作
- 我可以從實例端口9301的telnet A-> B沒有問題

參考:
Java版本 - OpenJDK的運行時環境(2.5.6的IcedTea)(7u79-2.5.6-0ubuntu1.14.04.1) ES版本 - 2.1.0

數據節點elasticseach.y毫升

bootstrap.mlockall: false 
cloud.aws.region: us-east 
cluster.name: my-cluster 
discovery.ec2.groups: stage-elasticsearch 
discovery.ec2.host_type: private_dns 
discovery.ec2.ping_timeout: 30s 
discovery.type: ec2 
discovery.zen.minimum_master_nodes: 2 
discovery.zen.ping.multicast.enabled: false 
gateway.expected_nodes: 4 
http.port: 9201 
network.host: _ec2:privateDns_ 
node.data: true 
node.master: false 
transport.tcp.port: 9301 
node.name: ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1 

主節點elasticsearch.yml

bootstrap.mlockall: false 
cloud.aws.region: us-east 
cluster.name: my-cluster 
discovery.ec2.groups: stage-elasticsearch 
discovery.ec2.host_type: private_dns 
discovery.ec2.ping_timeout: 30s 
discovery.type: ec2 
discovery.zen.minimum_master_nodes: 2 
discovery.zen.ping.multicast.enabled: false 
gateway.expected_nodes: 4 
http.port: 9200 
network.host: _ec2:privateDns_ 
node.data: false 
node.master: true 
transport.tcp.port: 9300 
node.name: ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-master 

錯誤從數據節點啓動:

[2016-03-02 15:45:06,246][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] initializing ... 
[2016-03-02 15:45:06,679][INFO ][plugins     ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] loaded [cloud-aws], sites [head] 
[2016-03-02 15:45:06,710][INFO ][env      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] using [1] data paths, mounts [[/ (/dev/xvda1)]], net usable_space [11.5gb], net total_space [14.6gb], spins? [no], types [ext4] 
[2016-03-02 15:45:09,597][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] initialized 
[2016-03-02 15:45:09,597][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] starting ... 
[2016-03-02 15:45:09,678][INFO ][transport    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] publish_address {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1/xxx-xxx-xx-xxx:9301}, bound_addresses {xxx-xxx-xx-xxx:9301} 
[2016-03-02 15:45:09,687][INFO ][discovery    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] my-cluster/PNI6WAmzSYGgZcX2HsqenA 
[2016-03-02 15:45:09,701][WARN ][com.amazonaws.jmx.SdkMBeanRegistrySupport] 
java.security.AccessControlException: access denied ("javax.management.MBeanServerPermission" "findMBeanServer") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) 
    at java.security.AccessController.checkPermission(AccessController.java:559) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at javax.management.MBeanServerFactory.checkPermission(MBeanServerFactory.java:413) 
    at javax.management.MBeanServerFactory.findMBeanServer(MBeanServerFactory.java:361) 
    at com.amazonaws.jmx.MBeans.getMBeanServer(MBeans.java:111) 
    at com.amazonaws.jmx.MBeans.registerMBean(MBeans.java:50) 
    at com.amazonaws.jmx.SdkMBeanRegistrySupport.registerMetricAdminMBean(SdkMBeanRegistrySupport.java:27) 
    at com.amazonaws.metrics.AwsSdkMetrics.registerMetricAdminMBean(AwsSdkMetrics.java:355) 
    at com.amazonaws.metrics.AwsSdkMetrics.<clinit>(AwsSdkMetrics.java:316) 
    at com.amazonaws.AmazonWebServiceClient.requestMetricCollector(AmazonWebServiceClient.java:563) 
    at com.amazonaws.AmazonWebServiceClient.isRMCEnabledAtClientOrSdkLevel(AmazonWebServiceClient.java:504) 
    at com.amazonaws.AmazonWebServiceClient.isRequestMetricsEnabled(AmazonWebServiceClient.java:496) 
    at com.amazonaws.AmazonWebServiceClient.createExecutionContext(AmazonWebServiceClient.java:457) 
    at com.amazonaws.services.ec2.AmazonEC2Client.describeInstances(AmazonEC2Client.java:5924) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider.fetchDynamicNodes(AwsEc2UnicastHostsProvider.java:118) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider$DiscoNodesCache.refresh(AwsEc2UnicastHostsProvider.java:230) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider$DiscoNodesCache.refresh(AwsEc2UnicastHostsProvider.java:215) 
    at org.elasticsearch.common.util.SingleObjectCache.getOrRefresh(SingleObjectCache.java:55) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider.buildDynamicNodes(AwsEc2UnicastHostsProvider.java:104) 
    at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing.sendPings(UnicastZenPing.java:335) 
    at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing.ping(UnicastZenPing.java:240) 
    at org.elasticsearch.discovery.zen.ping.ZenPingService.ping(ZenPingService.java:106) 
    at org.elasticsearch.discovery.zen.ping.ZenPingService.pingAndWait(ZenPingService.java:84) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.findMaster(ZenDiscovery.java:879) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:335) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$5000(ZenDiscovery.java:75) 
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1236) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
[2016-03-02 15:45:09,703][WARN ][com.amazonaws.metrics.AwsSdkMetrics] 
java.security.AccessControlException: access denied ("javax.management.MBeanServerPermission" "findMBeanServer") 
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) 
    at java.security.AccessController.checkPermission(AccessController.java:559) 
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
    at javax.management.MBeanServerFactory.checkPermission(MBeanServerFactory.java:413) 
    at javax.management.MBeanServerFactory.findMBeanServer(MBeanServerFactory.java:361) 
    at com.amazonaws.jmx.MBeans.getMBeanServer(MBeans.java:111) 
    at com.amazonaws.jmx.MBeans.isRegistered(MBeans.java:98) 
    at com.amazonaws.jmx.SdkMBeanRegistrySupport.isMBeanRegistered(SdkMBeanRegistrySupport.java:46) 
    at com.amazonaws.metrics.AwsSdkMetrics.registerMetricAdminMBean(AwsSdkMetrics.java:361) 
    at com.amazonaws.metrics.AwsSdkMetrics.<clinit>(AwsSdkMetrics.java:316) 
    at com.amazonaws.AmazonWebServiceClient.requestMetricCollector(AmazonWebServiceClient.java:563) 
    at com.amazonaws.AmazonWebServiceClient.isRMCEnabledAtClientOrSdkLevel(AmazonWebServiceClient.java:504) 
    at com.amazonaws.AmazonWebServiceClient.isRequestMetricsEnabled(AmazonWebServiceClient.java:496) 
    at com.amazonaws.AmazonWebServiceClient.createExecutionContext(AmazonWebServiceClient.java:457) 
    at com.amazonaws.services.ec2.AmazonEC2Client.describeInstances(AmazonEC2Client.java:5924) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider.fetchDynamicNodes(AwsEc2UnicastHostsProvider.java:118) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider$DiscoNodesCache.refresh(AwsEc2UnicastHostsProvider.java:230) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider$DiscoNodesCache.refresh(AwsEc2UnicastHostsProvider.java:215) 
    at org.elasticsearch.common.util.SingleObjectCache.getOrRefresh(SingleObjectCache.java:55) 
    at org.elasticsearch.discovery.ec2.AwsEc2UnicastHostsProvider.buildDynamicNodes(AwsEc2UnicastHostsProvider.java:104) 
    at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing.sendPings(UnicastZenPing.java:335) 
    at org.elasticsearch.discovery.zen.ping.unicast.UnicastZenPing.ping(UnicastZenPing.java:240) 
    at org.elasticsearch.discovery.zen.ping.ZenPingService.ping(ZenPingService.java:106) 
    at org.elasticsearch.discovery.zen.ping.ZenPingService.pingAndWait(ZenPingService.java:84) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.findMaster(ZenDiscovery.java:879) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.innerJoinCluster(ZenDiscovery.java:335) 
    at org.elasticsearch.discovery.zen.ZenDiscovery.access$5000(ZenDiscovery.java:75) 
    at org.elasticsearch.discovery.zen.ZenDiscovery$JoinThreadControl$1.run(ZenDiscovery.java:1236) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
[2016-03-02 15:45:39,688][WARN ][discovery    ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] waited for 30s and no initial state was set by the discovery 
[2016-03-02 15:45:39,698][INFO ][http      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] publish_address {ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1/xxx-xxx-xx-xxx:9201}, bound_addresses {xxx-xxx-xx-xxx:9201} 
[2016-03-02 15:45:39,699][INFO ][node      ] [ip-xxx-xxx-xx-xxx.vpc.fakedomain.com-data1] started 

回答

2

我通過移除transport.tcp.port的明確設置固定的:9300和使用默認選擇9300-9399範圍內的任何端口。

來自AwsSdkMetrics的警告仍然存在,但不是Val所述的問題。

+0

感謝您分享您的答案。 – Val

1

這是不實際的錯誤。

請參閱this issue這裏已經報告過。看來插件太多了。

如果修改logging.yml配置文件作爲這個這個問題的建議,那麼你會被罰款:

# aws will try to do some sketchy JMX stuff, but its not needed. 
com.amazonaws.jmx.SdkMBeanRegistrySupport: ERROR 
com.amazonaws.metrics.AwsSdkMetrics: ERROR 
+0

不夠公平,但似乎確實會影響ec2發現,因爲除非我關閉ec2發現並明確設置zen.unicast.ping主機列表,否則這些數據節點似乎不能加入羣集。 – mconlin

相關問題