elasticsearch通过x-pack模块来提供密码认证等功能,不过我们无需额外安装x-pack插件,x-pack包在6.3版本后已经集成在es安装包内
步骤挺简单。大概的步骤如下
1.替换掉原本的Elasticsearch的modules里面的x-pack-core-6.4.2.jar申请许可证。
2.上传安装许可证
3.完事
那开始(我用的docker安装的es和kibana) 进入docker-es进入x-pack-core的目录,替换掉这个东西。接下来展示如何替换。如果嫌弃麻烦的 可以结尾自取class文件或者jar包直接替换。
docker exec -it es6.4.2 /bin/bash cd modules/x-pack-core/
yum update && yum install lrzsz sz x-pack-core-6.4.2.jar

替换成下面的代码
LicenseVerifier.java
package org.elasticsearch.license;
import java.nio.*;
import org.elasticsearch.common.bytes.*;
import java.util.*;
import java.security.*;
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[] encryptedPublicKeyData) {
return true;
}
public static boolean verifyLicense(final License license) {
return true;
}
}
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_0157: {
shortHash = "Unknown";
date = "Unknown";
}
CURRENT = new XPackBuild(shortHash, date);
}
}
改完之后就需要吧java编译成class文件
然后把刚才的依赖加上。重新吧java编译成class文件
javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java javac -cp elasticsearch-6.4.2.jar;lucene-core-7.4.0.jar;x-pack-core-6.4.2.jar;elasticsearch-core-6.4.2.jar LicenseVerifier.java

然后把两个class文件替换掉刚才的那两个,覆盖掉之前未修改的文件,然后在重新打成jar包
jar -cvf x-pack-core-6.4.2.jar

然后进入es 。rz上传刚才新做的jar 替换掉刚才的那个jar包,然后重启es
docker exec -it es6.4.2 /bin/bash cd modules/x-pack-core/ mv x-pack-core-6.4.2.jar x-pack-core-6.4.2.jar.back rz rm x-pack-core-6.4.2.jar.back exit docker restart es6.4.2
jar包替换好了之后。就需要去申请lincese,申请地址:https://license.elastic.co/registration,打开之后这样。自己申请一下

之后会发送邮件,收到邮件里面有个下载链接。吧json下载下来。

修改json内的东西。修改license的版本和期限,type改为platinum白金版,expiry_date_in_millis期限设为2855980923000

修改好了之后 json也准备好了。现在准备上传,上传有好几种方式。我这里就直接用kibana上传就行了方便。
打开es 开启密码
docker exec -it es6.4.2 /bin/bash cd config vi elasticsearch.yml
编辑yml
cluster.name: "docker-cluster" #外网访问 network.host: 0.0.0.0 #开启xpack认证 xpack.security.enabled: true # minimum_master_nodes need to be explicitly set when bound on a public IP # set to 1 to allow single node clusters # Details: https://github.com/elastic/elasticsearch/pull/17288 discovery.zen.minimum_master_nodes: 1 #跨域 http.cors.enabled: true http.cors.allow-origin: "*"
然后 退出 重启。重启之后进入bin,修改密码
elasticsearch-setup-passwords interactive

现在就来修改一下kibana的配置,es设置了密码 kibana就访问不进去了
docker exec -it kinaba6.4.2 /bin/bash cd config/ vi kibana.yml
将下面的参数添加进去(密码和用户名需要加引号,否则不然可能docker启动不了kibana)
elasticsearch.username: 'elastic' elasticsearch.password: '123456'

【其他】如果启动不了kibana,就需要单独容器内的配置文件复制出来 在替换进去修改,这里以kibana举例
docker cp kinaba6.4.2:/opt/kibana/config/kibana.yml . vi kibana.yml docker cp kibana.yml kinaba6.4.2:/opt/kibana/config/kibana.yml docker restart kinaba6.4.2
解释:吧kibana的配置文件复制到当前目录下 修改好了之后 替换回去 在重启容器

上传刚才改过的json


ok完成。
ok!到这里就完成了
