由于ES 6.2处理bulk update遇到重复id时效率会非常低,因此准备将集群迁到6.3。根据ES官方文档,这种小版本的升级应该是可以进行滚动升级的,问题在于当我将一个节点进行滚动升级时,升级后的节点加入不了新的集群。
升级步骤:
1. 根据官方文档的建议,关掉shard allocation,启动sync_flush:
es 6.2关于x-pack部分的配置:
怀疑是与x-pack以及身份认证有关,因此我又将原来6.2节点下的config/certs目录拷贝到6.3的config下,并且将以下配置生效:
请问有大神能帮忙看一下是否有解决办法吗?由于是线上集群,不能停服务,只能滚动升级。原来以为这只是一个小版本的升级,没想到坑这么大!-___-
升级步骤:
1. 根据官方文档的建议,关掉shard allocation,启动sync_flush:
PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "primaries"
}
}
POST _flush/synced
2. 下载ES 6.3.0,将原来 ES 6.2的配置拷贝到ES 6.3.0文件夹中,由于官方文档中说ES 6.3以后x-pack成为了es的内置module,因此我将关于x-pack部分的配置删除了:es 6.2关于x-pack部分的配置:
xpack.watcher.history.cleaner_service.enabled: true
xpack.ml.enabled: false
#xpack.security.enabled: false
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/cert-node.p12
xpack.security.transport.ssl.truststore.path: certs/cert-node.p12
xpack.monitoring.exporters:
id2:
type: http
host: ["http://XX.XX.XX.XX:9200"]
auth.username: elastic
auth.password: elastic
xpack.security.authc:
anonymous:
username: anonymous_user
roles: asy_role1, asy_role2
authz_exception: true
es6.3中将这些配置全部都注释掉,只根据官方文档保留了:xpack.security.enabled: true
这个配置项,但是在启动es6.3节点后,节点并不能加入到集群中。具体情况为:节点虽然正常启动,也没有报错,但是集群并没有任何这个节点加入的日志,6.3这个节点也没有加入集群的日志,在kibana和cerebro中也没有观察到这个节点重新加入到集群中。怀疑是与x-pack以及身份认证有关,因此我又将原来6.2节点下的config/certs目录拷贝到6.3的config下,并且将以下配置生效:
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/cert-node.p12
xpack.security.transport.ssl.truststore.path: certs/cert-node.p12
这时启动6.3时报错了:Caused by: java.io.IOException: keystore password was incorrect
...
Caused by: java.security.UnrecoverableKeyException: failed to decrypt safe contents entry: javax.crypto.BadPaddingException: Given final block not properly padded. Such issues can arise if a bad key is used during decryption.
...
看起来es6.3并不能正确解析es6.2的认证信息。原来6.2集群中的认证信息是统一生成的,每一个节点上的信息完全相同,如果在另外一台机器上面安装es6.2并且将配置文件全部拷贝过去然后启动,节点是可以正常加入集群的。请问有大神能帮忙看一下是否有解决办法吗?由于是线上集群,不能停服务,只能滚动升级。原来以为这只是一个小版本的升级,没想到坑这么大!-___-
2 个回复
zqc0512 - andy zhou
赞同来自:
elasticsearch-keystore
king0406
赞同来自: