[眼会手也要会]搭建Elasticsearch集群

/ 运维 / 没有评论 / 92浏览

0.前提

(1)部署集群推荐至少要部署3个节点,一个主两个从,这样当其中一个宕机不影响服务,如主挂了则另外两个从进行选举新的主提供服务; 如果只部署2个节点,则如果主挂了,另外一台从只能提供查询服务,无法进行插入数据等操作;

1.下载文件准备环境

(1)下载版本号为7.15.2的es压缩包,解压并进行以下配置,前提服务器已有Java环境 (2)创建存储数据和日志的文件夹,如/opt/es/data和/opt/es/logs (3)创建非root用户及用户组,并将es所在文件及文件夹所有者设置为该用户和用户组,如

chown -R es:es /opt/es 

(4)安装中文分词器 创建分词器文件夹analysis-ik

#创建好的文件夹
cd /opt/es/es-7.15.2/plugins/analysis-ik
#下载插件
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.15.2-linux-x86_64.tar.gz
#解压到该文件夹下并删除zip
uzip elasticsearch-7.15.2-linux-x86_64.tar.gz

2.设置相关配置文件

(1)elasticsearch.yml

#设置集群名称,其他两台一样的设置
cluster.name: wf
#该服务器的节点名称,需要唯一与其他两台不同
node.name: node-1
#自定义的存储数据的位置
path.data: /opt/es/data
#自定义日志存储的位置
path.logs: /opt/es/logs
#设置本节点网络
network.host: 0.0.0.0
#设置外部http访问端口
http.port: 9210
#设置内部集群访问端口
transport.tcp.port: 9300
#开启跨域
http.cors.enabled: true
http.cors.allow-origin: "*"
#设置三台节点host
discovery.seed_hosts: ["172.17.194.14:9300", "172.17.194.16:9300","172.17.194.14:9301"]
#设置默认主,如果设置3台则自动选择
cluster.initial_master_nodes: ["node-1", "node-2","node-3"]
#开启安全认证
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: elastic-certificates.p12

(2)jvm.options

#根据服务器修改其中配置为jvm堆内存大小 
-Xms2g
-Xmx2g

3.生成鉴权证书,提供集群间的安全访问

(1)执行命令/opt/es/bin/elasticsearch-certutil cert,提示密码可以为空,生成证书elastic-certificates.p12 (2)将证书elastic-certificates.p12分别复制到三台服务器的config目录下

4.进行启动服务,并设置密码

(1)分别执行/opt/es/bin/elasticsearch -d (2)执行/opt/es/bin/elasticsearch-setup-passwords auto命令,会自动生成密码,如:

  Changed password for user apm_system
  PASSWORD apm_system = xxx
  <p>
  Changed password for user kibana_system
  PASSWORD kibana_system = xxx
  <p>
  Changed password for user kibana
  PASSWORD kibana = xxx
  <p>
  Changed password for user logstash_system
  PASSWORD logstash_system = xxx
  <p>
  Changed password for user beats_system
  PASSWORD beats_system = xxx
  <p>
  Changed password for user remote_monitoring_user
  PASSWORD remote_monitoring_user = xxx
  <p>
  Changed password for user elastic
  PASSWORD elastic = xxx

(3)其中elastic = xxx就是http方式访问es的账号密码,可以进行测试,显示节点信息:

curl --user elastic:xxx http://localhost:9210/_cat/nodes?v