Elasticsearch 安装和配置脚本文档
Elasticsearch 安装和配置脚本文档
目录
- **Elasticsearch 安装和配置脚本文档**
- 0.**概述**
- 1.**使用方法:**
- 2.**脚本步骤:**
- 3. **完整代码如下:**
0.概述
此Bash脚本用于自动化在CentOS 7系统上安装和配置Elasticsearch(ES)分布式搜索引擎。脚本包括了创建集群、配置节点、安装Java环境、以及设置必要的系统和ES参数。执行脚本后,将会完成Elasticsearch的安装、配置和启动。
1.使用方法:
- 确保脚本具有执行权限:
chmod +x elasticsearch_setup_script.sh - 执行脚本:
./elasticsearch_setup_script.sh
2.脚本步骤:
脚本步骤:
- 变量定义:
CLUSTER_NAME:Elasticsearch集群的名称。NODE_NAME:当前节点的名称。IPS:节点的IP地址列表。HOSTS:节点对应的主机名列表。- 其他路径和配置变量。
- 更新 /etc/hosts 文件:
- 自动检查并添加节点IP地址和主机名到
/etc/hosts文件。
- 检查并创建 elasticsearch 用户:
- 检查是否已存在 elasticsearch 用户,如果不存在则创建。
- 检查和创建 ES 目录:
- 检查数据和日志目录是否存在,如果不存在则创建。
- 检查 Java 环境:
- 检查Java环境是否已安装,如果未安装则退出脚本。
- 安装 Elasticsearch:
- 安装指定版本的 Elasticsearch。
- 修改 elasticsearch.yml 配置文件:
- 替换配置文件中的集群名、节点名、数据和日志路径等参数。
- 添加 X-Pack 配置:
- 启用安全特性和 SSL。
- 修改系统配置:
- 调整系统参数以满足 Elasticsearch 的需求。
- 授权目录权限和配置 ES_JAVA_HOME:
- 授予数据和日志目录以 elasticsearch 用户的权限。
- 配置 ES_JAVA_HOME。
- 启动 Elasticsearch:
- 启用并启动 Elasticsearch 服务。
- 防火墙配置:
- 允许 9200 端口通过防火墙。
- 设置密码:
- 使用交互式命令设置 Elasticsearch 密码。
- 完成消息:
- 显示安装和配置完成的消息。
注意: - 该脚本假定在CentOS 7环境中运行,可能需要根据其他发行版进行调整。
- 在生产环境中运行脚本之前,请检查脚本并根据需要调整变量.
此脚本按原样提供,使用时请小心。建议在部署之前了解其功能并根据具体要求进行调整。用户负责确保在其环境中设置的安全性和兼容性。
3. 完整代码如下:
#!/bin/bashset -e# 定义变量
CLUSTER_NAME="tech-es"
## 节点名称修改
NODE_NAME="node-2"
IPS=("192.168.2.49" "192.168.2.50" "192.168.2.51")
HOSTS=("node-1" "node-2" "node-3")SEED_HOSTS=$(printf ',"%s"' "${IPS[@]}")
SEED_HOSTS=[${SEED_HOSTS:1}]
INITIAL_MASTER_NODES=$(printf ',"%s"' "${HOSTS[@]}")
INITIAL_MASTER_NODES=[${INITIAL_MASTER_NODES:1}]ES_PKG="/usr/local/dhtech/autoinstall/lib/elasticsearch-7.17.8-x86_64.rpm"
ES_CONFIG="/etc/elasticsearch/elasticsearch.yml"
LIMITS_CONF="/etc/security/limits.conf"
PROC_CONF="/etc/security/limits.d/20-nproc.conf"
SYSCTL_CONF="/etc/sysctl.conf"
ES_DIR="/dhxdata/es"
PROFILE="/etc/profile"
JAVA_HOME_DIR="/usr/local/java/jdk1.8"# 更新 /etc/hosts 文件
for (( i=0; i<${#IPS[@]}; i++ ));
doif ! grep -q "${IPS[i]} ${HOSTS[i]}" /etc/hosts; thenecho "${IPS[i]} ${HOSTS[i]}" >> /etc/hostsfi
done
# 检查并创建用户
if id "elasticsearch" >/dev/null 2>&1; thenecho "elasticsearch user exists"
elseuseradd elasticsearchecho "elasticsearch user has been created"
fi
# 检查ES的存储目录和日志目录是否存在,不存在则创建
if [ ! -d "$ES_DIR/data" ]; thenmkdir -p "$ES_DIR/data"
fi
if [ ! -d "$ES_DIR/logs" ]; thenmkdir -p "$ES_DIR/logs"
fi
# 检查Java环境
java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}')
if [[ ! -n "${java_version}" ]]; thenecho "未安装Java开发环境:${java_version}"exit 1
fi# 安装
if [ ! -f "$ES_PKG" ]; thenecho "Elasticsearch安装包不存在,确认文件后请重新运行脚本。"exit 1
firpm -ivh "$ES_PKG"# 修改elasticsearch.yml配置
sed -i "s|^[#]*\s*cluster.name:.*|cluster.name: $CLUSTER_NAME|" "$ES_CONFIG"
sed -i "s|^[#]*\s*node.name:.*|node.name: $NODE_NAME|" "$ES_CONFIG"
sed -i "s|path.data:.*|path.data: $ES_DIR/data|" "$ES_CONFIG"
sed -i "s|path.logs:.*|path.logs: $ES_DIR/logs|" "$ES_CONFIG"
sed -i "s|^[#]*\s*network.host:.*|network.host: 0.0.0.0|" "$ES_CONFIG"
sed -i "s|^[#]*\s*http.port:.*|http.port: 9200|" "$ES_CONFIG"
sed -i "s|^[#]*\s*discovery.seed_hosts:.*|discovery.seed_hosts: $SEED_HOSTS|" "$ES_CONFIG"
# sed -i "s|^[#]*\s*cluster.initial_master_nodes:.*|cluster.initial_master_nodes: $INITIAL_MASTER_NODES|" "$ES_CONFIG"
sed -i "s|^[#]*\s*cluster.initial_master_nodes:.*|cluster.initial_master_nodes: [\"node-1\"]|" "$ES_CONFIG"# 添加以下三行
echo "xpack.security.enabled: true" >> "$ES_CONFIG"
echo "xpack.license.self_generated.type: basic" >> "$ES_CONFIG"
echo "xpack.security.transport.ssl.enabled: true" >> "$ES_CONFIG"# 修改系统配置
echo "elasticsearch soft nofile 65536
elasticsearch hard nofile 65536" >> "$LIMITS_CONF"
echo "elasticsearch soft nofile 65536
elasticsearch hard nofile 65536
* hard nproc 4096" >> "$PROC_CONF"
echo "vm.max_map_count=655360" >> "$SYSCTL_CONF"sysctl -p# 创建数据和日志的目录,并授予权限
chown -R elasticsearch:elasticsearch "$ES_DIR"# 配置ES_JAVA_HOME
echo "ES_JAVA_HOME=$JAVA_HOME_DIR
export ES_JAVA_HOME" >> "$PROFILE"
source "$PROFILE"# 启动Elasticsearch
systemctl enable elasticsearch
systemctl start elasticsearch# 允许9200端口通过防火墙
firewall-cmd --zone=public --add-port=9200/tcp --permanent
# 重新加载防火墙配置
firewall-cmd --reload# 设置密码
/usr/share/elasticsearch/bin/elasticsearch-setup-passwords interactive
echo "Elasticsearch安装已完成!"相关文章:
Elasticsearch 安装和配置脚本文档
Elasticsearch 安装和配置脚本文档 目录 **Elasticsearch 安装和配置脚本文档**0.**概述**1.**使用方法:**2.**脚本步骤:**3. **完整代码如下:** 0.概述 此Bash脚本用于自动化在CentOS 7系统上安装和配置Elasticsearch(ES&#x…...
【Android辟邪】之:gradle——在项目间共享依赖关系版本
翻译和简单修改自:https://docs.gradle.org/current/userguide/platforms.html#sec:sharing-catalogs 建议看原文(有能力的话) 现在 Gradle 脚本可以使用两种语法编写:Kotlin 和 Groovy 本文只使用kotlin脚本语法,更…...
Qt 项目树工程,拷贝子项目dll到子项目exe运行路径
1、项目树工程 2、项目树列表 ---- BuildAll -------- App (exe) -------- Database (dll) 注:使用 子项目–>添加库–>内部库 的方式 3、qmake 内置的变量 $$OUT_PWD 表示输出文件(如可执行文件…...
进程间通信方式
1>内核提供的原始通信方式有三种 1)无名管道 2)有名管道 3)信号 2>System V提供了三种通信方式 4)消息队列 5)共享内存 6)信号量(信号灯集) 3>套接字通信 7)socke…...
[linux]:匿名管道和命名管道(什么是管道,怎么创建管道(函数),匿名管道和命名管道的区别,代码例子)
目录 一、匿名管道 1.什么是管道?什么是匿名管道? 2.怎么创建匿名管道(函数) 3.匿名管道的4种情况 4.匿名管道有5种特性 5.怎么使用匿名管道?匿名管道有什么用?(例子) 二、命名…...
Python调用matlab程序
matlab官网:https://ww2.mathworks.cn/?s_tidgn_logo matlab外部语言和库接口,包括 Python、Java、C、C、.NET 和 Web 服务。 matlab和python的版本 安装依赖配置 安装matlab的engine 找到matlab的安装目录:“xxx\ extern\engines\python…...
FlinkSql 窗口函数
Windowing TVF 以前用的是Grouped Window Functions(分组窗口函数),但是分组窗口函数只支持窗口聚合 现在FlinkSql统一都是用的是Windowing TVFs(窗口表值函数),Windowing TVFs更符合 SQL 标准且更加强大…...
十分钟GIS——geoserver+postgis+udig从零开始发布地图服务
1数据库部署 1.1PostgreSql安装 下载到安装文件后(postgresql-9.2.19-1-windows-x64.exe),双击安装。 指定安装目录,如下图所示 指定数据库文件存放目录位置,如下图所示 指定数据库访问管理员密码,如下图所…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之Span组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、Span组件 鸿蒙(HarmonyOS)作为Text组件的子组件࿰…...
Leetcode—42. 接雨水【困难】
2024每日刷题(112) Leetcode—42. 接雨水 空间复杂度为O(n)的算法思想 实现代码 class Solution { public:int trap(vector<int>& height) {int ans 0;int n height.size();vector<int> l(n);vector<int> r(n);for(int i 0; …...
[Python] opencv - 什么是直方图?如何绘制图像的直方图?如何对直方图进行均匀化处理?
什么是直方图? 直方图是一种统计图,用于展示数据的分布情况。它将数据按照一定的区间或者组进行划分,然后计算在每个区间或组内的数据频数或频率(即数据出现的次数或占比),然后用矩形或者柱形图的形式将这…...
ppi rust开发 python调用
创建python的一个测试工程 python -m venv venv .\venv\Scripts\activatepip install cffi创建一个rust的lib项目 cargo new --lib pyrustlib.rs #[no_mangle] pub extern "C" fn rust_add(x: i32, y: i32) -> i32 {x y }Cargo.toml [package] name "p…...
网站后端开发 thinkphp6 入门教程合集(更新中)
thinkphp6 入门(1)--安装、路由规则、多应用模式 thinkphp6 入门(1)--安装、路由规则、多应用模式_软件工程小施同学的博客-CSDN博客 thinkphp6 入门(2)--视图、渲染html页面、赋值 thinkphp6 入门&#x…...
Web前端框架-Vue(初识)
文章目录 web前端三大主流框架**1.Angular****2.React****3.Vue**什么是Vue.js 为什么要学习流行框架框架和库和插件的区别一.简介指令v-cloakv-textv-htmlv-pre**v-once**v-onv-on事件函数中传入参数事件修饰符双向数据绑定v-model 按键修饰符自定义按键修饰符别名v-bind(属性…...
配置dns服务的正反向解析
服务端IP客户端IP网址192.168.153.137192.168.153.www.openlab.com 1:正向解析 1.1关闭客户端和服务端的安全软件,安装bind软件 [rootserver ~]# setenforce 0 [rootserver ~]# systemctl stop firewalld [rootserver ~]# yum install bind -y [rootnod…...
小白水平理解面试经典题目LeetCode 71. Simplify Path【Stack类】
71. 简化路径 小白渣翻译 给定一个字符串 path ,它是 Unix 风格文件系统中文件或目录的绝对路径(以斜杠 ‘/’ 开头),将其转换为简化的规范路径。 在 Unix 风格的文件系统中,句点 ‘.’ 指的是当前目录,…...
电力负荷预测 | 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM)
文章目录 效果一览文章概述源码设计参考资料效果一览 文章概述 电力系统负荷预测模型(Python线性回归、随机森林、支持向量机、BP神经网络、GRU、LSTM) 所谓预测,就是指通过对事物进行分析及研究,并运用合理的方法探索事物的发展变化规律,对其未来发展做出预先估计和判断。…...
YY调音台:音频后期处理
我从事影视后期处理的工作,主要负责音频、音效合成这块工作内容。在影视作品中,声音不仅仅是背景元素,它在叙事和创造情感氛围上发挥着至关重要的作用。我们的工作不仅要让听众听到声音,更要让他们通过声音感受到情感的波动和故事…...
一键部署一个监控系统hertzbeat
效果 特点 一站式监控告警通知,支持应用服务,数据库,操作系统,中间件,云原生,网络等。 易用友好,无需 Agent,全页面操作,鼠标点一点就能监控告警。 强大监控模版能力&…...
为电子表格嵌入数据库,Excel/WPS一键升级为管理系统
将Excel表格转化为管理系统,这款工具能够实现只需导入表格数据,即可自动生成相应的软件和APP。 表格办公的烦恼,有遇到吧? 对于具有一定规模的企业而言,各类表格如同繁星般众多,既有日常使用的常规表格&a…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...
JVM垃圾回收机制全解析
Java虚拟机(JVM)中的垃圾收集器(Garbage Collector,简称GC)是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象,从而释放内存空间,避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...
DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI
前一阵子在百度 AI 开发者大会上,看到基于小智 AI DIY 玩具的演示,感觉有点意思,想着自己也来试试。 如果只是想烧录现成的固件,乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外,还提供了基于网页版的 ESP LA…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
使用Matplotlib创建炫酷的3D散点图:数据可视化的新维度
文章目录 基础实现代码代码解析进阶技巧1. 自定义点的大小和颜色2. 添加图例和样式美化3. 真实数据应用示例实用技巧与注意事项完整示例(带样式)应用场景在数据科学和可视化领域,三维图形能为我们提供更丰富的数据洞察。本文将手把手教你如何使用Python的Matplotlib库创建引…...
MySQL 8.0 事务全面讲解
以下是一个结合两次回答的 MySQL 8.0 事务全面讲解,涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容,并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念(ACID) 事务是…...
