中间件,我给它的定义就是为了实现某系业务功能依赖的软件,包括如下部分:
Web服务器
代理服务器
ZooKeeper
Kafka
RabbitMQ
Hadoop HDFS
Elasticsearch ES (本章节)
由于我们后面的要讲解的概念需要在集群环境里面更容易体现,所以我们这里先部署集群。
环境规划
IP | 角色 |
---|---|
192.168.31.171 | master,data,Ingest |
192.168.31.172 | master,data,Ingest |
192.168.31.173 | master,data,Ingest |
master:管理集群状态(索引元数据、分片分配、节点加入/离开)。不存储数据,不处理用户请求。
data:存储索引数据,执行数据的增删改查、搜索、聚合等操作。消耗大量CPU、内存、磁盘IO
Ingest:接收客户端请求,将请求路由到正确的数据节点,聚合结果返回给客户端。分担数据节点的负载,尤其在复杂搜索/聚合时。
环境配置
我们在上个小节里面没有配置的,部署集群就需要配置。这里需要用root来实现。
# 1. 永久修改文件描述符限制
echo "elasticsearch - nofile 65535" >> /etc/security/limits.conf
echo "root soft nofile 65535" >> /etc/security/limits.conf
echo "root hard nofile 65535" >> /etc/security/limits.conf
# 2. 永久修改虚拟内存映射数
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
# 3. 立即应用新配置
sysctl -p
ulimit -n 65535
# 4. 为 Elasticsearch 用户添加额外权限(解决 memlock 问题)
echo "elasticsearch - memlock unlimited" >> /etc/security/limits.conf
基础准备
同单机没有区别。
yum -y install java-1.8.0-openjdk
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86_64.tar.gz
#root用户操作
useradd es
mv elasticsearch-7.17.29-linux-x86_64.tar.gz /home/es/
chown es.es /home/es/elasticsearch-7.17.29-linux-x86_64.tar.gz
su es
#es用户操作
cd ~
tar xvf elasticsearch-7.17.29-linux-x86_64.tar.gz
cd elasticsearch-7.17.29
配置文件
其他节点替换对应的node.name和network.host,当然这里仅仅指定了很少的配置,时间这里可以指定很多配置的。
# ===== 核心配置 =====
cluster.name: three-node-cluster
node.name: node-171
node.roles: [master, data]
path.data: /home/es/data
# ===== 网络配置 =====
network.host: 192.168.31.171
http.port: 9200
transport.port: 9300
# ===== 集群发现 =====
discovery.seed_hosts:
- "192.168.31.171:9300"
- "192.168.31.172:9300"
- "192.168.31.173:9300"
# ===== 首次启动配置(集群形成后注释) =====
cluster.initial_master_nodes:
- "node-171"
- "node-172"
- "node-173"
#启动
./bin/elasticsearch -d
检查集群状态
状态是green就代表集群状态是ok的。
[root@localhost ~]# curl -XGET 'http://192.168.31.171:9200/_cluster/health?pretty'
{
"cluster_name" : "three-node-cluster",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 3,
"number_of_data_nodes" : 3,
"active_primary_shards" : 3,
"active_shards" : 6,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 0,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 100.0
}
查看节点
这里会显示3个节点的一些统计信息。
[root@localhost ~]# curl -XGET 'http://192.168.31.171:9200/_cat/nodes?v'
ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name
192.168.31.172 13 97 3 0.01 0.15 0.15 dm * node-172
192.168.31.171 15 88 2 0.22 0.18 0.14 dm - node-171
192.168.31.173 5 95 4 0.01 0.14 0.13 dm - node-173
[root@localhost ~]#
到这里我们的集群版本就算部署完成。