docker-compose安装elasticsearch集群报错java.security.AccessControlException: access denied

通过docker-compose安装elasticsearch集群时,出现如下错误:

es72_02           | 2019-12-23 08:10:21,578 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
es72_02           |     at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
es72_02           |     at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:444)
es72_02           |     at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1805)
es72_02           |     at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:318)
es72_02           |     at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.register(Server.java:393)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:168)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:141)
es72_02           |     at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:558)
es72_02           |     at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
es72_02           |     at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:207)
es72_02           |     at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:220)
es72_02           |     at org.apache.logging.log4j.core.config.Configurator.initialize(Configurator.java:197)
es72_02           |     at org.elasticsearch.common.logging.LogConfigurator.configureStatusLogger(LogConfigurator.java:250)
es72_02           |     at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:166)
es72_02           |     at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
es72_02           |     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:310)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
es72_02           |     at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
es72_02           |     at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
es72_02           |     at org.elasticsearch.cli.Command.main(Command.java:90)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
es72_02           |
es72_02           | 2019-12-23 08:10:21,946 main ERROR Could not register mbeans java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")
es72_02           |     at java.base/java.security.AccessControlContext.checkPermission(AccessControlContext.java:472)
es72_02           |     at java.base/java.lang.SecurityManager.checkPermission(SecurityManager.java:444)
es72_02           |     at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.checkMBeanTrustPermission(DefaultMBeanServerInterceptor.java:1805)
es72_02           |     at java.management/com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.registerMBean(DefaultMBeanServerInterceptor.java:318)
es72_02           |     at java.management/com.sun.jmx.mbeanserver.JmxMBeanServer.registerMBean(JmxMBeanServer.java:522)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.register(Server.java:393)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:168)
es72_02           |     at org.apache.logging.log4j.core.jmx.Server.reregisterMBeansAfterReconfigure(Server.java:141)
es72_02           |     at org.apache.logging.log4j.core.LoggerContext.setConfiguration(LoggerContext.java:558)
es72_02           |     at org.apache.logging.log4j.core.LoggerContext.start(LoggerContext.java:263)
es72_02           |     at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:234)
es72_02           |     at org.elasticsearch.common.logging.LogConfigurator.configure(LogConfigurator.java:127)
es72_02           |     at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:310)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
es72_02           |     at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
es72_02           |     at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:124)
es72_02           |     at org.elasticsearch.cli.Command.main(Command.java:90)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
es72_02           |     at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
es72_02           |

原因是elasticsearch使用了SecurityManager。

解决的办法有两种:

1.根据错误提示,在java security manager配置白名单。

access denied ("javax.management.MBeanTrustPermission" "register")

在JAVA_HOME的conf/security目录下的java.policy中添加如下一行:

permission javax.management.MBeanTrustPermission "register" 

2.添加启动JVM参数。

-Dlog4j2.disable.jmx=true

你可能感兴趣的:(elasticsearch,docker,其他)