0%

Elasticsearch 降级操作指南:从 7.x 降至 6.8.23

由于 Elasticsearch 7.x 与 6.x 版本差异较大(如移除 Type、API 变更等),若需兼容旧系统或修复特定漏洞(如 log4j2 漏洞),可能需要降级至 6.8.23(6.x 系列的最后一个安全更新版本)。以下是详细的降级步骤及问题解决方法。

降级前准备

  1. 备份数据与配置
    • 备份索引数据(建议通过 snapshot API 创建快照,存储至外部仓库)。
    • 备份原 7.x 版本的配置文件(/etc/elasticsearch/elasticsearch.yml/etc/sysconfig/elasticsearch 等),避免降级后配置丢失。
  2. 确认版本兼容性
    • 6.8.23 支持 JDK 8(不支持 JDK 11),需确保环境中已安装 JDK 8 并配置正确。

降级步骤

下载 6.8.23 版本的 RPM 包

1
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.8.23.rpm

覆盖安装旧版本

使用 rpm -Uvh --oldpackage 命令强制安装低版本,覆盖现有 7.x 版本:

1
rpm -Uvh --oldpackage elasticsearch-6.8.23.rpm
  • --oldpackage 选项允许 RPM 安装比当前版本更低的包。

配置 JAVA_HOME(6.x 版本依赖外部 JDK)

Elasticsearch 7.x 自带 JDK,而 6.x 需依赖系统安装的 JDK 8,需手动配置:

阅读全文 »

Elasticsearch 安装指南:单机与分布式部署详解

Elasticsearch(ES)的安装部署是使用其功能的基础,本文将基于 RPM 包方式,详细讲解单机环境和分布式集群的安装步骤、配置调整及常见问题解决,适用于 CentOS/RHEL 系统。

安装前准备

环境要求

  • 操作系统:CentOS 7/8 或 RHEL 7/8(64 位)。

  • Java 环境:ES 依赖 Java,需安装 JDK 8 或 11(推荐 11,ES 7.x+ 对 JDK 11 支持更优)。

    验证 Java 环境:

    1
    java -version  # 需输出 java version "1.8.0_xxx" 或 "11.0.xxx"
  • 用户权限:ES 不允许 root 用户直接运行,建议创建专用用户(如 elasticsearch)。

导入 Elastic 官方密钥

1
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch

单机安装步骤

下载并安装 RPM 包

以 ES 7.1.1 为例(可替换为其他版本,如 7.17.x 长期支持版):

1
2
3
4
5
# 下载 RPM 包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.1.1-x86_64.rpm

# 安装
rpm -ivh elasticsearch-7.1.1-x86_64.rpm

安装后,ES 相关文件路径:

阅读全文 »

MongoDB 简介:面向文档的分布式数据库

MongoDB 是一款高性能、开源、面向文档的 NoSQL 数据库,由 C++ 编写,专为处理海量非结构化或半结构化数据设计。它打破了传统关系型数据库的表结构限制,采用灵活的文档模型,非常适合 Web 应用、大数据存储和快速迭代的业务场景。

核心特性

面向文档的存储模型

  • 文档(Document):MongoDB 的基本数据单元,类似 JSON 格式的BSON(Binary JSON),支持嵌套结构、数组等复杂数据类型。

    示例文档:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    {
    "_id": ObjectId("507f1f77bcf86cd799439011"), // 自动生成的唯一标识
    "name": "MongoDB",
    "type": "database",
    "features": ["high performance", "high availability", "easy scalability"],
    "version": "6.0",
    "metrics": {
    "downloads": 1000000,
    "users": 500000
    }
    }
  • 集合(Collection):多个文档的集合,类似关系型数据库的 “表”,但无需预先定义结构(模式自由),同一集合中的文档可以有不同的字段。

模式自由(Schema-less)

  • 无需预先定义表结构(Schema),文档的字段可以动态添加或修改,适应业务快速迭代。

  • 例如,同一users集合中可以同时存在以下文档:

1
2
3
4
// 文档1
{ "name": "Alice", "age": 25, "email": "alice@example.com" }
// 文档2(字段不同)
{ "name": "Bob", "phone": "123456789", "address": { "city": "Beijing" } }

高性能

  • 内存映射(MMAP):通过内存映射文件(MMAP)技术将数据文件直接映射到进程内存,读写操作通过内存完成,减少传统 I/O 开销。
  • 索引支持:支持单字段索引、复合索引、地理空间索引等,加速查询(类似关系型数据库的索引)。
  • 读写分离:支持副本集(Replica Set),主节点处理写操作,从节点分担读压力,提高吞吐量。

高可用性与扩展性

  • 副本集(Replica Set):由多个节点组成的集群,自动实现故障转移(主节点故障时,从节点自动选举新主节点),确保数据不丢失。
  • 分片(Sharding):将海量数据分散存储到多个分片服务器,支持水平扩展,应对数据量增长。

丰富的查询与聚合能力

  • 支持类似 SQL 的查询语法,包括过滤、排序、分页、嵌套查询等。

  • 提供强大的聚合框架(Aggregation Pipeline),支持数据分组、统计、转换等复杂操作。

  • 示例查询:

阅读全文 »

LVS(Linux Virtual Server):高性能 Linux 虚拟服务器集群方案

在高并发场景中,单台服务器难以承载海量请求,而 LVS(Linux Virtual Server)作为基于 Linux 内核的负载均衡技术,通过将请求分发到后端服务器集群,实现了服务的高可用与高扩展性。本文将深入解析 LVS 的核心架构、负载均衡技术及适用场景。

LVS 核心架构:分层设计与角色划分

LVS 的核心思想是通过负载调度器将客户端请求分发到后端真实服务器集群,整个集群对客户端透明(客户端仅感知调度器的 IP)。其架构包含三个关键角色:

  • Director Server(调度器)
    前端负载均衡节点,负责接收客户端请求,根据预设算法将请求转发至后端真实服务器。调度器是 LVS 的核心,运行着 IPVS(IP Virtual Server)模块(Linux 内核级软件)。
  • Real Server(真实服务器)
    后端提供实际服务的节点(如 Web 服务器、数据库服务器),接收调度器转发的请求并处理,最终将响应返回给客户端(部分模式下无需经过调度器)。
  • Virtual IP(VIP)
    调度器对外暴露的虚拟 IP 地址,客户端通过 VIP 访问服务,无需关心后端真实服务器的具体 IP。

IPVS:LVS 的内核级负载均衡核心

IPVS 是 LVS 的核心模块,集成在 Linux 内核中,负责实现请求的转发与调度。它支持三种核心负载均衡技术,适用于不同的网络场景:

1. NAT 模式(Network Address Translation,网络地址转换)

原理

阅读全文 »