I had one openstack instance which is red hat linux and its elastic ip is 10.157.166.142.The following is the information for the linux:[docker@bigdata data]$ cat /etc/redhat-release
Red Hat Enterprise Linux Server release 7.5 (Maipo)
docker0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 0.0.0.0
inet6 fe80::42:16ff:fe51:fd7f prefixlen 64 scopeid 0x20<link>
ether 02:42:16:51:fd:7f txqueuelen 0 (Ethernet)
RX packets 4991 bytes 10991244 (10.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 1932 bytes 135756 (132.5 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1450
inet 192.168.0.14 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::f816:3eff:fe71:7997 prefixlen 64 scopeid 0x20<link>
ether fa:16:3e:71:79:97 txqueuelen 1000 (Ethernet)
RX packets 691428 bytes 1209779192 (1.1 GiB)
RX errors 0 dropped 2 overruns 0 frame 0
TX packets 346155 bytes 127969852 (122.0 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0Stand-alone Installationwhen I installed elasticsearch in this server, I could not access to it via http://10.157.166.142:9200 from my local window pc which in the same internal network.and I tried to find the ports which are listenning, but I could not find 9200. and finally, It seems that we need to change the elasticsearch.yml to make it work to be accessedby other pc within the same internal networknetwork.host: 0.0.0.0http.port: 9200and also we need to add following rule to the iptables-A IN_public_allow -p tcp -m tcp --dport 9200-m conntrack --ctstate NEW -j ACCEPT
Docker InstallationAlso we are using the official docker containers to install elasticsearch, but I find it still could not access to external network which linux host can. and with a lot of time search across bing.com, I find the root cause for my case is that the mtu is not the same for eth0 and docker0, so I changed the docker-compose.yaml to include more things. and then I tried It can connect to the external network as linux host.
networks:
esnet:
driver_opts:
com.docker.network.driver.mtu: 1450
the docker-compose.yml is as belowversion: '2.2'
services:
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
container_name: elasticsearch
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- SERVER_HOST="0.0.0.0"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata1:/usr/share/elasticsearch/data
ports:
- 9200:9200
- 9300:9300
networks:
- esnet
elasticsearch2:
image: docker.elastic.co/elasticsearch/elasticsearch:6.7.0
container_name: elasticsearch2
environment:
- cluster.name=docker-cluster
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- "discovery.zen.ping.unicast.hosts=elasticsearch"
ulimits:
memlock:
soft: -1
hard: -1
nofile:
soft: 65536
hard: 65536
volumes:
- esdata2:/usr/share/elasticsearch/data
networks:
- esnet
kibana:
image: docker.elastic.co/kibana/kibana:6.7.0
ports:
- 5601:5601
networks:
- esnet
volumes:
esdata1:
driver: local
esdata2:
driver: local
networks:
esnet:
driver_opts:
com.docker.network.driver.mtu: 1450