在之前的文章中我们分享了安装Elasticsearch 7.4集群(开启集群Auth + Transport SSL)以及 Kibana & Keystore 中,我们已经安装了安全的Elasticsearch,可以在实际的生产环境进行部署了,但是我们可能需要体验一下白金版的其他的特性(LDAP统一认证等)怎么办呢,推荐去官网申请Licence ,有效期三十天进行测试,测试符合你的要求后再去购买对应的版本,版本对比 。
这里呢我们介绍另外一种方式,去除Elastic的License认证,当然仅仅用于研究测试,生产使用请购买License 。
环境说明:
Amazon Linux 2 AMI
Windows 10
Elasticsearch 7.4.2
Luyten v0.5.4 GitHub
WinRAR
下载Elasticsearch 7.4.2 $ wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz $ tar xf elasticsearch-7.4.2-linux-x86_64.tar.gz
我们提取出x-pack-core
这个jar包,拷贝到windows上,位置如下:
$ES_HOME/modules/x-pack-core/x-pack-core-7.4.2.jar
获取Jar包查看工具Luyten,你可以可以使用其他的工具,GitHub ,下载Windows版本的exe文件。
然后打开x-pack-core-7.4.2.jar
这个文件:
定位到两个文件:然后点击File–Save As 另存为java源码文件:
org.elasticsearch.license/LicenseVerifier.class
org.elasticsearch.xpack.core/XPackBuild.class
这里拿到两个Java源码文件,如下:
LicenseVerifier.java XPackBuild.java
下面分别进行修改:
LicenseVerifier.java 修改 package org.elasticsearch.license;import java.nio.*;import org.elasticsearch.common.bytes.*;import java.security.*;import java.util.*;import org.elasticsearch.common.xcontent.*;import org.apache.lucene.util.*;import org.elasticsearch.core.internal.io.*;import java.io.*;public class LicenseVerifier { public static boolean verifyLicense (final License license, final byte [] publicKeyData) { return true ; } public static boolean verifyLicense (final License license) { return true ; } }
XPackBuild.java 修改 package org.elasticsearch.xpack.core;import org.elasticsearch.common.io.*;import java.net.*;import org.elasticsearch.common.*;import java.nio.file.*;import java.io.*;import java.util.jar.*;public class XPackBuild { public static final XPackBuild CURRENT; private String shortHash; private String date; @SuppressForbidden (reason = "looks up path of xpack.jar directly" ) static Path getElasticsearchCodebase () { final URL url = XPackBuild.class .getProtectionDomain ().getCodeSource ().getLocation () ; try { return PathUtils.get(url.toURI()); } catch (URISyntaxException bogus) { throw new RuntimeException(bogus); } } XPackBuild(final String shortHash, final String date) { this .shortHash = shortHash; this .date = date; } public String shortHash () { return this .shortHash; } public String date () { return this .date; } static { final Path path = getElasticsearchCodebase(); String shortHash = null ; String date = null ; Label_0109: { shortHash = "Unknown" ; date = "Unknown" ; } CURRENT = new XPackBuild(shortHash, date); } }
源代码已经更改完毕,下面就是生成class文件,然后替换源class文件即可:
生成Class文件 将两个修改好后的文件:LicenseVerifier.java
,XPackBuild.java
上传到Elasticsearch所在的Linux服务上,将如下脚本放到和这两个java文件同级目录:
java2class.sh $ cat java2class.sh #!/bin/sh ES_HOME="/opt/elk74/es01" ES_JAR=$(cd $ES_HOME && ls lib/elasticsearch-[0-9]*.jar) ESCORE_JAR=$(cd $ES_HOME && ls lib/elasticsearch-core-*.jar) LUCENE_JAR=$(cd $ES_HOME && ls lib/lucene-core-*.jar) XPACK_JAR=$(cd $ES_HOME && ls modules/x-pack-core/x-pack-core-*.jar) javac -cp "${ES_HOME} /${ES_JAR} :${ES_HOME} /${LUCENE_JAR} :${ES_HOME} /${XPACK_JAR} :${ES_HOME} /${ESCORE_JAR} " LicenseVerifier.java javac -cp "${ES_HOME} /${ES_JAR} :${ES_HOME} /${LUCENE_JAR} :${ES_HOME} /${XPACK_JAR} :${ES_HOME} /${ESCORE_JAR} " XPackBuild.java [ec2-user@test01 es74-test]$ ll total 2732 -rw-rw-r-- 1 ec2-user ec2-user 528 Nov 29 11:03 java2class.sh -rw-r--r-- 1 ec2-user ec2-user 531 Nov 25 21:58 LicenseVerifier.java -rw-r--r-- 1 ec2-user ec2-user 1275 Nov 25 22:06 XPackBuild.java
说明:
这个脚本的主要作用是,方便对于不同版本的ES、不同目录的ES进行快速的生成class文件,免的再去修改路径啊,版本啊,其实上面的脚本就是执行两条语句如下:
$ javac -cp /opt/wanghk/es01/lib/elasticsearch-7.4.2.jar:/opt/wanghk/es01/lib/lucene-core-8.2.0.jar:/opt/wanghk/es01/modules/x-pack-core/x-pack-core-7.4.2.jar:/opt/wanghk/es01/lib/elasticsearch-core-7.4.2.jar LicenseVerifier.java $ javac -cp /opt/wanghk/es01/lib/elasticsearch-7.4.2.jar:/opt/wanghk/es01/lib/lucene-core-8.2.0.jar:/opt/wanghk/es01/modules/x-pack-core/x-pack-core-7.4.2.jar:/opt/wanghk/es01/lib/elasticsearch-core-7.4.2.jar XPackBuild.java
然后执行这个脚本:
$ sh java2class.sh [ec2-user@test01 es74-test]$ ll total 2732 -rw-rw-r-- 1 ec2-user ec2-user 528 Nov 29 11:03 java2class.sh -rw-rw-r-- 1 ec2-user ec2-user 410 Nov 29 11:04 LicenseVerifier.class -rw-r--r-- 1 ec2-user ec2-user 531 Nov 25 21:58 LicenseVerifier.java -rw-rw-r-- 1 ec2-user ec2-user 1512 Nov 29 11:04 XPackBuild.class -rw-r--r-- 1 ec2-user ec2-user 1275 Nov 25 22:06 XPackBuild.java
好了两个Class文件已经生成了,下面就是把jar包中对应的这两个class给替换掉我们生成的,有两种方式:
替换掉x-pack-core-7.4.2.jar
中的两个class文件 第一种方式 相对简单,将这两个class下载到windows上,然后使用Winrar打开x-pack-core-7.4.2.jar,定位到:org\elasticsearch\license
,然后将我们生成的LicenseVerifier.class拖入到这里。
定位到org\elasticsearch\xpack\core
,将XPackBuild.class拖入到这里。
第二种方式 这里在linux上操作:
我们把$ES_HOME/modules/x-pack-core/x-pack-core-7.4.2.jar
提取出来,放到一个临时的/elk/x-pack目录中。
$ export ES_HOME="/opt/elk74/es01" $ cp $ES_HOME /modules/x-pack-core/x-pack-core-7.4.2.jar /elk/x-pack $ cd /elk/x-pack $ jar -xvf x-pack-core-7.4.2.jar $ cp /root/XPackBuild.class /elk/x-pack/org/elasticsearch/xpack/core/ $ cp /root/LicenseVerifier.class /elk/x-pack/org/elasticsearch/license/ $ cd /elk/x-pack $ rm -rf x-pack-core-7.0.1.jar $ jar cvf x-pack-core-7.0.1.jar .
采用上面任意一种方式,这个jar包就是我们修改后的了,然后替换$ES_HOME/modules/x-pack-core/x-pack-core-7.4.2.jar
即可。
注意:对于ES集群,需要把每个node的节点的x-pack-core-7.4.2.jar
都替换成我们修改后的才可的。
申请License 去官网申请License 。
我们将申请下来的License中的type
改为platinum
,将expiry_date_in_millis
延长N年时间:
{"license" : { "uid" :"13370dd7-23e4-4470-ad2a-ccacb620f60a" , "type" :"platinum" , "issue_date_in_millis" :1563235200000 , "expiry_date_in_millis" :3107746200000 , "max_nodes" :100 ,"issued_to" :"l l (juzj)" , "issuer" :"Web Form" , "signature" :"AAAAAwAAAA3uiNJR7B8rdgnwFZItAAABmC9ZN0hjZDBGYnVyRXpCOW5Bb3FjZDAxOWpSbTVoMVZwUzRxVk1PSmkxaktJRVl5MUYvUWh3bHZVUTllbXNPbzBUemtnbWpBbmlWRmRZb25KNFlBR2x0TXc2K2p1Y1VtMG1UQU9TRGZVSGRwaEJGUjE3bXd3LzRqZ05iLzRteWFNekdxRGpIYlFwYkJiNUs0U1hTVlJKNVlXekMrSlVUdFIvV0FNeWdOYnlESDc3MWhlY3hSQmdKSjJ2ZTcvYlBFOHhPQlV3ZHdDQ0tHcG5uOElCaDJ4K1hob29xSG85N0kvTWV3THhlQk9NL01VMFRjNDZpZEVXeUtUMXIyMlIveFpJUkk2WUdveEZaME9XWitGUi9WNTZVQW1FMG1DenhZU0ZmeXlZakVEMjZFT2NvOWxpZGlqVmlHNC8rWVVUYzMwRGVySHpIdURzKzFiRDl4TmM1TUp2VTBOUlJZUlAyV0ZVL2kvVk10L0NsbXNFYVZwT3NSU082dFNNa2prQ0ZsclZ4NTltbU1CVE5lR09Bck93V2J1Y3c9PQAAAQCyhef7hVFMq4orIbwULz0c1dX+Ng4sva5RTmWxKYLnJAyXmMRLp2Pvk9YE5G9JoI4gaSB4mIUtVyPzNGJpHLQCPS/kQ8y0B+mc0aXbBKZgbDTqE6p9E+kk1j8myN9GU+JR8QnYd8GiP4ziBUc2zOyx4hskiGE++Kx1KbD4862GbZwLCo9pIIHoxnpt44OytDB9lb7rYr2JBwc07flaR8ndkHlOL7AhuV2OMwDNw978l4OK/O4qxdthxc/XVo6l03IkVoy17coeJ9Oi4YIpOBXrIAYRgjPa68SvnnM8Ykb0KvNvJ7Y8GJ7x+l2q5qMu8QrBeJQ6U0fH/2ATgUy9EiwA" , "start_date_in_millis" :1563235200000 } }
好了license.json文件已经OK了,根据安装Elasticsearch 7.4集群(开启集群Auth + Transport SSL)以及 Kibana & Keystore 来安装ES高安全集群。
然后加载License到ES中:
$ curl -XPUT -u elastic 'http://localhost:9200/_xpack/license' -H "Content-Type: application/json" -d @license.json Enter host password for user 'elastic' : {"acknowledged" :true ,"license_status" :"valid" }
查看License:
$ curl -XGET -uelastic http://localhost:9200/_license Enter host password for user 'elastic' : { "license" : { "status" : "active" , "uid" : "537458c7-c1dd-43ea-ab69-68es09d80c98" , "type" : "platinum" , "issue_date" : "2019-11-29T00:00:00.000Z" , "issue_date_in_millis" : 1558051200000, "expiry_date" : "2068-06-24T14:50:00.999Z" , "expiry_date_in_millis" : 2524579200999, "max_nodes" : 1000, "issued_to" : "pyker" , "issuer" : "Web Form" , "start_date_in_millis" : 1558051200000 } }
登陆Kibana查看一下吧:
参考:
https://www.ipyker.com/2019/03/13/elastic-x-pack
本文到这里就结束了,欢迎期待后面的文章。您可以关注下方的公众号二维码,在第一时间查看新文章。