elastic之部署elasticsearh

发布时间:2024年01月10日

安装包准备

(1)elasticsearch-7.17.5-linux-x86_64.tar.gz

官网链接:

下载 Elastic 产品 | Elastic

(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。即为集群交互通信端口。

创建用户elasticsearch

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

系统及JVM调优

系统调优

(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

JVM调优

vim /softwares/elasticsearch/config/jvm.options
-Xms512m -Xmx512m

验证JVM

jps -v | grep -i xms

systemctl管理elasticsearch

这里要注意的是,需要设置启动用户为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代替。

文章来源:https://blog.csdn.net/qq_39720314/article/details/135415214
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。