Size: a a a

2019 September 23

GG

George Gaál in DevOps
Andrey
всем привет, может быть кто-то подскажет, хочу поднять кластер эластика в докера на 3 нодах
docker-compose.yml на всех 3 нодах одинаковый

cat docker-compose.yml
version: '2'
services:
 elasticsearch:
   image: docker.elastic.co/elasticsearch/elasticsearch:5.0.2
   restart: always
   container_name: elasticsearch
   environment:
     - bootstrap.memory_lock=true
     - "ES_JAVA_OPTS=-Xms6g -Xmx6g"
     - xpack.security.enabled=false
     - "discovery.zen.ping.unicast.hosts=real_ip_node1:9500,real_ip_node2:9500,real_ip_node3:9500"
   ulimits:
     memlock:
       soft: -1
       hard: -1
   ports:
     - "9400:9200"
     - "9500:9300"
   volumes:
     - ./hunspell:/usr/share/elasticsearch/config/hunspell
     - esdata:/usr/share/elasticsearch/data
     - ./elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml
     - /backup_es/snapshot:/backup_es/snapshot

volumes:
 esdata:
   driver: local

   
тут меняется только node.name
cat elasticsearch.yml 
node1
cluster.name: docker
node.name: n1
network.host: 0.0.0.0
bootstrap.memory_lock: true
xpack.monitoring.enabled: false
cluster.routing.allocation.disk.threshold_enabled: false
discovery.zen.minimum_master_nodes: 2
transport.host: 0.0.0.0
path.repo: ["/backup_es/snapshot"]

node2
cluster.name: docker
node.name: n2
network.host: 0.0.0.0
bootstrap.memory_lock: true
xpack.monitoring.enabled: false
cluster.routing.allocation.disk.threshold_enabled: false
discovery.zen.minimum_master_nodes: 2
transport.host: 0.0.0.0
path.repo: ["/backup_es/snapshot"]


docker exec -it elasticsearch env
PATH=/usr/share/elasticsearch/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=c08afe882535
TERM=xterm
bootstrap.memory_lock=true
ES_JAVA_OPTS=-Xms6g -Xmx6g
xpack.security.enabled=false
discovery.zen.ping.unicast.hosts=real_ip_node1:9500,real_ip_node2:9500,real_ip_node3:9500
JAVA_HOME=/usr/lib/jvm/java-1.8-openjdk
HOME=/usr/share/elasticsearch


в логах второй ноды
[2019-09-22T12:37:38,791][WARN ][o.e.d.z.ZenDiscovery     ] [n2] failed to connect to master [{db3}{FfkGHzdXT-OJhZ8XWZf1BQ}{Mydsy6sqTOOBSZSrszMjsA}{172.23.0.2}{172.23.0.2:9300}], retrying...
org.elasticsearch.transport.ConnectTransportException: [n1][172.23.0.2:9300] connect_timeout[30s]


на первой ноде curl 127.0.0.1:9400/_cat/nodes?v

[2019-09-22T12:38:06,686][WARN ][r.suppressed             ] path: /_cat/nodes, params: {v=}
org.elasticsearch.discovery.MasterNotDiscoveredException
       at org.elasticsearch.action.support.master.TransportMasterNodeAction$AsyncSingleAction$5.onTimeout(TransportMasterNodeAction.java:214) [elasticsearch-5.0.2.jar:5.0.2]

с первой ноды

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' elasticsearch
172.23.0.2


с второй

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' elasticsearch
172.25.0.2


что не так с настройками, почему он коннектится со второй ноды к первой через внутренние айпишки докера или может кто-то такое уже настраивал и поделится конфигами?
Я бы запускал в Нетворк хост моуд, чтобы у эластика был айпишник хоста. Секурити настроил бы файрволлом на хосте
источник

MD

Martin Danielyan in DevOps
George Gaál
Отдели проблему с алертом и с метрикой - это для начала
ок не получаю правилный алерт насчет юзед спеис
источник

GG

George Gaál in DevOps
Я уж не говорю о том, что ценности совать эластик в докер особо нет, если ноды все равно выделенные
источник

GG

George Gaál in DevOps
Martin Danielyan
ок не получаю правилный алерт насчет юзед спеис
А метрика сама норм ?
источник

A

Andrey in DevOps
George Gaál
Я уж не говорю о том, что ценности совать эластик в докер особо нет, если ноды все равно выделенные
там будет не только эластик на нодах, но надо в докере, почему нельзя в докере это все поднять? почему такие сложности?
источник

GG

George Gaál in DevOps
Andrey
там будет не только эластик на нодах, но надо в докере, почему нельзя в докере это все поднять? почему такие сложности?
Кто сказал, что надо в докере?
источник

GG

George Gaál in DevOps
😳
источник

GG

George Gaál in DevOps
Martin Danielyan
ок не получаю правилный алерт насчет юзед спеис
Смотри
источник

GG

George Gaál in DevOps
Для вдохновения
источник

GG

George Gaál in DevOps
источник

N

Navern in DevOps
George Gaál
Кто сказал, что надо в докере?
Надо значит надо:)
источник

N

Navern in DevOps
Пусть в доцкере поднимает, норм тема
источник

ЕО

Евгений Омельченко in DevOps
Martin Danielyan
И он не корректно подсчитывает процент занятого места.
Это касается только thin provisioning, с нормальными разделами node_exporter нормально работает
источник

GG

George Gaál in DevOps
источник

GG

George Gaál in DevOps
Евгений Омельченко
Это касается только thin provisioning, с нормальными разделами node_exporter нормально работает
Реально подтверждаешь проблему ?
источник

GG

George Gaál in DevOps
Navern
Пусть в доцкере поднимает, норм тема
Заняться не чем людям )
источник

A

Andrey in DevOps
George Gaál
Кто сказал, что надо в докере?
потому что сейчас 1 нода уже в докере
источник

GG

George Gaál in DevOps
Пока коллега разбирается со странными проблемами - я б уже ансиблом раскатил эластик официальным или полуофициальные плейбуком
источник

GG

George Gaál in DevOps
Я уж не говорю, что при _пересоздании_ контейнера у него хостнейм поменяется
Как отреагирует стейтфул приложение типа эластика на это - хз.
(*) Можно хостнеймы и айпи в докере зафиксировать.
источник

СХ

Старый Хрыч in DevOps
George Gaál
Я уж не говорю, что при _пересоздании_ контейнера у него хостнейм поменяется
Как отреагирует стейтфул приложение типа эластика на это - хз.
(*) Можно хостнеймы и айпи в докере зафиксировать.
🙄и зачем его вообще в докер
источник