ElasticSearch叢集開啟X-Pack修改PreBuiltXPackTransportClient
原文連結 : 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
時可能會有一些不一致,有一些差異。