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 

再次訪問,成功!

8

Monitor裏面可以看到和 Header 插件類似的功能:
9

集羣開啓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 的顯示,

10

11

13
至此,集羣就成功開啓了 xpack 功能。

創建用於連接9200的用戶

這個用戶可以訪問 localhost:9200 同時用於下面的 xpack javaApi 連接用戶
12

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 時可能會有一些不一致,有一些差異。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章