概述
本教程将带您通过 Docker 在三台 CentOS 7 虚拟机上安装并配置 Elasticsearch 8.17。Elasticsearch 是一个开源的分布式搜索引擎,通常用于日志和数据分析。在这个教程中,您将学习如何:
- 在三台 CentOS 7 虚拟机上安装 Docker。
- 使用 Docker 容器安装 Elasticsearch。
- 配置并启动 Elasticsearch 集群。
前提条件
- 三台 CentOS 7 虚拟机。
- 每台虚拟机的网络能够相互访问。
- 每台虚拟机至少 4GB 内存,2 个 CPU 核心。
- 基本的 Linux 操作系统操作知识。
步骤 1:在三台 CentOS 7 虚拟机上安装 Docker
- 更新系统 在每台虚拟机上执行以下命令,确保系统是最新的:
sudo yum update -y
- 安装 Docker 运行以下命令以安装 Docker:
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
添加 Docker 官方的仓库:sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
安装 Docker CE(Community Edition):sudo yum install -y docker-ce docker-ce-cli containerd.io
- 启动 Docker 服务 启动 Docker 服务,并设置为开机启动:
sudo systemctl start docker sudo systemctl enable docker
- 验证 Docker 安装 使用以下命令验证 Docker 是否安装成功:
sudo docker --version
如果返回 Docker 版本信息,说明 Docker 安装成功。
步骤 2:在三台虚拟机上安装 Elasticsearch Docker 镜像
- 拉取 Elasticsearch 镜像 在每台虚拟机上运行以下命令拉取 Elasticsearch 8.17 的 Docker 镜像:
sudo docker pull docker.elastic.co/elasticsearch/elasticsearch:8.17.0
这将从 Docker 官方仓库下载 Elasticsearch 镜像。 - 确认 Elasticsearch 镜像已下载 使用以下命令确认 Elasticsearch 镜像已成功下载:
sudo docker images
输出应该显示elasticsearch:8.17.0
镜像。
步骤 3:配置 Elasticsearch 集群
为了使三台虚拟机上的 Elasticsearch 实例成为一个集群,我们需要为每台机器配置不同的节点名称、主机地址以及集群名称。
配置 Elasticsearch 环境变量
- 创建 Docker 配置文件 在每台虚拟机上,为 Elasticsearch 创建一个名为
elasticsearch.yml
的配置文件:sudo mkdir -p /etc/elasticsearch sudo touch /etc/elasticsearch/elasticsearch.yml
- 配置节点设置 编辑
elasticsearch.yml
文件,配置每个节点的 IP 地址和集群名称。以下是一个配置示例:cluster.name: "my-cluster" node.name: "node-1" # 每台机器的节点名不同 network.host: 0.0.0.0 discovery.seed_hosts: ["<VM-1-IP>:9300", "<VM-2-IP>:9300", "<VM-3-IP>:9300"] cluster.initial_master_nodes: ["node-1", "node-2", "node-3"]
在每台虚拟机上,分别将node.name
改为node-1
、node-2
、node-3
,并将discovery.seed_hosts
配置为集群中其他两台机器的 IP 地址。 注意:<VM-1-IP>
、<VM-2-IP>
和<VM-3-IP>
需要替换为实际的虚拟机 IP 地址。
步骤 4:启动 Elasticsearch 集群
- 启动容器 在每台虚拟机上使用以下命令启动 Elasticsearch 容器:
sudo docker run -d \ --name elasticsearch-node-1 \ --net host \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms2g -Xmx2g" \ -e "node.name=node-1" \ -e "cluster.name=my-cluster" \ -e "network.host=0.0.0.0" \ -e "discovery.seed_hosts=<VM-2-IP>:9300,<VM-3-IP>:9300" \ -e "cluster.initial_master_nodes=node-1,node-2,node-3" \ docker.elastic.co/elasticsearch/elasticsearch:8.17.0
其中:--name
指定容器的名称。-e "discovery.type=single-node"
用于非集群模式(仅测试时使用)。生产环境中不要设置此选项。-e "ES_JAVA_OPTS=-Xms2g -Xmx2g"
设置 Elasticsearch 的 JVM 堆内存为 2GB。-e "node.name=node-1"
指定节点名称。-e "discovery.seed_hosts"
配置集群中其他节点的 IP 地址。
node-1
修改为node-2
和node-3
,并相应地调整 IP 地址。 - 检查 Elasticsearch 容器状态 使用以下命令检查容器是否成功启动:
sudo docker ps
如果容器在运行,它会显示类似以下内容:CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 123456789abc docker.elastic.co/elasticsearch/elasticsearch "/bin/bash -c 'exec ... " 5 minutes ago Up 5 minutes elasticsearch-node-1
- 查看 Elasticsearch 日志 如果容器启动出现问题,可以查看 Elasticsearch 容器的日志:
sudo docker logs elasticsearch-node-1
步骤 5:验证 Elasticsearch 集群
- 访问 Elasticsearch REST API 在其中一台虚拟机上,您可以使用
curl
来检查 Elasticsearch 是否正常运行:curl -X GET "localhost:9200/"
如果 Elasticsearch 正常启动,您将看到类似以下的响应:{ "name" : "node-1", "cluster_name" : "my-cluster", "cluster_uuid" : "abc123xyz", "version" : { "number" : "8.17.0", "build_flavor" : "default", "build_type" : "docker", "build_hash" : "abcdef1234567890", "build_date" : "2023-05-10T10:39:57.596481991Z", "lucene_version" : "9.4.2", "minimum_wire_compatibility_version" : "7.10.0", "minimum_index_compatibility_version" : "7.10.0" } }
- 验证集群状态 使用以下命令验证 Elasticsearch 集群的状态:
curl -X GET "localhost:9200/_cluster/health?pretty=true"
如果集群状态为green
,表示集群正常工作。
步骤 6:集群管理
- 增加节点 如果需要添加更多节点,可以使用以下命令在其他虚拟机上启动新的容器,确保将
discovery.seed_hosts
和cluster.initial_master_nodes
配置为当前集群中的所有节点。 - 停止和删除容器 要停止并删除容器,可以使用以下命令:
sudo docker stop elasticsearch-node-1 sudo docker rm elasticsearch-node-1
结语
通过本教程,您已经成功在三台 CentOS 7 虚拟机上通过 Docker 安装并配置了一个 Elasticsearch 8.17 集群。现在您可以根据自己的需求调整 Elasticsearch 配置,执行查询,或将其与其他服务集成。
关注一粒云,使用一粒云kbox,或者一粒云kdocs 建立一下结构文件夹结构管理好es8机群部署:
elasticsearch-setup/
│
├── docs/ # 存放安装文档及操作手册
│ ├── README.md # 项目概述、安装流程
│ ├── es-installation-guide.md # Elasticsearch 安装教程
│ ├── es-cluster-configuration.md # Elasticsearch 集群配置教程
│ ├── es-troubleshooting.md # 常见问题和解决方案
│ └── es-security-setup.md # 安全配置教程(如启用 SSL/TLS、认证)
│
├── scripts/ # 存放所有相关的脚本文件
│ ├── install-docker.sh # 在 CentOS 7 上安装 Docker 的脚本
│ ├── start-es-container.sh # 启动 Elasticsearch 容器的脚本
│ ├── setup-es-cluster.sh # 配置 Elasticsearch 集群的脚本
│ ├── stop-es-container.sh # 停止 Elasticsearch 容器的脚本
│ └── cleanup.sh # 清理不再需要的容器和镜像的脚本
│
├── config/ # 存放配置文件
│ ├── elasticsearch.yml # Elasticsearch 配置文件
│ └── docker-compose.yml # 如果使用 Docker Compose 部署,存放该文件
│
├── logs/ # 存放日志文件(安装过程、运行时日志)
│ ├── install-log.txt # 安装过程中生成的日志文件
│ └── es-container-logs/ # Elasticsearch 容器运行时的日志
│ ├── elasticsearch-node-1.log
│ ├── elasticsearch-node-2.log
│ └── elasticsearch-node-3.log
│
└── backups/ # 存放数据备份、容器配置等重要文件
├── es-backup-2025-06-04.tar.gz # Elasticsearch 数据备份
└── config-backup-2025-06-04.tar.gz # 配置文件备份