基本安装
首先进官网下载对应版本,然后上传到服务器,解压
scp elasticsearch-7.15.0-linux-x86_64.tar.gz root@ddf:/opt/es/
tar zxvf elasticsearch-7.15.0-linux-x86_64.tar.gz
创建对应目录,创建用户并赋予目录权限
mkdir -p /opt/es/data
mkdir -p /opt/es/logs
touch /opt/es/pid
useradd es
passwd es
chown -R es:es /opt/es
修改安装目录下/config/jvm.options配置文件,将堆内存调整成合适大小,测试就小一点
-Xms512m
-Xmx512m
修改安装目录下/config/elasticsearch.yml 配置文件, 单节点先至少配置一个主节点
# 数据和日志目录
path.data: /opt/es/data
path.logs: /opt/es/logs
# 允许外部访问
network.host: 0.0.0.0
# 先配置一个主节点
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
参考https://www.elastic.co/guide/en/elasticsearch/reference/current/setting-system-settings.html修改/etc/security/limits.conf,在最后一行加入,注意es为启动elasticsearch的用户名,按实际情况修改
es - nofile 65535
修改/etc/security/limits.d/20-nproc.conf
# 在文件末尾中增加下面内容
# 每个进程可以打开的文件数的限制
es soft nofile 65536
es hard nofile 65536
# 操作系统级别对每个用户创建的进程数的限制
* hard nproc 4096
# 注:* 带表Linux所有用户名称
进入到/bin执行启动
cd /bin
./elasticsearch
如果报错如下内容,max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144].
则使用root账号修改在/etc/sysctl.conf文件最后添加一行,然后执行/sbin/sysctl -p 立即生效,重新启动es即可
vm.max_map_count=262144
如果报错内容为the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
请修改/config/elasticsearch.yml,如果是单机的话,先放出来一个主节点。如果是集群,根据实际情况将每个节点对应配置正确
node.name: node-1
cluster.initial_master_nodes: ["node-1"]
使用前面创建的pid文件以守护进程启动
./elasticsearch -d -p /opt/es/pid
访问9200端口测试安装结果
安装IK分词器
https://github.com/medcl/elasticsearch-analysis-ik
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.15.0/elasticsearch-analysis-ik-7.15.0.zip
在线安装失败的话,就参考IK官方文档离线下载,手动解压到es插件目录下即可
配置
重要配置
https://www.elastic.co/guide/en/elasticsearch/reference/current/important-settings.html
集群配置
出现过怎么都发现不了其它节点,每个节点都认为自己是主节点,且都没有另外节点的信息,后来删除了data目录重启就好了,不知道是不是更改过node名称的问题,如果有数据千万不要执行这个操作,这是刚开始搭建,没有数据才这么删除的
# 数据和日志目录
#集群名称
cluster.name: cluster-es
#节点名称,每个节点的名称不能重复
node.name: node-1
# 在选主过程中需要 有多少个节点通信,一般为node节点/2+1
discovery.zen.minimum_master_nodes: 2
path.data: /opt/es/data
path.logs: /opt/es/logs
# 允许外部访问, 可以配置为内网地址,暂时没搞清楚内网地址和0.0.0.0的区别,发证外网地址会报错
network.host: 0.0.0.0
# 集群通讯时对外发布的地址, 如果几台机器内网不通,这里可以配置为外网
network.publish_host: 127.0.0.1
http.port: 9200
# 集群通讯节点
transport.tcp.port: 9300
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举master
cluster.initial_master_nodes: ["node-1"]
#es7.x 之后新增的配置,节点发现,9300为集群通讯节点
# discovery.seed_hosts: ["linux1:9300","linux2:9300","linux3:9300"]
discovery.zen.ping.unicast.hosts: ["106.15.10.135:9300","106.75.227.151:9300"]
discovery.zen.minimum_master_nodes: 2
# 节点状态的响应超时时间
discovery.zen.ping_timeout: 6s
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
#是不是有资格主节点
node.master: true
#集群内同时启动的数据任务个数,默认是2个
cluster.routing.allocation.cluster_concurrent_rebalance:2
#添加或删除节点及负载均衡时并发恢复的线程个数,默认4个
cluster.routing.allocation.node_concurrent_recoveries: 4
#初始化数据恢复时,并发恢复线程的个数,默认4个
cluster.routing.allocation.node_initial_primaries_recoveries:4
对于生产环境,必须配置集群间的TLS加密传输,和最基本的安全认证
配置安全认证https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-minimal-setup.html
配置加密传输https://www.elastic.co/guide/en/elasticsearch/reference/7.15/security-basic-setup.html
-
开启了xpack.security.enabled之后xpack.security.transport.ssl.enabled也必须为true,否则无法启动
-
根据1, 可以先配置加密传输最后集群能够正常启动通讯后再回头配置用户密码
配置加密传输步骤
-
在任意单个节点上,使用 elasticsearch-certutil 工具为您的集群生成 CA,注意在要输入输出目录的时候可以直接回车,这样就会默认输出到bin目录的上一层,且在搞不清楚文件是啥的前提下不会破坏默认文件名,最后为ca输入密码
./bin/elasticsearch-certutil ca
-
在任意单个节点上, 生成节点证书和秘钥,这一步需要使用到在第一步生成的文件, --ca 后面跟着的是第一步生成的文件,然后输入第一步ca的密码最终生成一个文件,默认名称为elastic-certificates.p12,按照提示输入新的证书的密码
./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
-
将第二步生成的文件复制到集群中的每一个节点的/config目录下,保持和上面配置文件一致,在同一个层级访问到
修改每个集群的配置文件, 开启相关配置以及将证书路径配置到配置文件
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
xpack.security.enabled: true
如果在前面生成证书的时候指定了密码,则需要在每个节点都执行以下命令,然后输入当时的密码,这样就会生成对应的keystore文件,用来访问时验证密码
./bin/elasticsearch-keystore add xpack.security.transport.ssl.keystore.secure_password
./bin/elasticsearch-keystore add xpack.security.transport.ssl.truststore.secure_password
完成后启动每一个节点。重新打开一个命令窗口,选择集群中的任意一个节点后执行如下命令,按照交互提示设置相关的用户名和密码
./bin/elasticsearch-setup-passwords interactive
内置用户名
概念
分片和副本的概念,分片体现在head插件上,几个分片就是0-几个节点,如果是5个分片,则就是0-4个节点,而副本,其实就是这几个节点出现的次数,默认主分片会占用一个。如果副本数量是2, 则加上主分片一共就是这几个节点在集群中分布的次数,即出现多少次。
如下图,几个实例