10 Easticsearch集群搭建
10.1 企业集群部署
10.2 角色介绍
服务器IP | 服务器配置 | 安装服务 | 担任角色 |
---|---|---|---|
192.168.5.3 | 1C2G | Kibana、Elasticsearch | 协调节点 |
192.168.5.4 | 1C2G | Kibana、Elasticsearch | 主节点 |
192.168.5.5 | 1C2G | Elasticsearch | 数据节点 |
192.168.5.6 | 1C2G | Nginx | 调度Kibana |
主结点:master节点主要用于集群的管理及索引 比如新增结点、分片分配、索引的新增和删除等。 数据结点:data 节点上保存了数据分片,它负责索引和搜索操作。 客户端结点:client 节点仅作为请求客户端存在,client的作用也作为负载均衡器,client 节点不存数据,只是将请求均衡转发到其它结点。
通过下边两项参数来配置结点的功能:
node.master: #是否允许为主结点
node.data: #允许存储数据作为数据结点
node.ingest: #是否允许成为协调节点
四种组合方式:
master=true,data=true:即是主结点又是数据结点
master=false,data=true:仅是数据结点
master=true,data=false:仅是主结点,不存储数据
master=false,data=false:即不是主结点也不是数据结点,此时可设置ingest为true表示它是一个客户端。
10.3 安装Elasticsearch集群
10.3.1 关闭防火墙及selinux(所有集群节点)
systemctl stop firewalld && systemctl disable firewalld
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
10.3.2 安装 java 环境(所有集群节点)
yum -y install java vim
java -version
10.3.3 安装Elasticsearch(所有集群节点)
elasticsearch的安装非常简单,首先从官网https://www.elastic.co/下载页面找到适合的版本,可选择zip、tar、rpm等格式的安装包下载
mkdir /usr/local/elk
tar zxvf elasticsearch-7.15.0-linux-x86_64.tar.gz -C /usr/local/elk/
由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,需要创建一个单独的用户用来运行elasticSearch,这里创建的普通用户是es,操作如下:
groupadd es
useradd es -g es
然后将elasticsearch的安装目录都授权给es用户,操作如下:
chown -R es:es /usr/local/elk/elasticsearch-7.15.0
10.3.4 操作系统调优(所有集群节点)
操作系统以及JVM调优主要是针对安装elasticsearch的机器。对于操作系统,需要调整几个内核参数,fs.file-max主要是配置系统最大打开文件描述符数,建议修改为655360或者更高,vm.max_map_count影响Java线程数量,用于限制一个进程可以拥有的VMA(虚拟内存区域)的大小,系统默认是65530,建议修改成262144或者更高。将下面内容添加到/etc/sysctl.conf文件中:
cat <<EOF>>/etc/sysctl.conf
fs.file-max=655360
vm.max_map_count = 262144
EOF
另外,还需要调整进程最大打开文件描述符(nofile)、最大用户进程数(nproc)和最大锁定内存地址空间(memlock),添加如下内容到/etc/security/limits.conf文件中:
cat <<EOF>>/etc/security/limits.conf
* soft nproc 204800
* hard nproc 204800
* soft nofile 655360
* hard nofile 655360
* soft memlock unlimited
* hard memlock unlimited
EOF
最后,还需要修改/etc/security/limits.d/20-nproc.conf文件(centos7.x系统),将:
* soft nproc 4096
# 修改为:
* soft nproc 20480
或者直接删除/etc/security/limits.d/20-nproc.conf文件也行。
sed -i 's/4096/20480/g' /etc/security/limits.d/20-nproc.conf
使配置文件生效
sysctl -p
重新连接对话框
10.3.5 修改配置文件(所有集群节点)
cat <<EOF>>/usr/local/elk/elasticsearch-7.15.0/config/elasticsearch.yml
# 集群名称
cluster.name: cluster-es
#节点名称, 每个节点的名称不能重复
node.name: node-1
# ip 地址, 每个节点的地址不能重复
network.host: 0.0.0.0
# 是不是有资格主节点
node.master: true
node.data: true
node.ingest: true
http.port: 9200
# head 插件需要这打开这两个配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
# es7.x 之后新增的配置,初始化一个新的集群时需要此配置来选举 master
cluster.initial_master_nodes: ["node-1"]
# es7.x 之后新增的配置,节点发现
discovery.seed_hosts: ["192.168.5.3:9300","192.168.5.4:9300","192.168.5.5:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
# 数据存储地址以及日志保存位置
path.data: /data1/elasticsearch,/data2/elasticsearch
path.logs: /usr/local/elk/elasticsearch-7.15.0/logs
# 集群内同时启动的数据任务个数,默认是 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
EOF
创建存储目录并赋予启动用户权限
mkdir -p /data{1,2}/elasticsearch/
chown es:es -R /data{1,2}/
10.3.6 启动Elasticsearch(所有集群节点)
切换到es用户下启动elasticsearch集群即可。分别登录到server1、server2和server3三台主机上,执行如下操作:
su - es
sh /usr/local/elk/elasticsearch-7.15.0/bin/elasticsearch -d
其中,“-d”参数的意思是将elasticsearch放到后台运行。
10.3.7 验证elasticsearch集群的可用性
http://192.168.5.3:9200/_cat/nodes
10.4 安装Kibana及负载调度
10.4.1 安装kibana(部分集群节点)
tar zxvf kibana-7.15.0-linux-x86_64.tar.gz -C /usr/local/elk/
10.4.2 修改配置文件(部分集群节点)
cat <<EOF>>/usr/local/elk/kibana-7.15.0-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
EOF
10.4.3 启动kibana(部分集群节点)
nohup /usr/local/elk/kibana-7.15.0-linux-x86_64/bin/kibana --allow-root
10.4.4 安装Nginx(部分集群节点)
yum -y install gcc* gcc-* pcre openssl zlib pcre-devel openssl-devel mkae
wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar zxvf nginx-1.20.1.tar.gz -C /opt
cd /opt/nginx-1.20.1
./configure --prefix=/usr/local/nginx && make && make install
10.4.5 添加负载调度(部分集群节点)
vim /usr/local/nginx/conf/nginx.conf
http {
# ... 省略其它配置
upstream kibana {
server 192.168.5.3:5601;
server 192.168.5.4:5601;
}
server {
listen 80;
location / {
proxy_pass http://kibana;
}
}
# ... 省略其它配置
}
sh /usr/local/nginx/sbin/nginx
10.4.4 验证负载均衡