Как запустить службу обнаружения Presto автономно?

#presto #trino

#presto #trino

Вопрос:

Как запустить службу обнаружения Presto в автономном режиме, чтобы она не была ни координатором, ни работником? Каковы требования к конечной точке HTTP, чтобы стать службой обнаружения для кластера Presto?

Я нашел эту тему в списке рассылки presto-users, где Дэвид Филлипс написал:

Если вы хотите запустить discovery как автономную службу, отдельную от Presto, это вариант. Раньше мы публиковали инструкции для этого, но избавились от них много лет назад, поскольку запуск обнаружения внутри координатора работал нормально (даже на больших кластерах с сотнями машин).

Это все еще сохраняется?

Ответ №1:

Да, вы можете запустить автономную службу обнаружения. Случаи для этого редки, и в целом я рекомендую просто запустить его на координаторе.

На вашем узле обнаружения:

  1. Загрузите службу обнаружения tar.gz с версией, совместимой с вашими узлами Presto. (например, версия presto 347 совместима со службой обнаружения 1.29) и удалите ее в каталог.
  2. Аналогично настройке сервера Presto, создайте /etc каталог в корне службы и настройте node.properties и jvm.config.
  3. Добавьте config.properties, который для службы обнаружения так же прост, как это.
     http-server.http.port=8081
 
  1. Обновите эти строки в вашем coordinator / worker config.properties.
     discovery-server.enabled=false
    discovery.uri=http://discovery.example.com:8081
 
  1. Перезапустите свои службы. (Служба обнаружения запускается так же, как службы presto запускаются с помощью bin/launcher )
  2. Как только все серверы и рабочие появятся, вы сможете проверить curl -XGET http://discovery.example.com:8081/v1/service и должны ожидать увидеть некоторые выходные данные, содержащие:
 {
  "environment": "production",
  "services": [
    {
      "id": "d2b7141e-d83f-4d23-be86-285ff2a9f53d",
      "nodeId": "57ac8bd3-c55e-4170-b363-80d10023ece8",
      "type": "presto",
      "pool": "general",
      "location": "/57ac8bd3-c55e-4170-b363-80d10023ece8",
      "properties": {
        "node_version": "347",
        "coordinator": "true",
        "http": "http://coord.example.com:8080",
        "http-external": "http://coord.example.com:8080",
        "connectorIds": "system"
      }
    },
    {
      "id": "f0abafae-052a-4758-95c6-d19355043bc6",
      "nodeId": "57ac8bd3-c55e-4170-b363-80d10023ece8",
      "type": "presto-coordinator",
      "pool": "general",
      "location": "/57ac8bd3-c55e-4170-b363-80d10023ece8",
      "properties": {
        "http": "http://coord.example.com:8080",
        "http-external": "http://coord.example.com:8080"
      }
    },
    {
      "id": "1f5096de-189e-4e25-bac3-adc079981d86",
      "nodeId": "8d7e820f-dd01-4227-ad6e-f74b97202647",
      "type": "presto",
      "pool": "general",
      "location": "/8d7e820f-dd01-4227-ad6e-f74b97202647",
      "properties": {
        "node_version": "347",
        "coordinator": "false",
        "http": "http://worker1.example.com:8080",
        "http-external": "http://worker1.example.com:8080",
        "connectorIds": "system"
      }
    },
    ....

  ]
}
 

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

1. Ах, так эта служба обнаружения больше похожа на airlift — способ обнаружения служб, который Presto является одним из многих, да ?!

2. Я не уверен, что точно понимаю, но Presto внутренне использует airlift для обнаружения и другого взаимодействия с внутренним узлом через REST. Таким образом, нет способа переброски по воздуху против способа Presto. Это всего лишь способ запуска службы обнаружения самостоятельно, а не на узле координатора. Имеет ли это смысл?

3. Airlift предшествует Presto. Мы создали его и открыли исходный код, когда работали в Proofpoint. Это был инструментарий, который мы использовали для создания всех наших распределенных сервисов. Когда мы начали работать над Presto в Facebook, мы использовали многие части Airlift, включая Discovery.