8 验证集群功能

1.检查节点状态

kubectl get nodes

2.创建测试文件

cat > nginx-ds.yml <<EOF
apiVersion: v1
kind: Service
metadata:
  name: nginx-ds
  labels:
    app: nginx-ds
spec:
  type: NodePort
  selector:
    app: nginx-ds
  ports:
  - name: http
    port: 80
    targetPort: 80
---
apiVersion: extensions/v1beta1
kind: DaemonSet
metadata:
  name: nginx-ds
  labels:
    addonmanager.kubernetes.io/mode: Reconcile
spec:
  template:
    metadata:
      labels:
        app: nginx-ds
    spec:
      containers:
      - name: my-nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
EOF

执行定义文件

kubectl create -f nginx-ds.yml

3.检查各 Node 上的 Pod IP 连通性

kubectl get pods  -o wide|grep nginx-ds
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh ${node_ip} "ping -c 1 172.30.19.2"
    ssh ${node_ip} "ping -c 1 172.30.97.2"
    ssh ${node_ip} "ping -c 1 172.30.31.2"
  done

4.检查服务 IP 和端口可达性

kubectl get svc |grep nginx-ds

输出

nginx-ds     NodePort    10.254.140.131   <none>        80:8861/TCP   33m
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh ${node_ip} "curl 10.254.140.131"
  done
for node_ip in ${NODE_IPS[@]}
  do
    echo ">>> ${node_ip}"
    ssh ${node_ip} "curl ${node_ip}:8861"
  done
<think>我们被要求验证Elasticsearch集群功能。根据提供的引用,我们可以通过以下步骤来验证集群功能: 1. 确保集群已经正确配置并启动。 2. 检查集群状态。 3. 验证节点是否加入集群。 4. 验证集群的安全性(如果启用了安全功能)。 具体步骤: 1. 确保集群配置正确: - 每个节点的`elasticsearch.yml`文件中配置了相同的`cluster.name`。 - 每个节点配置了`node.name`(建议唯一)。 - 配置了`discovery.seed_hosts`(或旧版本的`discovery.zen.ping.unicast.hosts`)指向集群中的其他节点。 - 如果是新集群,配置了`cluster.initial_master_nodes`(仅首次启动时需要)。 - 如引用[5]所示,配置了网络、路径等。 2. 启动集群后,可以通过以下方式验证: a. 使用REST API检查集群健康状态: 执行命令:`curl -X GET "localhost:9200/_cluster/health?pretty"` 如果启用了安全认证(如引用[2][3]所述),则需要提供用户名和密码: 例如:`curl -u elastic:elastic -X GET "localhost:9200/_cluster/health?pretty"` 返回结果中,`status`字段表示集群状态: - green: 所有主分片和副本分片都可用。 - yellow: 所有主分片可用,但部分副本分片不可用。 - red: 存在主分片不可用。 另外,`number_of_nodes`应该等于集群中节点的数量。 b. 查看节点信息: 执行命令:`curl -X GET "localhost:9200/_cat/nodes?v"` 同样,如果启用了安全认证,需要提供凭证。 这个命令会列出集群中的所有节点,包括它们的角色(如master, data, ingest等)。 3. 验证集群功能: - 创建索引:尝试创建一个索引,并指定副本数(以测试分片分配)。 - 写入数据:向索引中写入一些文档。 - 搜索数据:执行搜索查询,验证数据是否可被检索。 - 如果集群有多个节点,可以模拟节点故障(如停止一个节点),观察集群的恢复能力(注意:测试环境可做,生产环境谨慎)。 4. 如果集群配置了安全功能(如引用[2][3]所述),需要验证安全功能是否正常工作: - 尝试不提供凭证访问,应被拒绝。 - 提供正确凭证访问,应成功。 5. 跨集群功能验证(如果配置了跨集群搜索): - 根据引用[3],如果配置了跨集群,需要验证集群搜索是否正常。 6. 证书验证(如果配置了TLS): - 如引用[4]中,拷贝了证书,需要验证节点间通信是否加密。 下面是一个具体的验证步骤示例: 步骤1:检查集群健康状态 ```bash curl -u elastic:elastic -X GET "http://localhost:9200/_cluster/health?pretty" ``` 期望输出类似: ```json { "cluster_name" : "my-application", "status" : "green", "timed_out" : false, "number_of_nodes" : 3, "number_of_data_nodes" : 3, ... } ``` 步骤2:列出节点 ```bash curl -u elastic:elastic -X GET "http://localhost:9200/_cat/nodes?v" ``` 输出应包含配置的所有节点。 步骤3:创建索引 ```bash curl -u elastic:elastic -X PUT "http://localhost:9200/test_index?pretty" -H 'Content-Type: application/json' -d' { "settings": { "number_of_shards": 3, "number_of_replicas": 1 } }' ``` 步骤4:写入文档 ```bash curl -u elastic:elastic -X POST "http://localhost:9200/test_index/_doc?pretty" -H 'Content-Type: application/json' -d' { "message": "testing cluster" }' ``` 步骤5:搜索文档 ```bash curl -u elastic:elastic -X GET "http://localhost:9200/test_index/_search?q=message:testing&pretty" ``` 步骤6:验证安全功能(可选) 尝试不带凭证访问,应返回401: ```bash curl -X GET "http://localhost:9200/_cluster/health?pretty" ``` 步骤7:验证集群(如果配置了) 参考引用[3]中的步骤,需要配置远程集群,然后执行跨集群搜索。 步骤8验证证书(如果配置了TLS) 可以通过查看节点间通信的端口(默认为9300)是否使用TLS,或者尝试使用HTTP(非加密)连接节点间的传输端口,应无法连接。 注意:以上步骤中的端口(9200)和主机名(localhost)需要根据实际配置调整。 如果以上步骤均成功,则说明Elasticsearch集群功能正常。 另外,还可以通过Elasticsearch的日志(配置在path.logs目录下)来查看是否有错误信息。 根据引用[5]的配置示例,我们还可以检查每个节点的角色(如node.master和node.data)是否正确。 最后,如果集群中启用了分片分配感知(rack awareness)或其他高级特性,也需要针对这些特性进行验证。 以上是验证Elasticsearch集群功能的基本步骤。</think>### 验证Elasticsearch集群功能的步骤 #### 1. **检查集群健康状态** ```bash curl -X GET "http://localhost:9200/_cluster/health?pretty" ``` - **关键指标**: - `status`:`green`(所有分片正常)/`yellow`(主分片正常但副本缺失)/`red`(主分片缺失) - `number_of_nodes`:确认节点数量配置一致 - `active_shards_percent_as_number`:应接近100% - **示例输出**: ```json { "cluster_name" : "my-application", "status" : "green", "number_of_nodes" : 3, "active_shards_percent_as_number" : 100.0 } ``` #### 2. **验证节点加入状态** ```bash curl -X GET "http://localhost:9200/_cat/nodes?v" ``` - **检查项**: - 所有配置的IP是否出现在列表中(参考引用[5]的`discovery.seed_hosts`) - 节点角色(`node.role`):`m`(master)/`d`(data)/`-`(协调节点) #### 3. **测试数据读写(核心功能验证)** ```bash # 创建测试索引 curl -u elastic:elastic -X PUT "http://localhost:9200/test_index?pretty" -H 'Content-Type: application/json' -d' { "settings": { "number_of_replicas": 1 } }' # 写入文档 curl -u elastic:elastic -X POST "http://localhost:9200/test_index/_doc" -H 'Content-Type: application/json' -d' {"message": "Cluster test"}' # 跨节点查询 curl -u elastic:elastic -X GET "http://localhost:9200/test_index/_search?q=message:test" ``` - **预期结果**: - 返回文档且`_nodes`显示多个节点参查询 - 副本分片自动分配到不同节点(通过`_cat/shards`查看) #### 4. **安全认证验证(若启用)** ```bash # 测试无凭证访问(应失败) curl -X GET "http://localhost:9200/_cluster/health" # 测试带凭证访问(应成功) curl -u elastic:elastic -X GET "http://localhost:9200/_cluster/health" ``` - 需在`elasticsearch.yml`配置`xpack.security.enabled: true`[^3] - 用户密码通过引用[2]方法设置 #### 5. **故障转移测试(高级验证)** 1. 停止一个主节点 2. 30秒内检查: ```bash curl -u elastic:elastic "http://localhost:9200/_cat/master?v" ``` - 应自动选举新master - 集群状态应恢复`green`(需满足副本配置) ### 关键配置检查点 | 配置文件 | 必须项 | 参考位置 | |-------------------|-----------------------------------------------------------------------|---------------| | `elasticsearch.yml`| `cluster.name`一致<br>`node.name`唯一<br>`discovery.seed_hosts`包含所有节点IP | 引用[5] | | | `cluster.initial_master_nodes`(仅首次启动)<br>`network.host: 0.0.0.0` | | | 安全配置 | `xpack.security.enabled: true`<br>证书文件(`elastic-certificates.p12`)同步所有节点 | 引用[3][4] | > **注意**:集群节点需相同大版本(推荐7.x或8.x),且`jvm.options`配置一致避免内存分配问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值