背景
目的:
-
理解不同部署方式的架构差异
-
对比环境配置的复杂度
-
评估性能与资源管理
-
探索扩展性与高可用性
-
学习安全与隔离机制
-
实践监控与维护
-
掌握混合部署与云原生场景
实验的最终目标
技能提升:
全面掌握Elasticsearch在不同环境下的部署、配置、优化和故障排查能力。
决策支持:
为实际生产环境中的技术选型(原生 vs. 容器化)提供数据支持和实践经验。
需求:
es 原生linux部署集群
原生linux命令部署
1.准备两台服务器,修改静态IP,关闭防火墙和SELinux,其中静态IP分别设为10.1.1.32和10.1.1.33,通过命令systemctl stop firewalld && systemctl disable firewalld关闭防火墙,修改selinux配置文件后重启。
2.安装ES准备工作:安装Java并验证版本,下载ES安装包并解压,创建es用户和组,移动文件目录并赋予权限,修改sysctl.conf和limits.conf文件,其中在sysctl.conf添加vm.max_map_count=262144 ,在limits.conf配置用户文件打开数限制。
3.安装ES:配置elasticsearch.yml文件,设置集群名称、节点名称、绑定IP等参数,两台服务器的集群名称需相同;切换到es用户启动ES服务,另一台服务器重复相同步骤。
4.测试:在任意一台服务器上使用curl命令测试ES集群状态,注意修改为自己的IP地址。
一.准备环境
1.1环境准备(可先配置好一台,随后克隆)
|-------------------|------------------------------|
| IP | |
| 10.1.1.32 | cpu 2核 内存:4G 硬盘 100G |
| 10.1.1.33 | cpu 2核 内存:4G 硬盘 100G |
1.2 修改静态IP
bash
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=9ca3309e-8a00-4ad0-a902-792e121282d9
DEVICE=ens33
ONBOOT=yes
IPADDR=10.1.1.32
PREFIX=24
GATEWAY=10.1.1.2
DNS1=114.114.114.114
DNS2=8.8.8.8

1.3关闭Slinux和防火墙
systemctl stop firewalld && systemctl disable firewalld
vi /etc/sysconfig/selinux
SELinux=enforcing改为SELinux=disabled
reboot #重启

二.安装es准备工作
2.1 安装java
sudo yum install java-1.8.0-openjdk

java -version #验证java

2.2 下载es
bash
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.5.4.tar.gz
tar -xvf elasticsearch-6.5.4.tar.gz #解压

2.3创建用户和组
#创建组
groupadd es
#创建用户 组 密码
useradd es -g es -p es
#移动文件目录 把解压的elasticsearch-6.5.4 移到 /home/es下
mv elasticsearch-6.5.4 /home/es
#赋值权限
chown -R es:es /home/es/elasticsearch-6.5.4

2.4 修改sysctl.conf
vi /etc/sysctl.conf
需要在:/etc/sysctl.conf 添加上:vm.max_map_count=262144最后启动配置:sysctl -w vm.max_map_count=262144

2.5 修改limits.conf
vim /etc/security/limits.conf
配置内容 *表示所有用户生效
* soft nofile 65536
* hard nofile 65536
重新登录即可生效
可使用命令查看是否生效
ulimit -H -n
三 . 安装es
此处可用执行完以上操作的虚拟机克隆一台新的虚拟机,修改IP为10.1.1.33

3.1 配置文件
vi /home/es/elasticsearch-6.5.4/config/elasticsearch.yml
IP为10.1.1.32:
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.minimum_master_nodes: 2
bash
cluster.name: my-application
node.name: node-1
network.host: 0.0.0.0
discovery.zen.ping.unicast.hosts: ["host1", "host2"]
discovery.zen.minimum_master_nodes: 2

IP为10.1.1.33:
cluster.name: my-es-cluster
node.name: node-2
network.host: 10.1.1.33
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.1.1.32", "10.1.1.33"]
discovery.zen.minimum_master_nodes: 2
node.master: true
node.data: true
bash
cluster.name: my-es-cluster
node.name: node-2
network.host: 10.1.1.33
http.port: 9200
discovery.zen.ping.unicast.hosts: ["10.1.1.32", "10.1.1.33"]
discovery.zen.minimum_master_nodes: 2
node.master: true
node.data: true

-
cluster.name: 集群名称,所有节点必须相同。
-
node.name: 当前节点的名称。
-
network.host: 节点绑定的 IP 地址。
-
discovery.zen.ping.unicast.hosts: 用于发现其他节点的主机列表。
-
discovery.zen.minimum_master_nodes: 主节点数量的最小值,通常是 (节点总数 / 2) + 1。
3.2 切换用户
su es
cd /home/es/elasticsearch-6.5.4/bin
./elasticsearch -d
四.测试
curl -X GET "10.1.1.33:9200/_cluster/health?pretty"

curl -X GET "10.1.1.32:9200/_cluster/health?pretty"
