部署服务-2.Linux中Elasticsearch-7.9.3安装

本文介绍了在Linux系统中安装Elasticsearch 7.9.3的步骤,包括检查系统内核和glibc版本、升级内核、创建elasticsearch用户并设置权限,以及启动服务的详细过程。

一、安装es的Linux需要升级内核吗

为了确保Elasticsearch正常运行,请参考官方文档中的系统要求。
通常,Elasticsearch要求Linux系统使用的内核版本满足以下条件:
1. 使用glibc库版本2.17或更高。
2. 使用systemd系统,建议使用systemd版本210或更高。

根据这些要求,请检查您的Linux系统并确定是否需要升级内核。如果当前内核版本满足要求,则无需升级。否则,请按照您的Linux发行版的文档升级内核。

二、Linux查看glibc版本,systemd版本

1. 查看glibc版本:

ldd --version

此命令将输出glibc的版本信息,例如:ldd (GNU libc) 2.27

其中,2.27为glibc的版本。

2. 查看systemd版本:

systemctl --version

此命令将输出systemd的版本信息,例如:systemd 237

其中,237为systemd的版本

三、升级Linux内核版本

CentOS系统上升级内核:

1. 首先,启用AppStream存储库以确保获取所需的软件包:

sudo yum install epel-release

2. 安装渠道的工具:

sudo yum install yum-utils

3. 查找可用的内核版本:

sudo yum search kernel

4. 安装您选择的内核版本:

sudo yum install kernel-<版本号>

5. 更新Grub配置:

sudo grub2-mkconfig -o /boot/grub2/grub.cfg

6. 设置默认启动内核:

sudo grub2-set-default <内核版本号>

7. 重启系统以应用更新:

sudo reboot

8. 确认新内核生效:

uname -r

CentOS 7 版本选择 Linux 内核 3.10 版本。此内核版本具有良好的稳定性和性能,适用于企业级生产环境。这是一个经过长时间支持和维护的版本

CentOS 8 版本选择 Linux 内核 4.18 版本。这是一个更新的内核版本,具有更多的驱动程序支持和新功能。这个版本的内核也在持续更新和维护,以确保操作系统的稳定性和兼容性。

在选择适当的CentOS版本时,需要权衡稳定性、性能和新功能的需求,并根据实际情况和硬件支持来决定

四、创建elasticsearch用户, Elasticsearch不支持root用户运行

1.Elasticsearch7.9.3的官方文档地址

Elasticsearch Guide [7.9] | Elastic

2.创建elasticsearch用户, Elasticsearch不支持root用户运行

useradd elsearch

3.解压安装包到/opt/es目录下

tar -zxvf elasticsearch-7.9.3.tar.gz -C /opt/es/

4.添加用户及用户组权限到安装目录

chown -R elsearch:elsearch /opt/es/

5.修改配置文件

vim config/jvm.options   #java虚拟机配置
-Xms512m   #最小内存使用
-Xmx512m   #最小内存使用

根据需要调整

vim  config/elasticsearch.yml 
bootstrap.memory_lock: true   #内存锁定,和上述的jvm.options 文件有关,开启这一项jvm.options 才有效
network.host:10.0.0.125 
discovery.seed_hosts: [ "10.0.0.125" ]
cluster.initial_master_nodes: [ "10.0.0.125" ]

修改配置文件
vim /etc/sysctl.conf
vm.max_map_count=655360     #单个进程中的最大线程数

vim /etc/security/limits.conf
elsearch soft nofile 65536
elsearch hard nofile 65536
elsearch hard nproc 4096
elsearch soft nproc 4096
elsearch hard memlock unlimited
elsearch soft memlock unlimited

reboot 重启服务

6.启动ES服务

su elsearch

cd /opt/es/elasticsearch-7.9.3/bin

./elasticsearch -d

验证服务

curl 10.0.0.125:9200

<think>我们正在处理用户关于Elasticsearch 7.9.3版本多机搭建集群的问题。根据用户提供的引用和之前的上下文,用户遇到了集群创建时UUID不一致的问题,并出现了“force is not a recognized option”的错误。此外,用户现在明确要求获取7.9.3版本多机搭建集群的方法。 之前的回答中已经包含了部分解决方案,但用户现在需要的是完整的多机集群搭建方法。因此,我们需要提供一个清晰的、分步骤的Elasticsearch 7.9.3多机集群搭建指南。 注意:用户提到使用Docker(引用[2]和[3])以及非容器环境(引用[4])的尝试,但问题中既有Docker方式也有普通安装方式。这里我们提供两种方法:普通安装和Docker安装。 步骤规划: 一、普通安装(三节点集群) 二、Docker安装(三节点集群) 在开始之前,确保所有机器满足以下条件: 1. 系统环境:Linux(CentOS/Ubuntu等) 2. 网络配置:所有节点间网络互通,开放端口9200(HTTP)和9300(TCP) 3. 时间同步:所有节点时间同步 4. 关闭交换分区:`sudo swapoff -a` 5. 调整文件描述符和线程数限制(参考引用[1]中的重要配置) 以下分两种方式详细说明: 一、普通安装(三节点集群) 1. 下载并安装Elasticsearch 7.9.3 在所有节点执行: ```bash wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.9.3-linux-x86_64.tar.gz tar -xzf elasticsearch-7.9.3-linux-x86_64.tar.gz mv elasticsearch-7.9.3 /usr/share/elasticsearch ``` 2. 创建数据目录和日志目录(所有节点) ```bash mkdir /var/lib/elasticsearch mkdir /var/log/elasticsearch ``` 3. 创建elasticsearch用户并授权(所有节点) ```bash useradd elasticsearch chown -R elasticsearch:elasticsearch /usr/share/elasticsearch chown -R elasticsearch:elasticsearch /var/lib/elasticsearch chown -R elasticsearch:elasticsearch /var/log/elasticsearch ``` 4. 修改系统配置(所有节点) 编辑`/etc/security/limits.conf`,添加: ``` elasticsearch soft nofile 65535 elasticsearch hard nofile 65535 elasticsearch soft nproc 4096 elasticsearch hard nproc 4096 ``` 编辑`/etc/sysctl.conf`,添加: ``` vm.max_map_count=262144 ``` 执行`sysctl -p`使生效。 5. 配置elasticsearch.yml(关键步骤,注意每个节点不同) 节点1(假设主机名为node1,IP为192.168.0.1): ```yaml cluster.name: production node.name: node1 path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch network.host: 0.0.0.0 http.port: 9200 discovery.seed_hosts: ["node1", "node2", "node3"] # 可以是IP或主机名 cluster.initial_master_nodes: ["node1", "node2", "node3"] # 初始主节点 bootstrap.memory_lock: true ``` 节点2(node2, IP=192.168.0.2): ```yaml cluster.name: production node.name: node2 ... # 其他同上,注意node.name改为node2 ``` 节点3(node3, IP=192.168.0.3): ```yaml cluster.name: production node.name: node3 ... # 同上 ``` 6. 配置jvm.options(所有节点) 根据服务器内存大小调整,一般设置堆内存为物理内存的一半,不超过31GB。 ``` -Xms16g -Xmx16g ``` 7. 启动服务(所有节点) ```bash sudo -u elasticsearch /usr/share/elasticsearch/bin/elasticsearch -d ``` 8. 验证集群状态 ```bash curl http://node1:9200/_cluster/health?pretty ``` 二、Docker安装(三节点集群) 1. 创建自定义网络(所有节点) ```bash docker network create elastic-network ``` 2. 为每个节点创建数据目录(所有节点) ```bash mkdir -p /data/elasticsearch/{node1,node2,node3}/{data,logs} chmod -R 777 /data/elasticsearch # 简单授权,生产环境应严格权限 ``` 3. 编写配置文件(每个节点一个配置文件) node1的配置文件(/data/elasticsearch/node1/es1.yml): ```yaml cluster.name: docker-cluster node.name: node1 network.host: 0.0.0.0 discovery.seed_hosts: ["node1", "node2", "node3"] cluster.initial_master_nodes: ["node1", "node2", "node3"] http.port: 9200 transport.port: 9300 bootstrap.memory_lock: true ``` node2(/data/elasticsearch/node2/es2.yml): ```yaml cluster.name: docker-cluster node.name: node2 ... # 同上 ``` node3(/data/elasticsearch/node3/es3.yml): ```yaml cluster.name: docker-cluster node.name: node3 ... # 同上 ``` 4. 启动容器(每个节点执行一个,注意修改对应节点) 在节点1启动node1容器: ```bash docker run -d --name es-node1 --net elastic-network \ -p 9200:9200 -p 9300:9300 \ -v /data/elasticsearch/node1/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /data/elasticsearch/node1/data:/usr/share/elasticsearch/data \ -v /data/elasticsearch/node1/logs:/usr/share/elasticsearch/logs \ -v /etc/localtime:/etc/localtime \ --ulimit memlock=-1:-1 \ --ulimit nofile=65535:65535 \ --ulimit nproc=4096:4096 \ -e "ES_JAVA_OPTS=-Xms16g -Xmx16g" \ elasticsearch:7.9.3 ``` 在节点2启动node2容器(注意修改挂载的配置、数据目录和名称): ```bash docker run -d --name es-node2 --net elastic-network \ -p 9200:9200 -p 9300:9300 \ -v /data/elasticsearch/node2/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /data/elasticsearch/node2/data:/usr/share/elasticsearch/data \ -v /data/elasticsearch/node2/logs:/usr/share/elasticsearch/logs \ ... # 其他参数同上 ``` 节点3类似。 5. 验证集群状态 ```bash curl http://节点1的IP:9200/_cluster/health?pretty ``` 注意:如果节点不在同一内网,需要确保防火墙开放端口,并且使用IP地址而非主机名(或者配置hosts)。 三、常见问题解决方案(针对引用[4]中的连接超时问题) 1. 确保所有节点间9200和9300端口互通(使用telnet或nc测试) 2. 如果跨公网,确保安全组和防火墙规则允许 3. 配置文件中的`discovery.seed_hosts`使用IP地址(如果DNS解析不可靠) 4. 检查节点的系统时间是否同步 四、插件安装(如IK分词器) 对于普通安装: ```bash /usr/share/elasticsearch/bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.9.3/elasticsearch-analysis-ik-7.9.3.zip ``` 对于Docker安装,可以在Dockerfile中构建,或者在容器启动后进入容器执行上述命令,然后重启容器。 最后,根据用户之前的问题,生成相关问题: §§相关问题§§ 1. 如何验证Elasticsearch集群的健康状态? 2. 在Docker中部署Elasticsearch集群有哪些网络配置注意事项? 3. Elasticsearch节点无法加入集群时如何进行故障排查? 4. 如何为Elasticsearch集群安装和配置IK分词器? 注意:在回答中,我们引用了用户提供的引用[1]-[4],在适当位置添加引用标识。 </think>### Elasticsearch 7.9.3 多机集群搭建指南 #### 一、基础环境准备(所有节点执行) 1. **系统配置优化** ```bash # 调整虚拟内存限制 echo "vm.max_map_count=262144" >> /etc/sysctl.conf sysctl -p # 调整文件描述符限制 echo "elasticsearch - nofile 65535" >> /etc/security/limits.conf ``` 2. **安装依赖环境** ```bash # Ubuntu/Debian apt update && apt install openjdk-11-jdk -y # CentOS/RHEL yum install java-11-openjdk -y ``` #### 二、集群节点配置(关键步骤) ```yaml:elasticsearch.yml # 公共配置(所有节点相同) cluster.name: production-cluster # 集群名称必须一致 network.host: 0.0.0.0 http.port: 9200 transport.port: 9300 discovery.seed_hosts: ["192.168.1.101", "192.168.1.102", "192.168.1.103"] # 所有节点IP cluster.initial_master_nodes: ["node1", "node2", "node3"] # 初始主节点名称 # 节点专属配置(每个节点不同) node.name: node1 # 节点唯一标识 node.roles: [master, data] # 节点角色 path.data: /var/lib/elasticsearch path.logs: /var/log/elasticsearch ``` #### 三、节点启动流程 1. **启动初始主节点(node1)** ```bash # 首次启动需指定初始主节点 bin/elasticsearch -d -Ecluster.initial_master_nodes=node1,node2,node3 ``` 2. **加入其他节点** ```bash # node2和node3执行(无需initial_master_nodes参数) bin/elasticsearch -d ``` #### 四、跨服务器网络配置要点 1. **防火墙规则(所有节点)** ```bash firewall-cmd --permanent --add-port=9200/tcp # HTTP API firewall-cmd --permanent --add-port=9300/tcp # 节点通信 firewall-cmd --reload ``` 2. **主机名解析(/etc/hosts)** ``` 192.168.1.101 node1 192.168.1.102 node2 192.168.1.103 node3 ``` #### 五、集群验证命令 ```bash # 检查节点状态 curl -XGET &#39;http://localhost:9200/_cat/nodes?v&#39; # 验证集群健康 curl -XGET &#39;http://localhost:9200/_cluster/health?pretty&#39; ``` 预期输出: ```json { "cluster_name" : "production-cluster", "status" : "green", "number_of_nodes" : 3 } ``` #### 六、Docker集群部署方案 ```bash # Node1容器启动 docker run -d --name es-node1 \ -p 9200:9200 -p 9300:9300 \ -v node1-data:/usr/share/elasticsearch/data \ -v ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ elasticsearch:7.9.3 # Node2容器启动(修改端口映射) docker run -d --name es-node2 \ -p 9201:9200 -p 9301:9300 \ -v node2-data:/usr/share/elasticsearch/data \ -v ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ elasticsearch:7.9.3 ``` > 注意:每个节点需使用独立数据卷,配置文件中`node.name`需不同[^2][^3] #### 七、常见故障处理 1. **节点无法加入集群** - 检查防火墙规则和端口开放状态 - 验证所有节点`cluster.name`是否完全相同 - 删除数据目录重建集群:`rm -rf /var/lib/elasticsearch/nodes/*` 2. **跨云厂商服务器连接问题** ```yaml # 添加传输协议配置 transport.profiles.default.port: 9300-9400 transport.publish_port: 9300 ``` > **关键提示**: > - 集群首次启动后,**移除**`cluster.initial_master_nodes`配置项[^1] > - 生产环境建议配置`bootstrap.memory_lock: true`防止内存交换 > - 跨公网部署需启用安全配置(TLS加密和用户认证)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值