当前位置: 首页 > news >正文

在 CentOS 8 上安装和部署 OpenSearch 2.17 的实战指南20240924

在 CentOS 8 上安装和部署 OpenSearch 2.17 的实战指南

引言

随着数据的快速增长,企业对高效搜索和分析工具的需求也在不断增加。OpenSearch 是由社区主导的搜索和分析引擎,它为大规模数据索引、日志分析、全文检索等场景提供了强大的支持。在这篇博客中,我将分享如何在 CentOS 8 上安装和配置 OpenSearch 2.17,确保您能够快速启动并运行该服务。

本教程涵盖从环境准备、安装 Java、下载与解压 OpenSearch、配置系统参数到将 OpenSearch 配置为系统服务的详细步骤。无论您是开发者还是运维人员,这篇文章将为您提供实用的安装指南和最佳实践。

一、准备工作

在安装 OpenSearch 之前,我们需要确保系统符合以下要求:

  • 操作系统:CentOS 8
  • 内存:至少 4GB(根据具体使用场景,建议更多)
  • Java:需要 Java 11 或更高版本

二、安装 Java

OpenSearch 依赖 Java,因此我们首先安装 OpenJDK 11。

sudo dnf install java-11-openjdk-devel

验证 Java 版本是否安装正确:

java -version

输出应类似于:

openjdk version "11.0.x" ...

三、下载 OpenSearch 2.17

从 OpenSearch 官方网站获取最新的 2.17 版本,或使用以下命令直接下载:

wget https://artifacts.opensearch.org/releases/bundle/opensearch/2.17.0/opensearch-2.17.0-linux-x64.tar.gz

四、解压文件

下载完成后,解压 OpenSearch 文件:

tar -zxvf opensearch-2.17.0-linux-x64.tar.gz

五、配置 OpenSearch

进入 OpenSearch 安装目录,并对配置文件进行修改:

cd opensearch-2.17.0

编辑 config/opensearch.yml 文件,根据您的需求进行以下基本配置:

cluster.name: my-opensearch-cluster
node.name: node-1
network.host: 0.0.0.0

注意:在生产环境中,建议启用安全功能,如 TLS 和用户认证,以保证数据安全。

六、调整 JVM 内存

为确保 OpenSearch 能够高效运行,我们可以调整 JVM 的内存分配。编辑 config/jvm.options 文件,分配适当的内存,如 2GB:

-Xms2g
-Xmx2g

七、创建 OpenSearch 用户(可选)

出于安全考虑,我们建议为 OpenSearch 创建一个独立的用户,并确保该用户拥有相应的权限。

sudo useradd opensearch
sudo chown -R opensearch:opensearch /path/to/opensearch-2.17.0/

八、系统配置调整

8.1 文件描述符限制

编辑 /etc/security/limits.conf,为 OpenSearch 用户添加如下限制:

opensearch soft nofile 65535
opensearch hard nofile 65535
opensearch soft nproc 4096
opensearch hard nproc 4096

8.2 虚拟内存设置

为了提升系统性能,建议修改虚拟内存的设置。编辑 /etc/sysctl.conf,添加以下配置:

vm.max_map_count=262144

应用更改:

sudo sysctl -w vm.max_map_count=262144

九、配置为系统服务

为了更方便地管理 OpenSearch,我们可以将其配置为系统服务。

创建 Systemd 服务文件 /etc/systemd/system/opensearch.service

[Unit]
Description=OpenSearch Service
After=network.target[Service]
Type=simple
User=opensearch
Group=opensearch
ExecStart=/path/to/opensearch-2.17.0/bin/opensearch
Restart=on-failure
LimitNOFILE=65535
LimitNPROC=4096
TimeoutStopSec=0
KillSignal=SIGTERM
SendSIGKILL=no
SuccessExitStatus=143[Install]
WantedBy=multi-user.target

替换 /path/to/opensearch-2.17.0/ 为实际路径。

接下来加载服务配置并启动 OpenSearch:

sudo systemctl daemon-reload
sudo systemctl start opensearch
sudo systemctl enable opensearch

十、验证 OpenSearch 安装

检查 OpenSearch 是否正常启动:

sudo systemctl status opensearch

查看实时日志以监控启动过程:

sudo journalctl -u opensearch -f

使用 curl 命令验证 OpenSearch 服务是否成功运行:

curl -XGET 'http://localhost:9200'

输出应该类似于:

{"name" : "node-1","cluster_name" : "my-opensearch-cluster","cluster_uuid" : "....","version" : {"number" : "2.17.0",...},"tagline" : "The OpenSearch Project: https://opensearch.org/"
}

十一、配置防火墙(可选)

如果需要远程访问 OpenSearch,您需要开放 9200 端口:

sudo firewall-cmd --add-port=9200/tcp --permanent
sudo firewall-cmd --reload

警告:直接暴露 9200 端口存在安全风险,建议配置 TLS 和身份认证机制。

十二、后续步骤

12.1 安全配置

在生产环境中,建议启用 TLS 来加密传输,并配置用户认证来保护集群。

12.2 插件安装

根据您的业务需求,OpenSearch 提供了多种插件扩展功能,您可以根据需求安装不同插件。

12.3 监控与备份

为了保障 OpenSearch 的稳定性,建议使用监控工具如 Prometheus 或 OpenSearch Dashboard,同时定期备份数据以避免数据丢失。

总结

在本文中,我们详细介绍了如何在 CentOS 8 上安装并配置 OpenSearch 2.17,涵盖了从环境准备、Java 安装、下载与解压 OpenSearch 到配置和验证服务的完整流程。通过这一实战指南,您不仅能够成功部署 OpenSearch,还能够通过一些最佳实践提升系统的安全性和性能。

无论是单节点还是多节点集群,这些步骤都可以帮助您快速搭建适合生产环境的 OpenSearch 系统。希望这篇文章对您的工作有所帮助!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 鼎曼白茶贡眉:贮留芳香记忆,书写老茶传奇
  • 基于量子通讯进行安全认证
  • IPsec-Vpn
  • Flink 与 Kubernetes (K8s)、YARN 和 Mesos集成对比
  • 【vue3】vue3.3新特性真香
  • 为什么现在的LLM都是Decoder only的架构?
  • LeetCode 399. 除法求值
  • ssh 免密登陆服务器故障
  • qs(Query String)查询字符串框架
  • 数据结构_1.1、数据结构的基本概念
  • java mybaits oracle插入返回主键
  • 『功能项目』窗口可拖拽脚本【59】
  • [vulnhub] w1r3s.v1.0
  • 破解 oklink 网站加密数据(升级版)
  • docker仓库
  • 【技术性】Search知识
  • create-react-app做的留言板
  • ES学习笔记(12)--Symbol
  • extract-text-webpack-plugin用法
  • github指令
  • IDEA 插件开发入门教程
  • javascript数组去重/查找/插入/删除
  • KMP算法及优化
  • Node.js 新计划:使用 V8 snapshot 将启动速度提升 8 倍
  • 分享一份非常强势的Android面试题
  • 近期前端发展计划
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 什么是Javascript函数节流?
  • 自定义函数
  • UI设计初学者应该如何入门?
  • 带你开发类似Pokemon Go的AR游戏
  • 移动端高清、多屏适配方案
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • ()、[]、{}、(())、[[]]命令替换
  • (1)Android开发优化---------UI优化
  • (27)4.8 习题课
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (翻译)terry crowley: 写给程序员
  • (附源码)springboot 智能停车场系统 毕业设计065415
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (机器学习-深度学习快速入门)第三章机器学习-第二节:机器学习模型之线性回归
  • (六)激光线扫描-三维重建
  • (十八)Flink CEP 详解
  • (四)鸿鹄云架构一服务注册中心
  • (原創) X61用戶,小心你的上蓋!! (NB) (ThinkPad) (X61)
  • (转载)从 Java 代码到 Java 堆
  • ***利用Ms05002溢出找“肉鸡
  • .Net 4.0并行库实用性演练
  • .net 8 发布了,试下微软最近强推的MAUI
  • .NET C# 使用 SetWindowsHookEx 监听鼠标或键盘消息以及此方法的坑
  • .NET C#版本和.NET版本以及VS版本的对应关系
  • .net framework4与其client profile版本的区别
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET/C# 获取一个正在运行的进程的命令行参数