кросс-кластерный эластичный поиск на kuberntes

#elasticsearch #kubernetes #kibana #elasticsearch-7

#elasticsearch #kubernetes #kibana #elasticsearch-7

Вопрос:

У меня есть 2 кластера эластичных кластеров на 2 разных виртуальных машинах kubernetes, которые я пытался подключить к перекрестному кластеру. но это не работает, я добавляю подробности ниже, может кто-нибудь помочь и сказать мне, что я сделал не так или пропустил? Я попытался соединить одну резинку с другой, как показано ниже:

ПОЛУЧИТЬ _cluster/настройки

 {
  "persistent" : {
    "cluster" : {
      "remote" : {
        "cluster_three" : {
          "mode" : "proxy",
          "proxy_address" : "122.22.111.222:30005"
        },
        "cluster_two" : {
          "mode" : "sniff",
          "skip_unavailable" : "false",
          "transport" : {
            "compress" : "true"
          },
          "seeds" : [
            "122.22.222.182:30005"
          ]
        },
        "cluster_one" : {
          "seeds" : [
            "127.0.0.1:9200"
          ],
          "transport" : {
            "ping_schedule" : "30s"
          }
        }
      }
    }
  },
  "transient" : { }
      }
    }
 

Я попытался выполнить поиск во втором кластере и получил следующую ошибку:

 {"statusCode":502,"error":"Bad Gateway","message":"Client request timeout"}
 

но когда я делаю curl на эластичном для cluste_two, я получаю это :
curl 122.22.222.182:30005

 {
  "name" : "elasticsearch-client-7dcc49ddsdsd4-ljwasdpl",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "bOkaIrcFTgetsadaaY114N4a1EQ",
  "version" : {
    "number" : "7.10.2",
    "build_flavor" : "oss",
    "build_type" : "docker",
    "build_hash" : "747e1cc71def077253878a59143c1f785asdasafa92b9",
    "build_date" : "2021-01-13T00:42:12.435326Z",
    "build_snapshot" : false,
    "lucene_version" : "8.7.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
 

это мой svc, настроенный в kubernetes для cluste_two:

 NAME                      TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
elasticsearch-client      NodePort    10.111.11.28   <none>        9200:30005/TCP   27m
elasticsearch-discovery   ClusterIP   10.111.11.11   <none>        9300/TCP         27m
 

Ответ №1:

Обнаружение Elasticsearch работает на порту 9300 вместо 9200, пока вы запускаете curl, он передается как запрос клиента через порт 30005.

Пожалуйста, проверьте, что 9300 открыт для подключения кросс-кластера. поскольку ваша служба elasticsearch-discovery работает как ClusterIP, вам, возможно, придется изменить ее тип, чтобы выставить ее из K8s, используя NodePort LoadBalancer в соответствии с требованиями.

например

 # From cluster 1, we’ll define how the cluster-2 can be accessed
PUT /_cluster/settings
{
  "persistent" : {
    "cluster" : {
      "remote" : {
        "us-cluster" : {
          "seeds" : [
            "127.0.0.1:9300"
          ]
        }
      }
    }
  }
}
 

вы также можете посмотреть: https://www.elastic.co/blog/cross-datacenter-replication-with-elasticsearch-cross-cluster-replication

Комментарии:

1. может ли это работать также с конечными точками, такими как: XX.XX.XX.XX / elastic?

2. с портом 9200 или 9300?