У меня есть кластерasticsearch, развернутый в кластере kubernetes с 4 узлами.Ниже приведено описание эластичного поиска:
es-master (запущено 3 выделенные реплики)
es-клиент (запущено 2 выделенные реплики)
es-data (запущено 2 выделенные реплики))
Все 7 вышеперечисленных узлов работают в кластере кубов из 4 узлов.Но когда я перезагружаю один кластер kubernetes, на котором запущен 1 клиентский узел, кластерasticsearch не отвечает на запрос, и URL-адрес кластера эластичного поиска не работает .
Я подумал, что после нескольких реплик это должно работать нормально.Любая идея, как сделать так, чтобы URL-адресasticseach функционировал всегда.
Сценарий Python, проверяющий состояние кластера es:
## Cluster health ##
url = 'http://<es-cluster>:30000/_cluster/health'
headers = {'content-type': 'application/json'}
get_reg = requests.get(url, timeout = 60, headers=headers)
if (get_req.status_code != 200):
print ( "Error- cluster request failed" )
print get_req.status_code
print get_req.text
break
print ("passed")
print get_req.status_code
print get_req.text
time.sleep(1)
Вывод, когда все работает:
passed
200
{"cluster_name":"ebs_elastic","status":"green","timed_out":false,"number_of_nodes":7,"number_of_data_nodes":2,"active_primary_shards":46,"active_shards":92,"relocating_shards":0,"initializing_shards":0,"unassigned_shards":0,"delayed_unassigned_shards":0,"number_of_pending_tasks":0,"number_of_in_flight_fetch":0,"task_max_waiting_in_queue_millis":0,"active_shards_percent_as_number":100.0}
Вывод, когда один узел не работает:
hemanty-mac-0:Desktop hemanty$ python ping.py
Traceback (most recent call last):
File "ping.py", line 25, in <module>
post_req = requests.get(url, timeout = 60, headers=headers)
File "/Library/Python/2.7/site-packages/requests-2.19.1-py2.7.egg/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "/Library/Python/2.7/site-packages/requests-2.19.1-py2.7.egg/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/Library/Python/2.7/site-packages/requests-2.19.1-py2.7.egg/requests/sessions.py", line 512, in request
resp = self.send(prep, **send_kwargs)
File "/Library/Python/2.7/site-packages/requests-2.19.1-py2.7.egg/requests/sessions.py", line 622, in send
r = adapter.send(request, **kwargs)
File "/Library/Python/2.7/site-packages/requests-2.19.1-py2.7.egg/requests/adapters.py", line 513, in send
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPConnectionPool(host='<es-cluster>', port=30000): Max retries exceeded with url: /_cluster/health (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x108765f90>: Failed to establish a new connection: [Errno 51] Network is unreachable',))
Обратите внимание, Я не вижу простоев при перезапуске любого POD, такого как мастер, клиент или данные .Это происходит только при перезагрузке узла kubernetes.