(1)elasticsearch-7.17.5-linux-x86_64.tar.gz
官网链接:
(2)jdk-8u291-linux-x64.tar.gz
(3)es-head
链接:https://pan.baidu.com/s/1zagpNC9QoLDYtDqbIFEcgw?pwd=20xl?
?
创建工作目录
mkdir -pv /softwares/{data,logs,softwares}
安装jdk
tar xf jdk-8u291-linux-x64.tar.gz -C /softwares/
创建软链接
ln -s jdk1.8.0_291/ jdk
安装elasticsearch
tar xf elasticsearch-7.17.5-linux-x86_64.tar.gz -C /softwares/
创建软链接
ln -s /softwares/elasticsearch-7.17.5/ /softwares/elasticsearch
vim /etc/profile.d/elasticsearch.sh #!/bin/bash
export ES_JAVA_HOME=/softwares/jdk export ES_HOME=/softwares/elasticsearch
export PATH=$PATH:${ES_HOME}/bin:${ES_JAVA_HOME}/bin
执行环境变量
source /etc/profile.d/elasticsearch.sh
#集群名称
cluster.name: gyang-elk
#节点名称
node.name: www.gyang.cloud
#是否是主节点
node.master: true
#是否存储数据
node.data: true
#数据目录
path.data: /data/elasticsearch
#日志目录
path.logs: /logs/elasticsearch
#锁定物理内存,防止es内存被交换出去,避免es使用swap交换分区
bootstrap.memory_lock: false
#ip 本机地址
network.host: 0.0.0.0
#端口
http.port: 9200
#启动此节点时要执行查找的主机的初始列表
discovery.seed_hosts: ["公网ip"]
配置选项的含义分别介绍如下,可供参考:
(1)cluster.name: esbigdata?
配置elasticsearch集群名称,默认是elasticsearch。这里修改为esbigdata,elasticsearch会自动发现在同一网 段下的集群名为esbigdata的主机,如果在同一网段下有多个集群,就可以通过这个属性来区分不同的集 群。线上生产环境时建议更改。
(2)node.name: server1?
节点名,任意指定一个即可,这里是server1,我们这个集群环境中有三个节点,分别是server1、server2和 server3,记得根据主机的不同,要修改相应的节点名称。
(3)node.master: true?
指定该节点是否有资格被选举成为master,默认是true,elasticsearch集群中默认第一台启动的机器为 master角色,如果这台服务器宕机就会重新选举新的master。我们这个集群环境中,定义了server1和 server3两个master节点,因此这两个节点上node.master的值要设置为true。
(4)node.data: true?
指定该节点是否存储索引数据,默认为true,表示数据存储节点,如果节点配置node.master:false并且 node.data: false,则该节点就是client node。这个client node类似于一个“路由器”,负责将集群层面的请求转发到主节 点,将数据相关的请求转发到数据节点。在我们这个集群环境中,定义了server1、server2和server3均为数 据存储节点,因此这三个节点上node.data的值要设置为true。
(5)path.conf: /usr/local/elasticsearch/config?
设置配置文件的存储路径,如果不指定,默认是elasticsearch根目录下的config文件夹。
(6)path.data:/data1/elasticsearch, /data2/elasticsearch?
设置索引数据的存储路径,默认是elasticsearch根目录下的data文件夹,这里自定义了两个路径,可以设置 多个存储路径,用逗号隔开。
(7)path.logs: /usr/local/elasticsearch/logs?
设置日志文件的存储路径,默认是elasticsearch根目录下的logs文件夹
(8)path.plugins: /usr/local/elasticsearch/plugins?
设置插件的存放路径,默认是elasticsearch根目录下的plugins文件夹
(9)bootstrap.memory_lock: true?
此配置项一般设置为true用来锁住物理内存。在linux下物理内存的执行效率要远远高于虚拟内存(swap) 的执行效率,因此,当JVM开始使用swap内存时elasticsearch的执行效率会降低很多,所以要保证它不使用 swap,保证机器有足够的物理内存分配给elasticsearch。同时也要允许elasticsearch的进程可以锁住物理内 存,linux下可以通过“ulimit -l”命令查看最大锁定内存地址空间(memlock)是不是unlimited。
(10)network.host: 0.0.0.0?
此配置项是network.publish_host和network.bind_host两个配置项的集合,network.bind_host用来设置 elasticsearch提供服务的IP地址,默认值为0.0.0.0,此默认配置不太安全,因为如果服务器有多块网卡(可 设置多个IP,可能有内网IP,也可能有外网IP),那么就可以通过外网IP来访问elasticsearch提供的服务,显 然,elasticsearch集群在外网访问的话将非常不安全,因此,建议将network.bind_host设置为内网IP地址比 较好。 network.publish_host用来设置elasticsearch集群中该节点和其它节点间交互通信的IP地址,一般设置为该节 点所在的内网IP地址即可。需要保证可以和集群中其它节点进行通信。 在elasticsearch新版本中,增加了network.host配置项,此配置项用来同时设置bind_host和publish_host上面 两个参数,根据上面的介绍,此值设置为服务器的内网IP地址即可。也就是设置bind_host和publish_host为 同一个IP地址。
(11)http.port: 9200?
设置elasticsearch对外提供服务的http端口,默认为9200。其实,还有一个端口配置选项transport.tcp.port, 此配置项用来设置节点间交互通信的TCP端口,默认是9300。
(12)discovery.zen.minimum_master_nodes: 1?
配置当前集群中最少的master节点数,默认为1,也就是说,elasticsearch集群中master节点数不能低于此 值,如果低于此值,elasticsearch集群将停止运行。在三个以上节点的集群环境中,建议配置大一点的值, 推荐2至4个为好。
(13)discovery.zen.ping.timeout: 3s?
设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以设置高点的值 来防止自动发现时出错。
(14)discovery.zen.ping.multicast.enabled:false?
设置是否打开多播发现节点,默认是true,这里设置为false,关闭多播。
(15)discovery.zen.ping.unicast.hosts: [“172.16.213.37:9300”,“172.16.213.78:9300”]?
设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点。这里需要注意, master节点初始列表中对应的端口是9300。即为集群交互通信端口。
groupadd -g666 elasticsearch
useradd -u666 -g666 -M -s /sbin/nologin elasticsearch
修改elasticsearch相关文件的属主属组
chown -R elasticsearch. /softwares/elasticsearch-7.17.5/
chown -R elasticsearch. /logs/elasticsearch
chown -R elasticsearch. /data/elasticsearch
(1)节点配置文件的打开数限制
最大打开文件描述符(nofile)、最大用户进程数(nproc)
vim /etc/security/limits.d/elasticsearch.conf
#!/bin/bash
soft nofile 65535
hard nofile 131070
soft nproc 20480
hard nproc 20480
(2)节点修改内存映射上限
vim /etc/sysctl.d/elasticsearch.conf
vm.max_map_count=524288 fs.file-max=655360
第一个参数fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高,第二个 参数vm.max_map_count影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小,系 统默认是65530,建议修改成262144或者更高。
验证
sysctl -f /etc/sysctl.d/elasticsearch.conf
sysctl -q vm.max_map_count
vim /softwares/elasticsearch/config/jvm.options
-Xms512m -Xmx512m
验证JVM
jps -v | grep -i xms
这里要注意的是,需要设置启动用户为elasticsearch ,elasticsearch默认不能以root用户启动。
vim /usr/lib/systemd/system/elasticsearch.service
[Unit]
Description=Elasticsearch server
After=network.target
[Service]
Type=forking
User=elasticsearch
Group=elasticsearch
ExecStart=/softwares/elasticsearch/bin/elasticsearch -d
Restart=no
LimitNOFILE=131070
[Install]
WantedBy=multi-user.target
启动es
systemctl daemon-reload
systemctl start elasticsearch.service
systemctl enable elasticsearch.service
systemctl status elasticsearch.service
验证
(1)查看节点详细信息
curl ip:9200/_cat/nodes?v
(2)Windows终端浏览器安装es-head插件
输入地址链接即可看到集群状态信息
在安装kibana可视化工具前,使用es-head代替。