前言
本博客内容仅为记录博主思路,仅供参考,一切以自己实践结果为准。
一、资源分享
1、包含源码包、配置文件
链接:https://pan.baidu.com/s/1NognuX7vhWaf6r5yLPMP0A?pwd=hcx7
提取码:hcx7
二、部署过程
#准备工作:关闭防火墙、selinux、创建服务目录、上传源码包到服务器
systemctl disable --now firewalld
setenforce 0 && sed -i "s/SELINUX=enforcing/SELINUX=disable/" /etc/selinux/config
mkdir -p /data/elastic/{logs,data}
#安装jdk环境,注环境变量这种东西配置到profile的子目录,防止出问题,且jdk1.5后不需要配置CLASSPATH
tar -zxvf jdk-8u91-linux-x64.tar.gz -C /usr/local/
cat >/etc/profile.d/jdk.sh<<EOF
JAVA_HOME=/usr/local/jdk1.8.0_91
PATH=\$PATH:\$JAVA_HOME/bin
EOF
source /etc/profile.d/jdk.sh
#验证Java环境,若是显示为对应Java版本则安装成功
java -version
#添加es普通用户并设置密码作为es服务器启动者(-G补充组,-g所属组
useradd es && echo abc123 | passwd --stdin es
#修改Linux系统内核参数:最大打开文件数、文件描述符数、一个进程可用线程数
vim /etc/sysctl.conf
fs.file-max = 655350 #最大打开文件描述符数量,建议修改为655350
vm.max_map_count = 655350 #一个进程可用最大VM数量(虚拟内存大小)
sysctl -p #配置立即生效
vim /etc/security/limits.conf #注:root的权限只会被root覆盖,不会被*覆盖
* soft nproc 65535 #* 代表任何用户
* hard nproc 65535 #soft 软限制(警告:超出数量警告)
* soft nofile 65535 #hard 硬限制(阈值:最多使用多少)
* hard nofile 65535 #nproc 最大打开的进程数
* soft memlock unlimited #nofile 最大打开的文件数
* hard memlock unlimited #memlock 最大锁定物理内存
vim /etc/security/limits.d/20-nproc.conf
* soft nproc 65535
root soft nproc unlimited
#配置完成后和切换es用户查看
su es
ulimit -a
exit
#配置es配置文件
tar -zxvf elasticsearch-6.7.1.tar.gz -C /usr/local/
vim /usr/local/elasticsearch-6.7.1/config/jvm.options
#配置JVM参数,对es服务进行调优,建议设置服务器物理内存的半数(若开启物理内存锁定,有可能锁定失败)
-Xms1g
-Xmx1g
vim /usr/local/elasticsearch-6.7.1/config/elasticsearch.yml
cluster.name: pms30-cluster #设置elastic集群名称
node.name: master-1 #当前节点在es集群中的名称
node.master: true #true为备选主节点、拥有选取leader投票权
node.data: true #true数据存储节点
path.data: /data/elastic/data/ #数据存储目录
path.logs: /data/elastic/logs/ #日志存储目录
bootstrap.memory_lock: true #true锁定物理内存(若报错锁定内存失败,false关闭即可)
network.host: 192.168.13.10 #当前节点的IP通讯地址,也可以设置为0.0.0.0
http.port: 19200 #集群对外暴露端口号
transport.tcp.port: 19300 #集群内部通讯端口号
#集群IP地址及内部通讯端口号
discovery.zen.ping.unicast.hosts: ["192.168.13.10:19300","192.168.13.20:19300","192.168.13.30:19300"]
discovery.zen.minimum_master_nodes: 2 #leader选票机制,一般设置为集群投票的半数以上,防止脑裂
http.cors.enabled: true #开启跨域访问支持,默认为false
http.cors.allow-origin: "*" #允许跨域访问的IP地址,*代表任意地址
#将所有相关文件的属主/组改会es,否则权限不够无法运行
chown -R es:es /usr/local/elasticsearch-6.7.1/ /data/elastic/
#配置完成,切换es用户和后台运行,如果用root运行会失败,且会把文件属主/组改会root,此时需再修改一次属主/组
su es
/usr/local/elasticsearch-6.7.1/bin/elasticsearch -d
#可通过本文下方命令验证es集群是否部署完成
三、报错锦集
#报错锦集
- 1、not enough master nodes discovered during pinging
节点启动较少,没有选举出来leader导致,依次启动节点即可解决 - 2、连接不上XXX节点
检查防火墙是否没有关闭,大概率是这个问题,生产环境更有可能(不止是firewalld这个墙) - 3、warning: Falling back to java on path. This behavior is deprecated. Specify JAVA_HOME
基本上Java1.5版本之后就不会再配置CLASSPATH环境变量了,这个错误不影响服务运行 - 4、could not find java; set JAVA_HOME
Java环境没有安装好,服务没有找到jdk的命令,安装jdk即可 - 5、INFO: os::commit_memory(0x00000005d4cc0000, 8241020928, 0) failed;error=‘Cannot allocate memory’ (errno=12)
物理内存锁定失败,首先free -h查看自己有多少内存,是否是之前部署失败的es还在运行(kill -9 PID)
然后尝试还是不行,尝试缩小要锁定的物理内存,或者关闭锁定物理内存选项即可 - 6、max file descriptors [4096] for elasticsearch process is too low
最大打开文件数、文件描述符数、一个进程可用线程数开小了,去配置大一些即可
四、es的部分相关命令
- 地址可以是负载均衡地址(必须所有节点都在线,否则可能失败),也可以是节点IP地址
#查看es集群状态
curl http://192.168.13.10:19200/_cat/health?v
#好看es节点信息
curl http://192.168.13.10:19200/_cat/nodes?v
#查看es分片信息
curl http://192.168.13.10:19200/_cat/shards?v
#查看es所有命令
curl http://192.168.13.10:19200/_cat