CentOS7环境下ES6.2.4集群扩展:已有数据节点添加新节点

需积分: 5 0 下载量 175 浏览量 更新于2024-08-03 收藏 802KB DOCX 举报
"本文档描述了如何在CentOS 7(Cent7)系统上搭建Elasticsearch 6.2.4集群,特别是当已有单点Elasticsearch运行且包含数据时,如何添加新的节点到集群中。" 在搭建Elasticsearch集群的过程中,首先确保系统配置正确是至关重要的。在192.168.224.133这台机器(标记为node-1)上,我们需要进行以下步骤: 1. **环境准备**:更新`/etc/hosts`文件,将所有参与集群的节点IP地址与主机名映射,以便节点间能够相互通信。在这个例子中,我们有两台机器,node-1的IP是192.168.224.133,node-2的IP是192.168.224.134。 2. **调整系统限制**:为了支持Elasticsearch的高性能运行,需要增加系统资源限制。编辑`/etc/security/limits.conf`和`/etc/security/limits.d/20-nproc.conf`文件,设置用户可以打开的最大文件数(`nofile`)和最大进程数(`nproc`),分别设置为65536和4096。同时,通过`/etc/sysctl.conf`增加`vm.max_map_count`参数至262144,并使用`sysctl -p`使更改生效。 3. **关闭防火墙**:为了确保节点间的通信不受阻,需停止`firewalld`服务,命令为`systemctl stop firewalld.service`。 4. **安装JDK 1.8**:Elasticsearch需要Java运行环境,这里选择的是JDK 1.8。首先创建目录`/usr/local/java`,然后上传并解压JDK 1.8的Linux x64版本,最后将解压后的目录移动到`/usr/local/java`下。 完成上述步骤后,可以在192.168.224.133上安装Elasticsearch 6.2.4。安装过程通常包括下载Elasticsearch的rpm包,然后使用`yum install`或`rpm`命令进行安装。确保在安装过程中,Elasticsearch配置文件(如`elasticsearch.yml`)已经配置了集群名称,以便节点能加入同一个集群。 接下来,当单点Elasticsearch(node-1)已经有数据时,添加新的节点(例如node-2,192.168.224.134)到集群: 1. 在node-2上重复上述的环境准备、系统限制调整和JDK安装步骤。 2. 安装Elasticsearch 6.2.4,并在`elasticsearch.yml`配置文件中设置相同的集群名称,以及配置`network.host`以指定节点监听的IP地址。 3. 启动新节点的Elasticsearch服务。节点将自动尝试加入已存在的集群。如果配置正确,node-2应当成功连接到node-1并成为集群的一部分。 4. 监控集群状态,使用Elasticsearch的HTTP API或Kibana界面查看节点是否已经加入并且数据是否均衡分布。 在构建Elasticsearch集群时,确保所有节点的配置一致性至关重要,包括但不限于集群名称、网络设置、磁盘配置、数据路径等。此外,考虑到数据安全和高可用性,通常还需要设置跨节点的数据复制和主节点选举策略。一旦集群稳定运行,可以考虑进一步扩展节点数量,以提高搜索性能和容错能力。

解释如下代码:for pic_id1 in range(1,N_pic+1): print('matching ' + set_name +': ' +str(pic_id1).zfill(5)) N_CHANGE = 0 for T_id in range(1,16,3): for H_id in range(2,5): FAIL_CORNER = 0 data_mat1 = read_data(input_file,pic_id1,T_id,H_id) search_list = range( max((pic_id1-10),1),pic_id1)+ range(pic_id1+1, min((pic_id1 + 16),N_pic + 1 ) ) for cor_ind in range(0,N_cor): row_cent1 = cor_row_center[cor_ind] col_cent1 = cor_col_center[cor_ind] img_corner = data_mat1[(row_cent1-N_pad): (row_cent1+N_pad+1), (col_cent1-N_pad): (col_cent1+N_pad+1) ] if ((len(np.unique(img_corner))) >2)&(np.sum(img_corner ==1)< 0.8*(N_pad2+1)**2) : for pic_id2 in search_list: data_mat2 = read_data(input_file,pic_id2,T_id,H_id) match_result = cv2_based(data_mat2,img_corner) if len(match_result[0]) ==1: row_cent2 = match_result[0][0]+ N_pad col_cent2 = match_result[1][0]+ N_pad N_LEF = min( row_cent1 , row_cent2) N_TOP = min( col_cent1, col_cent2 ) N_RIG = min( L_img-1-row_cent1 , L_img-1-row_cent2) N_BOT = min( L_img-1-col_cent1 , L_img-1-col_cent2) IMG_CHECK1 = data_mat1[(row_cent1-N_LEF): (row_cent1+N_RIG+1), (col_cent1-N_TOP): (col_cent1+N_BOT+1) ] IMG_CHECK2 = data_mat2[(row_cent2-N_LEF): (row_cent2+N_RIG+1), (col_cent2-N_TOP): (col_cent2+N_BOT+1) ] if np.array_equal(IMG_CHECK1,IMG_CHECK2) : check_row_N = IMG_CHECK1.shape[0] check_col_N = IMG_CHECK1.shape[1] if (check_col_Ncheck_row_N>=25): match_all.append( (pic_id1, row_cent1, col_cent1, pic_id2 , row_cent2, col_cent2) ) search_list.remove(pic_id2) else: FAIL_CORNER = FAIL_CORNER +1 N_CHANGE = N_CHANGE + 1 #%% break if less than 1 useless corners, or have detected more than 10 images from 60 if(FAIL_CORNER <= 1): break

2023-06-13 上传