一、说明:
java:1.8以上
启动用户:非root用户
二、环境准备
1、修改系统内核参数(/etc/sysctl.conf)
cat <<EOF>> > /etc/sysctl.conf
net.ipv4.ip_forward = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.accept_source_route = 0
kernel.sysrq = 0
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1
net.bridge.bridge-nf-call-ip6tables = 0
net.bridge.bridge-nf-call-iptables = 0
net.bridge.bridge-nf-call-arptables = 0
kernel.msgmnb = 65536
kernel.msgmax = 65536
kernel.shmmax = 68719476736
kernel.shmall = 4294967296
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.ip_local_port_range = 10000 65000
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_max_tw_buckets = 5000
vm.overcommit_memory = 1
fs.file-max = 655350 #必须配置
vm.max_map_count = 655350 #必须配置
EOF
2、修改资源限制配置文件(/etc/security/limits.conf)
echo "* soft noproc 20480" >> /etc/security/limits.conf
echo "* hard noproc 20480" >> /etc/security/limits.conf
echo "root soft nofile 655360" >> /etc/security/limits.conf
echo "root hard nofile 655360" >> /etc/security/limits.conf
echo "* soft nofile 65536" >> /etc/security/limits.conf
echo "* hard nofile 65536" >> /etc/security/limits.conf
echo "* - memlock unlimited" >> /etc/security/limits.conf
3、安装jdk1.8
三、部署集群
1、下载elasticsearch安装包(版本为6.5.1)
cd /root
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.1.tar.gz
2、创建安装目录并解压
mkdir -p /u01/isi/application
cd /root
tar -xf elasticsearch-6.5.1.tar.gz -C /u01/isi/application
3、创建es运行的用户
groupadd isi
useradd -g isi isi
4、创建es的数据目录和日志目录,并给权限
cd /u01/isi/application
mkdir elasticsearch-6.5.1/{data,logs}
chown -R isi:isi elasticsearch-6.5.1
5、修改es配置
1)主配置文件
cd /u01/isi/application/elasticsearch-6.5.1/config
cat elasticsearch.yml
...
cluster.name: my-cluster
node.name: 172.17.1.24
node.master: true
node.data: true
network.host: 0.0.0.0
http.port: 9200
transport.tcp.port: 9300
discovery.zen.ping.unicast.hosts: ["172.17.1.23:9300","172.17.1.24:9300"]
discovery.zen.minimum_master_nodes: 2
http.cors.enabled: true
http.cors.allow-origin: "*"
...
配置说明:
- cluster.name: 它指代的是集群的名字,一个集群的名字必须唯一,节点根据集群名字加入到集群中;
- node.name: 节点名称,可以是自定义的方便分辨的名字,记住master也是一个节点;
- node.master: true/false 是否可以作为集群中的主节点;
- node.data: true/false 是否可以作为集群中的数据节点;
- node.ingest: false 非数据预处理节点;
- bootstrap.memory_lock: false 禁止锁定内存;由于当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把
ES_MIN_MEM
和ES_MAX_MEM
两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令; - bootstrap.system_call_filter: false #禁用系统调用过滤器;
- path.log:节点的日志保存路径;
- path.data:节点的数据保存路径;
- network.host: 设置network.bind_host 和 publish_host的默认值,这里设置成127.0.0.1和主机ip是有区别的,设置为0.0.0.0表示任何主机可以连接此机器。你可以使用curl -XGET “http://network.host/9200"看到结果;
- transport.tcp.port: 集群之间的端口;
- http.port: node节点的服务端口;
- discovery.zen.ping.unicast.hosts: 这里是一组IP,表示用于加入集群,一般是使用ip:port,该port为集群内通信的端口;
- http.cors.enabled: true 为开通head的配置;
- http.cors.allow-origin: “*” 为开通head的配置;
- xpack.ml.enabled: false 设置为false以禁用X-Pack机器学习功能;
- gateway.recover_after_nodes: 1。设置集群中N个节点启动时进行数据恢复,默认为1;
- discovery.zen.minimum_master_nodes: 1 。设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4);
- discovery.zen.ping.unicast.hosts: [“host1”, “host2:port”] 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点;
- discovery.zen.ping.multicast.enabled:false 设置是否打开多播发现节点,默认是true;
- discovery.zen.ping.timeout: 3s 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错;
2)jvm配置
cd /u01/isi/application/elasticsearch-6.5.1/config
cat jvm.options
...
-Xms16g
-Xmx16g
...
7、启服务
su isi
cd /u01/isi/application/elasticsearch-6.5.1/
./elasticsearch -d
8、验证
ps -ef |grep elasticsearch
netstat -tanlp|grep 9200
curl http://127.0.0.1:9200