一、elasticsearch安装
1 准备工作
- 安装jdk1.8+
- 下载elasticsearch-7.12.0
https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.12.0-linux-x86_64.tar.gz - 下载kibana
https://artifacts.elastic.co/downloads/kibana/kibana-7.12.0-linux-x86_64.tar.gz - 下载ik分词器
选择与es对应的版本下载
https://release.infinilabs.com/analysis-ik/stable/ - 创建用户(es默认不能以root启动)
adduser elasticsearch passwd elasticsearch
2 集群安装
以3节点为例
节点名 | IP |
---|---|
es01 | 192.168.0.101 |
es02 | 192.168.0.102 |
es03 | 192.168.0.103 |
-
上传包并解压
tar -zxvf elasticsearch-7.12.0-linux-x86_64.tar.gz -C /home/elasticsearch/ tar -zxvf kibana-7.12.0-linux-x86_64.tar.gz -C /home/elasticsearch/
-
修改目录权限
chown elasticsearch:elasticsearch /home/elasticsearch/elasticsearch-7.12.0 chmod 777 /home/elasticsearch/elasticsearch-7.12.0
-
修改limits.conf配置文件
vim /etc/security/limits.conf # 配置 elasticsearch用户打开文件最大数(因为es在启动时调用的文件超出普通用户默认打开文件最大数4096,会导致报错) # 在文件末尾中增加下面内容 * soft nofile 65536 * hard nofile 65536
可通过 ulimit命令对上述配置进行热配置(即不需要重启,配置参数即可生效)
-
修改虚拟内存空间,默认太小
vim /etc/sysctl.conf # 系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。 # 在配置文件中改配置 最后一行上加上 vm.max_map_count=262144
可执行 sysctl -p(立即生效)
-
修改jvm.options配置文件
设置jvm堆(heap size)大小。指针压缩功能处于开启状态,当指正压缩功能关闭时,内存指针将是前面所占内存的1.5倍。请根据内存而定;如果系统内存为64g,此处最多配置为28g;如果为32G内存,此处配置16g
vim config/jvm.options -xms26g -xmx26g
-
ES配置
cd /home/elasticsearch/ vim elsticsearch-7.12.0/config/elasticsearch.yml
#加入如下配置 #集群名称 cluster.name: cluster-es #节点名称,每个节点的名称不能重复,三台机器保持不一样 node.name: es01 #ip 地址,填入每个节点的ip,填写三台机器的ip network.host: 192.168.0.101 #是不是有资格主节点 node.master: true node.data: true # 设置对外服务的http端口,默认为9200 http.port: 9200 # 设置节点间交互的tcp端口,默认是9300 transport.tcp.port: 9300 # head 插件需要这打开这两个配置 http.cors.allow-origin: "*" http.cors.enabled: true http.max_content_length: 200mb #ES7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master cluster.initial_master_nodES: ["es01", "es02", "es03"] #ES7.x 之后新增的配置,节点发现 discovery.seed_hosts: ["192.168.0.101:9300","192.168.0.102:9300","192.168.0.103:9300"] #集群内同时启动的数据任务个数,默认是 2 个 cluster.routing.allocation.cluster_concurrent_rebalance: 16 #添加或删除节点及负载均衡时并发恢复的线程个数,默认 4 个 cluster.routing.allocation.node_concurrent_recoveriES: 16 #初始化数据恢复时,并发恢复线程的个数,默认 4 个 cluster.routing.allocation.node_initial_primariES_recoveriES: 16 #开启密码访问配置 xpack.security.enabled: true xpack.license.self_generated.type: basic xpack.security.transport.ssl.enabled: true
-
ik分词器插件
将下载的插件放入es下面的plugins文件夹即可。 -
启动
#切换用户 su - elasticsearch cd /home/elasticsearch/elsticsearch-7.12.0/bin #后台启动,一台一台启动 ./elasticsearch -d
-
查看启动状态
# 查看9200和9300端口是否起来 ss -ntl #查看集群健康情况 http://192.168.0.101:9200/_cluster/health #集群状态说明 #green:所有的主分片和副本分片都正常运行。 #yellow:所有的主分片都正常运行,但有部分副本分片运行不正常。 #red:主分片没能正常运行 #查看分片情况 http://192.168.0.101:9200/_cat/shards?v=true&pretty #查看节点分布情况 http://192.168.0.101:9200/_cat/nodES?v=true&pretty #查看索引列表 http://192.168.0.101:9200/_cat/indicES?v=true&pretty
3 其他节点安装
用scp命令将安装包及elasticsearch.yml文件传到其他服务器上
- 每个节点上按步骤2执行一遍
- 修改各节点elasticsearch.yml的第5、7行配置即可
4 密码配置
集群启动后,在集群中一个节点上设置密码即可。
想要成功设置密码的话,必须确保集群状态正常才行,否则密码设置会失败。
在es安装目录的bin下执行如下命令,为各类用户分别设置密码:
./elasticsearch-setup-passwords interactive
二、Kibana安装
-
解压kibana-7.12.0-linux-x86_64.tar.gz
tar -zxvf kibana-7.12.0-linux-x86_64.tar.gz -C /home/elasticsearch/
-
修改配置文件
cd /home/elasticsearch/kibana-7.12.0 vim kibana.yml # 修改如下几处 server.host: "0.0.0.0" elasticsearch.hosts: ["http://192.168.0.101:9200", "http://192.168.0.102:9200", "http://192.168.0.103:9200"] # 如果Elasticsearch集群配置了用户名和密码,还需要添加以下行 elasticsearch.username: "elastic" elasticsearch.password: "your_password"
-
启动kibana
nohup ./kibana &
-
访问kibana
http://192.168.0.101:5601
三、遇到的问题
-
从节点无法加入集群?
检查防火墙 -
报错with the same id but is a different node instance
failed to send join request to master [{pros-node-1}{Dhq0h4IHS6GF4MgFwc1Vhw}{w8mXRXG6S6qvSnjHGqrYwQ}{10.45.32.90}{10.45.32.90:10800}], reason [RemoteTransportException[[pros-node-1][10.45.32.90:10800][internal:discovery/zen/join]]; nested: IllegalArgumentException[can't add node {pros-node-2} {Dhq0h4IHS6GF4MgFwc1Vhw}{EttroN0-StienfP37gyLag} {10.45.32.30}{10.45.32.30:10800}, found existing node {pros-node-1}{Dhq0h4IHS6GF4MgFwc1Vhw}{w8mXRXG6S6qvSnjHGqrYwQ}{10.45.32.90}{10.45.32.90:10800} with the same id but is a different node instance]; ]
因为复制虚拟机时,elsticsearch时,将elsticsearch文件夹下的data文件夹一并复制了。而在前面测试时,data文件夹下已经产生了data数据,于是报上面的错误。
解决办法:删除elsticsearch文件夹下的data文件夹下的节点数据。