elsaticsearch 集群搭建
一,ElasticSearch优缺点
1.优点
- 集群配置简单
- 无缝扩展或者移除节点
- 隐藏分布式系统复杂性,对用户透明(对分片和搜索的处理等)
- 集群健康状态监控
- 全文索引
2.缺点
- 硬件资源要求高(分片复制占磁盘,聚合和排序操作吃内存,I/O)
- 可靠性(Out of memory问题)
- 灵活性问题(Mapping不可变,变需重建整个索引,与倒排索引有关)
- 分页问题(与分片有关系)
- 中文切词问题
- 权限管理不完善
- 安全性(收费插件)
二,集群搭建
1.概念介绍
- cluster:集群
- node:节点
- shards:分片,包含主分片和复制分片
2.压缩包下载
- 前往网址下载合适的版本,上传到服务器中
- 执行以下命令,解压压缩包
unzip elasticsearch-6.2.4.zip
3.集群安装
- 确保服务器中已安装1.8版本以上的jdk
- 由于elasticsearch不能以root账户启动,故需要创建新的用户和用户组(root账户下操作)
分别执行以下命令,创建用户和用户组groupadd es
useradd es -g es -p cb888
- 执行给用户分配elasticsearch文件夹执行权限(root账户下操作)
【elasticsearch/】为elasticsearch解压后的文件夹,请按实际情况修改chown -R es:es elasticsearch/
- 修改linux文件句柄数限制(root账户下操作)
vi /etc/security/limits.conf
在文件末尾增加以下两行,退出保存即可es hard nofile 65536
es soft nofile 65536
- 设置vm.max_map_count(root账户下操作)
vi /etc/sysctl.conf
增加以下行:vm.max_map_count=262144
执行以下命令,使配置生效:sysctl -p
- 执行以下命令,开启9200和9300两个端口的访问权限(root账户下操作)
firewall-cmd --zone=public --add-port=9200/tcp --permanent;firewall-cmd --reload;
firewall-cmd --zone=public --add-port=9300/tcp --permanent;firewall-cmd --reload; - 配置elasticsearch配置文件elasticsearch.yml
vi /var/elasticsearcd/config/elasticsearch.yml
修改以下属性:
#同一个集群内的所有节点配置成一样
cluster.name: my-application
node.name: node-103 #同一个集群内不能重复
node.attr.rack: master-103
path.data: /path/to/data #数据保存路径
path.logs: /path/to/logs #日志文件保存路径
network.host: 10.0.0.103 #本节点ip地址
http.port: 9200 #对外开放的端口
#集群中其他ip地址,用来广播集群信息,如果端口不是9200,需要在ip后指定端口(只需配置除自己外的其他节点信息)
discovery.zen.ping.unicast.hosts: ["10.0.0.102", "10.0.0.103"]
discovery.zen.minimum_master_nodes: 2 #最小有选举master节点的node数,计算公式master节点数/2+1
- 启动集群所有节点
执行命令
su es
切换到es用户,
进入elasticsearch文件夹下的bin目录,
执行
./elasticsearch
即可,如果要后台运行,请运行
./elasticsearch -d
- 验证集群状态
访问集群中的任一节点,如http://10.0.0.103:9200/_cluster/health?pretty 如出现以下类似信息,则说明集群启动成功:
{
"cluster_name" : "my-application",
"status" : "green",
"timed_out" : false,
"number_of_nodes" : 2,
"number_of_data_nodes" : 2,
"active_primary_shards" : 0,
"active_shards" : 0,
"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
}