原文链接 : ElasticSearch集群开启X-Pack修改PreBuiltXPackTransportClient
ElasticSearch版本5.5.1,集群三台节点。
在节点1上安装x-pack
bin/elasticsearch-plugin install x-pack
可以看到node1启动时已经加载了 x-pack
启动 kibana
发现 Auth failed
启动集群中的其他node节点也报错 ,无法加入集群。
Caused by: org.elasticsearch.transport.RemoteTransportException: [node1][127.0.0.1:9300][internal:transport/handshake]
Caused by: org.elasticsearch.ElasticsearchSecurityException: missing authentication token for action [internal:transport/handshake]
安装 kibana-x-pack
插件
Optimizing and caching browser bundles…
这一步会卡很久。 慢慢等吧 。
安装好了,打开 Kibana
发现 session
报错 clear
也没有用
回去看 Kibana 没有被关闭 导致的:
log [02:10:01.457] [fatal] Port 5601 is already in use. Another instance of Kibana may be running!
解决:
lsof -i:5601
kill pid
bin/kibana
再次访问,成功!
在 Monitor
里面可以看到和 Header
插件类似的功能:
集群开启Xpack
root@7088c867ec22:/elasticsearch/el_slave/es_slave1# bin/elasticsearch-plugin install x-pack
-> Downloading x-pack from elastic
过程与 node1
相同,重启 node2
看看现在能否添加到集群中去:
##加载x-pack
[2018-07-24T02:26:58,548][INFO ][o.e.p.PluginsService ] [node2] loaded plugin [x-pack]
##添加到集群成功
[2018-07-24T02:27:07,785][INFO ][o.e.c.s.ClusterService ] [node2] detected_master {node1}{guQWpGciQvuQzXB30zDMEw}{HE-ZLsMTTE-L-hcsFX45sQ}{172.17.0.2}{172.17.0.2:9300}{ml.enabled=true}, added {{node1}{guQWpGciQvuQzXB30zDMEw}{HE-ZLsMTTE-L-hcsFX45sQ}{172.17.0.2}{172.17.0.2:9300}{ml.enabled=true},}, reason: zen-disco-receive(from master [master {node1}{guQWpGciQvuQzXB30zDMEw}{HE-ZLsMTTE-L-hcsFX45sQ}{172.17.0.2}{172.17.0.2:9300}{ml.enabled=true} committed version [21]])
看看 Kibana
的显示,
至此,集群就成功开启了 xpack
功能。
创建用于连接9200的用户
这个用户可以访问 localhost:9200
同时用于下面的 xpack javaApi
连接用户
JavaAPi-xpack
添加 x-pack 之后 java api 的连接方式的改变
由于 xpack-client-tansport PreBuiltXPackTransportClient 需要单独引入 ,所以可以从本地引入 jar 包,或者 修改 mvn ~/.m2/settings.xml 添加如下代码:
<mirrors>
<mirror>
<id>central</id>
<mirrorOf>central</mirrorOf><!-- 修改此处 -->
<name>Human Readable Name for this Mirror</name>
<url>http://maven.aliyun.com/nexus/</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>dev</id>
<repositories>
<repository> <!-- 增加elastic仓库 -->
<id>elasticsearch-releases</id>
<url>https://artifacts.elastic.co/maven</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>dev</activeProfile> <!-- 激活 -->
</activeProfiles>
然后transport 的写法只要在 Elastic-JavaApi SpringBoot布尔查询 的基础上 做一点儿修改就可以了
try {
//不要设置集群嗅探,这样会把客户端也添加到集群中作为
Settings settings = Settings.builder()
.put("cluster.name", "leon")
.put("xpack.security.transport.ssl.enabled", false)
.put("xpack.security.user", "es:es123456")
.build();
transPort = new PreBuiltXPackTransportClient(settings);
这一套是我实践下来的记录,在移植到生产环境和别人机器上在引入 PreBuiltXPackTransportClient
时可能会有一些不一致,有一些差异。