一、环境配置
1.查看max_map_count的值 默认是65530
cat /proc/sys/vm/max_map_count
2.设置max_map_count的值,因为ES 的默认分配的内存太较大,进程会被自动杀死。
sysctl -w vm.max_map_count=262144
二、下载镜像、创建挂载目录及文件
1.拉取镜像: https://hub.docker.com/_/elasticsearch?tab=tags
docker pull elasticsearch:7.16.3
2.创建挂载目录
# 创建目录
mkdir -p /usr/local/elasticsearch/data
mkdir -p /usr/local/elasticsearch/config
# 授予权限
chmod 777 /usr/local/elasticsearch/data
chmod 777 /usr/local/elasticsearch/config
3.创建配置文件
cd /usr/local/elasticsearch/config
touch elasticsearch.yml
vim elasticsearch.yml
添加配置:
# ======================== Elasticsearch Configuration =========================
cluster.name: my-application
cluster.initial_master_nodes: ["node-1"]
node.name: node-1
network.host: 0.0.0.0
http.port: 9200
三、创建容器
3.1 单节点
docker run -d --restart=always --name elasticsearch \
-p 9200:9200 -p 9300:9300 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-v /usr/local/elasticsearch/data:/usr/share/elasticsearch/data \
-v /usr/local/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /etc/localtime:/etc/localtime:ro \
elasticsearch:7.16.3
3.2 集群
3.2.1 节点配置
# es1.yml
cluster.name: elasticsearch-cluster
node.name: es-node1
network.bind_host: 0.0.0.0
network.publish_host: 192.168.252.160
http.port: 9200
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.252.160:9300","192.168.252.160:9301"]
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: es-node1
# es2.yml
cluster.name: elasticsearch-cluster
node.name: es-node2
network.bind_host: 0.0.0.0
network.publish_host: 192.168.252.160
http.port: 9201
transport.tcp.port: 9301
http.cors.enabled: true
http.cors.allow-origin: "*"
node.master: true
node.data: true
discovery.zen.ping.unicast.hosts: ["192.168.252.160:9300","192.168.252.160:9301"]
discovery.zen.minimum_master_nodes: 1
cluster.initial_master_nodes: es-node1
3.2.2 创建容器
# 节点1
docker run -d --restart=always --name es1 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-p 9200:9200 -p 9300:9300 \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/elasticsearch/node1/data:/usr/share/elasticsearch/data \
-v /usr/local/elasticsearch/node1/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
elasticsearch:7.16.3
# 节点2
docker run -d --restart=always --name es2 \
-e ES_JAVA_OPTS="-Xms512m -Xmx512m" \
-p 9201:9201 -p 9301:9301 \
-v /etc/localtime:/etc/localtime:ro \
-v /usr/local/elasticsearch/node2/data:/usr/share/elasticsearch/data \
-v /usr/local/elasticsearch/node2/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
elasticsearch:7.16.3
如无报错,打开浏览器输入:http://IP:9200/看到入如下信息表示安装成功:
{
"name" : "node-1",
"cluster_name" : "my-application",
"cluster_uuid" : "1eGfPnFuR0-_rdn5aP9CAw",
"version" : {
"number" : "7.16.3",
"build_flavor" : "default",
"build_type" : "docker",
"build_hash" : "4e6e4eab2297e949ec994e688dad46290d018022",
"build_date" : "2022-01-06T23:43:02.825887787Z",
"build_snapshot" : false,
"lucene_version" : "8.10.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
四、配置跨域
4.1 进入容器
由于要进行配置,因此需要进入容器当中修改相应的配置信息。
docker exec -it 容器id /bin/bash
4.2 进行配置
# 显示文件
ls
结果如下:
LICENSE.txt README.textile config lib modules
NOTICE.txt bin data logs plugins
# 进入配置文件夹
cd config
# 显示文件
ls
结果如下:
elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles
elasticsearch.yml jvm.options role_mapping.yml users
# 修改配置文件
vi elasticsearch.yml
# 加入跨域配置
http.cors.enabled: true
http.cors.allow-origin: "*"
安装配置完成。