admin管理员组

文章数量:1624786

本文章使用的ES版本是6.8.23,环境是Liunx系统

ES所有版本下载路径是:
https://www.elastic.co/cn/downloads/past-releases#elasticsearch

ELK版本匹配兼容的地址是:
https://www.elastic.co/cn/support/matrix#matrix_compatibility

一:单机版不加密部署

1.配置ES服务端允许跨域访问

修改elasticsearch-6.8.23\config目录下的elasticsearch.yml,增加以下配置:

network.host: 0.0.0.0
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

这个配置可以无脑加,不管是单机还是集群配置,因为在浏览器访问ES不加此配置就会出现跨域问题!

2.启动ES

因为ES不能用root账号登陆,所以需要创建一个用户授权给ES启动包使用:
新建用户adduser username

 >  例如 adduser es

设置密码passwd username

注意:可以不用设置密码,看个人习惯,此命令也是忘记密码修改密码的命令

将es目录权限赋给刚创建的用户

chown -R username /usr/local/elasticsearch-6.8.23

查看当前目录对应的文件目录哪些用户拥有权限:ll

切换用户 su username
进入到es的bin目录启动 ./elasticsearch -d

查看日志,看是否启动成功,如果没有成功,并出现以下类似日志信息

[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决方法就是:
第一步:修改 /etc/security/limits.conf,修改到提示值即可

vim /etc/security/limits.conf

 * hard nofile 65536

第二步:修改sysctl.conf配置文件

vim /etc/sysctl.conf
vm.max_map_count=262144
注意: >= 262144就行
修改完配置参数之后再执行以下命令使其生效
sysctl -p

至此,单机版的ES就部署完成,在浏览器直接使用服务器IP+9200端口即可访问成功!



二:单机版加密部署

1.配置ES服务端允许跨域访问

修改elasticsearch-6.8.23\config目录下的elasticsearch.yml,增加以下配置:

http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

这个配置可以无脑加,不管是单机还是集群配置,因为在浏览器访问ES不加此配置就会出现跨域问题!

开启x-pack安全认证配置

xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

2.然后启动ES,启动步骤请参考单机版不加密部署的第2点

启动过程中会报错,暂时忽略。

3.设置密码(有两种,一种是自动生成,一种是手动设置)
#自动生成密码

./elasticsearch-6.8.23/bin/elasticsearch-setup-passwords auto

#手动生成密码

./elasticsearch-6.8.23/bin/elasticsearch-setup-passwords interactive

在浏览器直接访问(ip+端口号)
然后输入用户名:elastic,密码就是刚刚自己设置的,或者系统自动输出的

看到以上界面就代表ES设置密码登陆成功!

另外,如果忘记密码需要重置密码的话,单机版可以执行以下命令

curl -H “Content-Type:application/json” -XPOST -u elastic
‘http://127.0.0.1:9200/_xpack/security/user/elastic/_password‘ -d ‘{ “password” : “123456” }‘




三:集群版非加密部署

1.修改elasticsearch-6.8.23\config目录下的elasticsearch.yml配置文件
服务器节点1

# 集群的名字,保证唯一,所有都必须一致
cluster.name: cluster-es
# 节点名称,必须不一样
node.name: node-1
# 必须为本机的ip地址
network.host: 0.0.0.0
# 服务器断开,在同一机器下必须不一样
http.port: 9200
# 设置集群自动发现机器ip集合,采用广播模式
discovery.zen.ping.unicast.hosts: [“10.0.0.1”,“10.0.0.2”]
# 防止脑裂。声明大于几个的投票主节点有效,请设置为(nodes / 2) + 1 (75行)
# 因为我这里只部署了两台服务器,所以是设置为1
discovery.zen.minimum_master_nodes: 1

# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers:Authorization,X-Requested-With,Content-Length,Content-Type

服务器节点2

# 集群的名字,保证唯一,所有都必须一致
cluster.name: cluster-es
# 节点名称,必须不一样
node.name: node-2
# 必须为本机的ip地址
network.host: 0.0.0.0
# 服务器断开,在同一机器下必须不一样
http.port: 9200
# 设置集群自动发现机器ip集合,采用广播模式
discovery.zen.ping.unicast.hosts: [“10.0.0.1”,“10.0.0.2”]
# 防止脑裂。声明大于几个的投票主节点有效,请设置为(nodes / 2) + 1 (75行)
# 因为我这里只部署了两台服务器,所以是设置为1
discovery.zen.minimum_master_nodes: 1

# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers:Authorization,X-Requested-With,Content-Length,Content-Type

注意:

  • 复制配置到服务器的时候要注意 “”(双引号是否英文格式的双引号),如果不是英文格式的双引号怎部署失败

  • 如果有多台节点,就只修改node.name参数和discovery.zen.ping.unicast.hosts就行,其他不需要变动

  • 如果ES安装包有data文件夹,请rm -rf data 删除掉,初次启动前,这个数据是没有的,如果想修改data的存储路径,可以在配置文件修改路径


2.启动ES,启动步骤请参考单机版不加密部署的第2点,每个节点服务器都是一样的启动方式


3.启动没有报错,就代表启动成功,可以浏览器输入IP+端口号认证,也可以安装head插件认证





四:集群版加密部署

1:先关闭ES的进程(服务)


2:然后生成TSL证书,找任意一台节点服务器操作即可

  • 在ES的config目录下执行以下命令,(注意:在那个目录执行命令,证书就生成在当前目录)

    cd /usr/local/elasticsearch-6.8.23/config


    #–days: 表示有效期多久(天),如果不设置此参数,默认的有效期是3年
    /usr/local/elasticsearch-6.8.23/bin/elasticsearch-certutil ca --days 99999


    运行命令后需要输入密码,可以直接按回车键设置为空(若输入了密码,且在配置文件使用该证书 时,需要在elasticsearch.keystore中加入该密码)


  • ls查看当前执行命令目录会发现多了个 elastic-stack-ca.p12文件,这个就是ca颁发的证书。

  • 查看证书有效期的命令是

    openssl pkcs12 -in elastic-stack-ca.p12 -nodes | openssl x509 -noout -enddate

    图一是没有设置days参数的有效期
    图二是设置了days=99999的有效期


3.创建私钥证书

  • 执行命令

    /usr/local/elasticsearch-6.8.23/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 --days 99999

  • ls命令查看


4.此时在当前目录生成名为 elastic-certificates.p12 的文件,它是单个PKCS#12密钥存储库,其中包括节点证书、节点密钥和CA证书。默认情况下,elasticsearch-certutil 生成没有主机名信息的证书(也就是说,它们没有任何主题可选名称字段)。这意味着可以对集群中的每个节点使用此证书,但您必须关闭主机名验证。将当前服务器生成的证书文件elastic-certificates.p12拷贝到其他节点服务器的config目录下,因为集群通讯就是通过这个证书。


5.配置elasticsearch.yml配置文件

服务器节点1

# 集群的名字,保证唯一,所有都必须一致
cluster.name: cluster-es
# 节点名称,必须不一样
node.name: node-1
# 必须为本机的ip地址
network.host: 0.0.0.0
# Http端口,在同一机器下必须不一样
http.port: 9200
# 设置集群自动发现机器ip集合,采用广播模式
discovery.zen.ping.unicast.hosts: [“10.0.0.1”,“10.0.0.2”]
# 防止脑裂。声明大于几个的投票主节点有效,请设置为(nodes / 2) + 1 (75行)
# 因为我这里只部署了两台服务器,所以是设置为1
discovery.zen.minimum_master_nodes: 1

# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

# 加密节点间通信-每个节点容器都要添加
xpack.security.transport.ssl.enabled: true
# 只验证证书是否受信任,不执行主机名验证。还可以设置成 full(还要验证主机名)、none(不验证证书)
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
# 指定证书
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
# 将密钥存储库也用做信任存储库
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

服务器节点2

# 集群的名字,保证唯一,所有都必须一致
cluster.name: cluster-es
# 节点名称,必须不一样
node.name: node-2
# 必须为本机的ip地址
network.host: 0.0.0.0
# Http端口,在同一机器下必须不一样
http.port: 9200
# 设置集群自动发现机器ip集合,采用广播模式
discovery.zen.ping.unicast.hosts: [“10.0.0.1”,“10.0.0.2”]
# 防止脑裂。声明大于几个的投票主节点有效,请设置为(nodes / 2) + 1 (75行)
# 因为我这里只部署了两台服务器,所以是设置为1
discovery.zen.minimum_master_nodes: 1

# 允许跨域
http.cors.enabled: true
http.cors.allow-origin: “*”
http.cors.allow-headers: Authorization,X-Requested-With,Content-Length,Content-Type

# 设置证书
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.client_authentication: required
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12


6.启动ES,启动步骤请参考单机版不加密部署的第2点,每个节点服务器都是一样的启动方式


7.保证每个节点启动成功之后执行以下命令

#手动设置密码命令
/usr/local/elasticsearch-6.8.23/bin/elasticsearch-setup-passwords interactive


8.在浏览器直接访问(ip+端口号)
然后输入用户名:elastic,密码就是刚刚自己设置的,或者系统自动输出的


到这里为止,ES加密访问集群已经部署成功了!


9.另外,如果想通过head插件访问ES,可以按照以下步骤安装

  • 下载head插件:https://github/mobz/elasticsearch-head

  • 把下载好的head插件解压,然后改名为ROOT,然后准备一个新的tomcat,把tomcat的webapps文件下的内容文件全部清空,接着把改名为ROOT的head插件迁移到webapps中去,然后修改tomcat端口号,启动tomcat即可

  • 启动成功后就用以下路径访问

    http://10.0.0.1:8000/?auth_user=elastic&auth_password=W0A67ogjHAdGOBhE32fp
    部署的ES服务器IP加端口号,用户名auth_user=elastic是固定的,密码auth_password就是自己设置的密码

  • 连接成功后出现如下的图就代表安装成功了


好了,保姆级的ES部署方案已经全部写完了,后面会更新ES加密配合logstash和JAVA访问的案例!

本文标签: 集群单机详细esElasticsearch