docker elasticsearch容器部署

一、单节点部署过程


1. 拉取镜像

docker pull elasticsearch:7.10.1

2. 创建目录

mkdir -p /opt/docker/elasticsearch/config /opt/docker/elasticsearch/data /opt/docker/elasticsearch/plugins

3. 赋予数据权限

chmod -R +777 /opt/docker/elasticsearch

4. 编辑es配置

echo "http.host: 0.0.0.0" >> /opt/docker/elasticsearch/config/elasticsearch.yml

如果使用8.0以上版本镜像启动失败(因为默认启用了xpack):

echo "xpack.security.enabled: false" >> /opt/docker/elasticsearch/config/elasticsearch.yml

5. 创建容器

docker run --restart=always -it --name elasticsearch --privileged=true -p 9200:9200 -p 9300:9300  -e "discovery.type=single-node" -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /opt/docker/elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/docker/elasticsearch/data:/usr/share/elasticsearch/data -v /opt/docker/elasticsearch/plugins:/usr/share/elasticsearch/plugins -d elasticsearch:7.10.1

elasticsearch.yml是挂载的配置文件

data是挂载的数据,

plugins是es的插件,如ik,而数据挂载需要权限,需要设置data文件的权限为可读可写,需要下边的指令

chmod -R 777 /opt/elasticsearch/data

-e "discovery.type=single-node" 设置为单节点
特别注意:
-e ES_JAVA_OPTS="-Xms256m -Xmx256m" \ 测试环境下,设置ES的初始内存和最大内存,否则导致过大启动不了ES

6. 开放端口

firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
#kibana的
firewall-cmd --permanent --zone=public --add-port=5601/tcp
firewall-cmd --reload
firewall-cmd --list-port

二、集群部署过程

1. 准备工作

#拉取镜像
docker pull elasticsearch:7.10.1
#创建专用网络
docker network create es-net

#为每个节点创建数据目录
mkdir -p /opt/docker/elasticsearch/node1/config /opt/docker/elasticsearch/node1/data /opt/docker/elasticsearch/node1/plugins
mkdir -p /opt/docker/elasticsearch/node2/config /opt/docker/elasticsearch/node2/data /opt/docker/elasticsearch/node2/plugins
mkdir -p /opt/docker/elasticsearch/node3/config /opt/docker/elasticsearch/node3/data /opt/docker/elasticsearch/node3/plugins

2. 节点配置

每个节点的config目录下创建elasticsearch.yml,这是展示es-node1的配置:

#es集群名
cluster.name: my-es
#节点名称,不同节点不同名es-node1,es-node2,es-node3,即docker container——name
node.name: es-node1
node.master: true
#是否存储数据
node.data: true
#你有几台机器就配置几台数量
node.max_local_storage_nodes: 3
#给当前节点自定义属性(可以省略)
#node.attr.rack: r1
#数据存档位置
path.data: /usr/share/elasticsearch/data
#日志存放位置
path.logs: /usr/share/elasticsearch/log
#默认true 
#bootstrap.memory_lock: true
 
#为避免麻烦直接0.0.0.0
network.bind_host: 0.0.0.0
#当前节点ip
network.publish_host: 你的ip
#设置映射端口
http.port: 9200
#内部节点之间沟通端口
transport.tcp.port: 9300
http.cors.enabled: true
http.cors.allow-origin: "*"
 
# node写你机器的ip或者节点名都行
discovery.seed_hosts: ["es-node1:9300","es-node2:9301","es-node3:9302"]
 
#没有zookeeper,所以主节点都是随机选举的
cluster.initial_master_nodes: ["es-node1", "es-node2","es-node3"]
#在群集完全重新启动后阻止初始恢复,直到启动N个节点
#z这个数量一般是总机器数量-1,我3台所以是2 
gateway.recover_after_nodes: 2
#删除索引是是否需要显示其名称,默认为显示
#action.destructive_requires_name: true

3. 权限设置

chmod -R 777 /opt/docker/elasticsearch

4. 端口开放

firewall-cmd --permanent --zone=public --add-port=9200/tcp
firewall-cmd --permanent --zone=public --add-port=9300/tcp
firewall-cmd --permanent --zone=public --add-port=9201/tcp
firewall-cmd --permanent --zone=public --add-port=9301/tcp
firewall-cmd --permanent --zone=public --add-port=9202/tcp
firewall-cmd --permanent --zone=public --add-port=9302/tcp
firewall-cmd --reload

5. 逐个运行容器,每个容器启动后调整内核参数

docker run --restart=always -it --name es-node1 --privileged=true -p 9200:9200 -p 9300:9300 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /opt/docker/elasticsearch/node1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/docker/elasticsearch/node1/data:/usr/share/elasticsearch/data -v /opt/docker/elasticsearch/node1/plugins:/usr/share/elasticsearch/plugins  --net es-net -d elasticsearch:7.10.1
docker exec -it es-node1 bash -c "echo 'vm.max_map_count=262144'>>/etc/sysctl.conf && sysctl -p"

 
docker run --restart=always -it --name es-node2 --privileged=true -p 9201:9201 -p 9301:9301 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /opt/docker/elasticsearch/node2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/docker/elasticsearch/node2/data:/usr/share/elasticsearch/data -v /opt/docker/elasticsearch/node2/plugins:/usr/share/elasticsearch/plugins  --net es-net -d elasticsearch:7.10.1
docker exec -it es-node2 bash -c "echo 'vm.max_map_count=262144'>>/etc/sysctl.conf && sysctl -p"


docker run --restart=always -it --name es-node3 --privileged=true -p 9202:9202 -p 9302:9302 -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -v /opt/docker/elasticsearch/node3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /opt/docker/elasticsearch/node3/data:/usr/share/elasticsearch/data -v /opt/docker/elasticsearch/node3/plugins:/usr/share/elasticsearch/plugins  --net es-net -d elasticsearch:7.10.1
docker exec -it es-node3 bash -c "echo 'vm.max_map_count=262144'>>/etc/sysctl.conf && sysctl -p"

6. 测试

# 测试是否启动成功
curl http://127.0.0.1:9200

# 查看集群健康
curl http://127.0.0.1:9200/_cluster/health

三、kibana安装

1. 直接启动kibana容器

docker pull kibana:7.10.1

docker run --name kibana -e ELASTICSEARCH_HOSTS=http://192.168.191.128:9200 -p 5601:5601 -d kibana:7.10.1

2. 进入容器修改相应内容(测试地址不通时尝试)

server.port: 5601
server.host: 0.0.0.0
elasticsearch.hosts: ["http://192.168.191.128:9200","http://192.168.191.128:9201","http://192.168.191.128:9202"]
i18n.locale: "Zh-CN"

3. 测试

然后访问页面
http://自己的IP地址:5601/app/kibana

firewall-cmd --permanent --zone=public --add-port=5601/tcp
firewall-cmd --list-port

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值