elasticsearch实战之集群部署(一)

一、说明:

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

详见java1.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: "*"
...

elasticsearch实战之集群部署(一)_第1张图片
配置说明:

  1. cluster.name: 它指代的是集群的名字,一个集群的名字必须唯一,节点根据集群名字加入到集群中;
  2. node.name: 节点名称,可以是自定义的方便分辨的名字,记住master也是一个节点;
  3. node.master: true/false 是否可以作为集群中的主节点;
  4. node.data: true/false 是否可以作为集群中的数据节点;
  5. node.ingest: false 非数据预处理节点;
  6. bootstrap.memory_lock: false 禁止锁定内存;由于当jvm开始swapping时es的效率会降低,所以要保证它不swap,可以把ES_MIN_MEMES_MAX_MEM两个环境变量设置成同一个值,并且保证机器有足够的内存分配给es。同时也要允许elasticsearch的进程可以锁住内存,linux下可以通过ulimit -l unlimited命令;
  7. bootstrap.system_call_filter: false #禁用系统调用过滤器;
  8. path.log:节点的日志保存路径;
  9. path.data:节点的数据保存路径;
  10. network.host: 设置network.bind_host 和 publish_host的默认值,这里设置成127.0.0.1和主机ip是有区别的,设置为0.0.0.0表示任何主机可以连接此机器。你可以使用curl -XGET “http://network.host/9200"看到结果;
  11. transport.tcp.port: 集群之间的端口;
  12. http.port: node节点的服务端口;
  13. discovery.zen.ping.unicast.hosts: 这里是一组IP,表示用于加入集群,一般是使用ip:port,该port为集群内通信的端口;
  14. http.cors.enabled: true 为开通head的配置;
  15. http.cors.allow-origin: “*” 为开通head的配置;
  16. xpack.ml.enabled: false 设置为false以禁用X-Pack机器学习功能;
  17. gateway.recover_after_nodes: 1。设置集群中N个节点启动时进行数据恢复,默认为1;
  18. discovery.zen.minimum_master_nodes: 1 。设置这个参数来保证集群中的节点可以知道其它N个有master资格的节点。默认为1,对于大的集群来说,可以设置大一点的值(2-4);
  19. discovery.zen.ping.unicast.hosts: [“host1”, “host2:port”] 设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点;
  20. discovery.zen.ping.multicast.enabled:false 设置是否打开多播发现节点,默认是true;
  21. discovery.zen.ping.timeout: 3s 设置集群中自动发现其它节点时ping连接超时时间,默认为3秒,对于比较差的网络环境可以高点的值来防止自动发现时出错;

2)jvm配置

cd /u01/isi/application/elasticsearch-6.5.1/config
cat  jvm.options 
 ...
 -Xms16g
-Xmx16g
...

elasticsearch实战之集群部署(一)_第2张图片

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

elasticsearch实战之集群部署(一)_第3张图片
elasticsearch实战之集群部署(一)_第4张图片

你可能感兴趣的:(elasticsearch)