ITPub博客

首页 > IT基础架构 > > ES生产环境遇到的unassigned问题及ES搭建集群教程

ES生产环境遇到的unassigned问题及ES搭建集群教程

作者:格伯纳 时间:2020-05-22 16:03:55 0 删除 编辑

近期一直在整理公司这边的Elasticsearch,因为服务器上的ES不稳定,部门里其他人都没有接触过这个(我也没有接触过...)

接手这个任务后,通过ip:端口访问了一下ES,获取到ES部分信息,当前端口节点名称、当前服务器ES版本信息


通过head插件访问到ES页面后,发现ES的健康值呈现黄色,黄色意味着所有的数据都是可用的,但是某些复制没有被分配;界面上显示了两个节点,有一个节点是unassigned状态的;通过Xshell 6访问到服务器,通过ps -ef | grep elastic 命令查看当前正在运行的ES服务,发现只有一个进程,打开es目录下conf目录下的elasticsearch.yml文件,发现并没有配置集群信息,服务器上仅仅只是一个单机的。

一个单机的ES,在呈现自己的节点同时,还呈现出一个未知的unassigned节点,纳闷了老半天;

通过head插件查看每个索引下的分片副本数,发现每个索引的副本数都配置的为1,基本上锁定了问题所在了;服务器上搭建了一套单机的ES,但是之前的索引在创建的时候是已集群的方式来创建的索引,为每个索引都指定了分片副本数,但是实际上只有一个节点,所以这个多出的副本没有地方可以存放,导致出现了未知的unassigned节点;

找到问题后就好解决了,将每个索引的副本数重置为0即可解决这个未知节点问题;

put ip:端口/my_index/_settings
{
"number_of_replicas":
}

通过PUT请求,修改指定索引的number_of_replicas参数,将所有索引都修改为即可;



虽然解决了服务器上ES呈现黄色问题,也解决了服务器log信息中es异常问题,但是服务器上的ES一直以单机的形式来储存数据,总感觉是不太友好的;所以接下来的时间里,我在本地搭建了一套ES集群(多节点),配置文件如下:

# 换个集群的名字,免得跟别人的集群混在一起
cluster.name: elasticsearch

# 换个节点名字
node.name: node-02

# 修改一下ES的监听地址,这样别的机器也可以访问
network.host: 0.0.0.0

# 端口号   配置了三台,依次为 9200、9202、9204
http.port: 9200
# 通信端口   配置了三台,依次为 9300、9302、9304
transport.tcp.port: 9300

# 增加新的参数,这样head插件可以访问es并且开启ES跨域
http.cors.enabled: true
http.cors.allow-origin: "*"

# 设置集群信息
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9300","127.0.0.1:9302","127.0.0.1:9304"]
discovery.zen.minimum_master_nodes: 1

启动后通过head访问



我将此套ES打包上传到服务器上,然后依次运行后访问head插件,然后又出现了新的问题了;集群下出现了一个新的unassigned问题,并且健康值直接变成了红色;重新新建索引,索引直接变成unassigned状态,检查看分片,副本等,发现都没有问题,可问题就是这样莫名其妙的出现了。

检查看一下服务器的内存及储存,发现服务器储存已经满了;


然后我放弃了在服务器上搭建集群的想法(在本地及虚拟机上都是正常的集群...);

昨天联系了一下公司总部的技术总监,咨询了一下这个问题,今天上午,收到了答复并且给了我一个博客地址:Elasticsearch生产环境中的一些问题 - CSDN博客

问题是因为磁盘空间不足,将服务器上部分log日志信息清理了1.4G空间出来,然后按照博客上的教程修改了参数配置后,成功创建了一个完好的索引来;




算是一bug修复史吧,记录给自己~


2018年8月14日 11:27:39

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/31509949/viewspace-3130754/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
管理员

注册时间:2018-03-30

  • 博文量
    2383
  • 访问量
    984352