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

近期一直在整理公司这边的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状态,检查看分片,副本等,发现都没有问题,可问题就是这样莫名其妙的出现了。

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

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

昨天联系了一下公司总部的技术总监,咨询了一下这个问题,今天上午,收到了答复并且给了我一个CSDN博客地址。

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


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

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值