https://www.elastic.co/cn/downloads/past-releases?product=elasticsearch
以下是基于elasticsearch-6.4.0.tar.gz和elasticsearch-6.4.0.rpm的离线安装详细步骤:
一、环境准备
1. 系统更新和依赖安装
# 更新系统sudoyum update -y# 安装必要依赖sudoyuminstall-ywgetvimnet-tools2. 安装Java(Elasticsearch 6.4.0需要JDK 8)
# 方法一:在线安装sudoyuminstall-y java-1.8.0-openjdk-devel# 方法二:离线安装(如果有JDK 8的rpm包)# sudo rpm -ivh jdk-8uXXX-linux-x64.rpm# 验证Java版本java -version3. 创建专用用户
# 创建elasticsearch用户和组sudogroupaddelasticsearchsudouseradd-g elasticsearch elasticsearch二、RPM包离线安装方式
1. 准备RPM包
将elasticsearch-6.4.0.rpm上传到服务器,例如:/tmp/elasticsearch-6.4.0.rpm
2. 安装RPM包
# 安装RPM包sudorpm-ivh /tmp/elasticsearch-6.4.0.rpm# 或者强制安装(如果遇到依赖问题)sudorpm-ivh --nodeps /tmp/elasticsearch-6.4.0.rpm3. 查看安装位置
# RPM安装后的目录结构/usr/share/elasticsearch# 程序目录/etc/elasticsearch# 配置文件目录/var/lib/elasticsearch# 数据目录(默认)/var/log/elasticsearch# 日志目录(默认)三、TAR包离线安装方式
1. 上传和解压
# 上传tar.gz包到服务器# 例如:/opt/software/elasticsearch-6.4.0.tar.gz# 创建安装目录sudomkdir-p /usr/local/elasticsearch# 解压到安装目录sudotar-zxvf /opt/software/elasticsearch-6.4.0.tar.gz -C /usr/local/elasticsearch/# 创建软链接sudoln-s /usr/local/elasticsearch/elasticsearch-6.4.0 /usr/local/elasticsearch/current# 更改所有权sudochown-R elasticsearch:elasticsearch /usr/local/elasticsearch/2. 创建必要目录
# 创建数据、日志和配置文件目录sudomkdir-p /var/lib/elasticsearchsudomkdir-p /var/log/elasticsearchsudomkdir-p /etc/elasticsearch# 更改所有权sudochown-R elasticsearch:elasticsearch /var/lib/elasticsearchsudochown-R elasticsearch:elasticsearch /var/log/elasticsearchsudochown-R elasticsearch:elasticsearch /etc/elasticsearch# 复制配置文件sudocp-r /usr/local/elasticsearch/current/config/* /etc/elasticsearch/sudochown-R elasticsearch:elasticsearch /etc/elasticsearch四、配置Elasticsearch
1. 主配置文件
# 编辑配置文件sudovi/etc/elasticsearch/elasticsearch.yml2. 基本配置
# 集群名称cluster.name:my-cluster# 节点名称node.name:node-1# 数据存储路径(根据安装方式调整)path.data:/var/lib/elasticsearch# 日志存储路径path.logs:/var/log/elasticsearch# 配置文件路径path.conf:/etc/elasticsearch# 绑定地址network.host:0.0.0.0# HTTP端口http.port:9200# 初始主节点cluster.initial_master_nodes:["node-1"]# 安全配置(6.x默认关闭安全)# bootstrap.memory_lock: true# discovery.type: single-node # 单节点模式3. JVM配置
# 编辑JVM配置文件sudovi/etc/elasticsearch/jvm.options根据服务器内存调整(建议不超过物理内存的50%):
# 最小堆大小 -Xms2g # 最大堆大小 -Xmx2g # 其他参数(可选) -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly五、系统配置优化
1. 修改系统限制
# 编辑limits.confsudotee-a /etc/security/limits.conf<<EOF * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096 elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited EOF# 针对elasticsearch用户的特定配置sudotee-a /etc/security/limits.d/20-elasticsearch.conf<<EOF elasticsearch soft nofile 65536 elasticsearch hard nofile 65536 elasticsearch soft nproc 4096 elasticsearch hard nproc 4096 elasticsearch soft memlock unlimited elasticsearch hard memlock unlimited EOF2. 修改sysctl配置
# 编辑sysctl.confsudotee-a /etc/sysctl.conf<<EOF vm.max_map_count=262144 fs.file-max=65536 net.core.somaxconn=1024 net.ipv4.tcp_max_syn_backlog=1024 EOF# 应用配置sudosysctl -p六、创建服务启动脚本
对于TAR包安装方式:
1. 创建systemd服务文件
sudotee/usr/lib/systemd/system/elasticsearch.service<<'EOF' [Unit] Description=Elasticsearch Documentation=http://www.elastic.co Wants=network-online.target After=network-online.target [Service] User=elasticsearch Group=elasticsearch Environment=ES_HOME=/usr/local/elasticsearch/current Environment=ES_PATH_CONF=/etc/elasticsearch Environment=PID_DIR=/var/run/elasticsearch Environment=ES_SD_NOTIFY=true EnvironmentFile=-/etc/sysconfig/elasticsearch WorkingDirectory=/usr/local/elasticsearch/current ExecStart=/usr/local/elasticsearch/current/bin/elasticsearch \ -p ${PID_DIR}/elasticsearch.pid \ --quiet \ -Edefault.path.logs=${LOG_DIR} \ -Edefault.path.data=${DATA_DIR} \ -Edefault.path.conf=${ES_PATH_CONF} # StandardOutput is configured to redirect to journalctl since # some error messages may be logged in standard output before # elasticsearch logging system is initialized. Elasticsearch # stores its logs in /var/log/elasticsearch and does not use # journalctl by default. If you also want to enable journalctl # logging, you can simply remove the "quiet" option from ExecStart. StandardOutput=journal StandardError=inherit # Specifies the maximum file descriptor number that can be opened by this process LimitNOFILE=65536 # Specifies the maximum number of processes LimitNPROC=4096 # Specifies the maximum size of virtual memory LimitAS=infinity # Specifies the maximum file size LimitFSIZE=infinity # Disable timeout logic and wait until process is stopped TimeoutStopSec=0 # SIGTERM signal is used to stop the Java process KillSignal=SIGTERM # Send the signal only to the JVM rather than its control group KillMode=process # Java process is never killed SendSIGKILL=no # When a JVM receives a SIGTERM signal it exits with code 143 SuccessExitStatus=143 [Install] WantedBy=multi-user.target EOF2. 创建环境变量文件
sudotee/etc/sysconfig/elasticsearch<<EOF ES_HOME=/usr/local/elasticsearch/current CONF_DIR=/etc/elasticsearch DATA_DIR=/var/lib/elasticsearch LOG_DIR=/var/log/elasticsearch PID_DIR=/var/run/elasticsearch ES_USER=elasticsearch ES_GROUP=elasticsearch ES_STARTUP_SLEEP_TIME=5 EOF# 创建PID目录sudomkdir-p /var/run/elasticsearchsudochownelasticsearch:elasticsearch /var/run/elasticsearch七、启动和测试
1. 重新加载systemd配置
sudosystemctl daemon-reload2. 设置开机自启
sudosystemctlenableelasticsearch3. 启动服务
sudosystemctl start elasticsearch4. 查看状态
sudosystemctl status elasticsearch5. 查看日志
# 查看实时日志sudojournalctl -f -u elasticsearch# 或者查看文件日志sudotail-f /var/log/elasticsearch/my-cluster.log6. 验证安装
# 等待10-30秒后测试curl-X GET"http://localhost:9200/"# 查看集群健康状态curl-X GET"http://localhost:9200/_cat/health?v"# 查看节点信息curl-X GET"http://localhost:9200/_cat/nodes?v"八、防火墙配置(如果需要)
# 开放9200和9300端口sudofirewall-cmd --permanent --add-port=9200/tcpsudofirewall-cmd --permanent --add-port=9300/tcpsudofirewall-cmd --reload# 或者关闭防火墙(测试环境)sudosystemctl stop firewalldsudosystemctl disable firewalld九、常见问题解决
1. 无法启动问题排查
# 检查配置文件语法/usr/local/elasticsearch/current/bin/elasticsearch -t# 前台运行调试sudo-u elasticsearch /usr/local/elasticsearch/current/bin/elasticsearch# 检查错误日志sudotail-n100/var/log/elasticsearch/*.log2. 内存锁定失败
# 检查是否启用了内存锁定grep"memory_lock"/etc/elasticsearch/elasticsearch.yml# 临时解决方案(测试环境)# 在elasticsearch.yml中添加:# bootstrap.memory_lock: false3. 文件描述符不足
# 检查当前限制ulimit-Hnulimit-Sn十、安装插件(离线方式)
如果需要安装插件,需要先下载插件包:
# 例如安装IK分词器# 1. 下载对应版本的IK插件# 2. 解压到plugins目录sudomkdir-p /usr/local/elasticsearch/current/plugins/iksudounzipelasticsearch-analysis-ik-6.4.0.zip -d /usr/local/elasticsearch/current/plugins/ik/sudochown-R elasticsearch:elasticsearch /usr/local/elasticsearch/current/plugins/ik注意事项
- 版本兼容性:确保Java版本与Elasticsearch 6.4.0兼容(JDK 8)
- 内存分配:根据服务器内存合理分配JVM堆大小
- 目录权限:确保elasticsearch用户对数据、日志目录有读写权限
- 网络配置:生产环境建议绑定到内网IP
- 数据备份:定期备份数据目录