在搭建ES集群中,主要有master节点和数据节点,master节点里面选一个作为主节点,其余的master节点是防止主节点宕机,数据节点储存的是真实ES数据的分片信息,类似于hdfs的冗余存储的方式。
下面搭建3master和3数据节点的ES集群,保证集群的高可用性。
- Docker 创建容器时默认采用 bridge 网络,自行分配 ip,不允许自己指定,所以需要创建自己的 bridge 网络:mynet。并可以查看网路信息
docker network create --driver bridge --subnet=172.18.12.0/16 --gateway=172.18.1.1 mynet
docker network inspect mynet
- 创建master节点
for port in $(seq 1 3); \
do \
mkdir -p /mydata/elasticsearch/master-${
port}/config
mkdir -p /mydata/elasticsearch/master-${
port}/data
chmod -R 777 /mydata/elasticsearch/master-${
port}
cat << EOF >/mydata/elasticsearch/master-${
port}/config/elasticsearch.yml
cluster.name: my-es
node.name: es-master-${
port}
node.master: true #该节点有机会成为 master 节点
node.data: false #该节点可以存储数据
network.host: 0.0.0.0
http.host: 0.0.0.0
http.port: 920${
port}
transport.tcp.port: 930${
port}
discovery.zen.ping_timeout: 10s
discovery.seed_hosts: ["172.18.12.21:9301", "172.18.12.22:9302", "172.18.12.23:9303"]
cluster.initial_master_nodes: ["172.18.12.21"]
EOF
docker run --name elasticsearch-node-${
port} \
-p 920${
port}:920${
port} -p 930${
port}:930${
port