docker 部署 ES集群
1. 安装docker
在/opt/software 目录下新建docker目录,上传docker_build.sh脚本并执行
sh docker_build.sh
#!/bin/bash
yum -y install gcc
yum -y install gcc-c++
##验证gcc版本
gcc -v
##卸载老版本
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
##更新yum软件包索引
yum makecache fast
## 安装docker ce
yum -y install docker-ce
## 启动docker
systemctl start docker
docker version
## 创建加速器
cd /etc/docker
if [ ! -f "$daemon.json" ]; then
touch "$daemon.json"
else
rm -rf daemon.json
touch "$daemon.json"
fi
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["输入自己的加速器地址"]
}
EOF
systemctl daemon-reload
systemctl restart docker
2. 创建es配置文件
在/opt/software/es/config下新建 elasticsearch.yml 文件并编辑
每台服务器注意区分节点名称及IP
#集群名称 所有节点名称一致
cluster.name: scan-es-clusters
#当前该节点的名称,每个节点不能重复scan-es-node-1,scan-es-node-2,scan-es-node-3...
node.name: scan-es-node-1
#当前该节点是不是有资格竞选主节点
node.master: true
#当前该节点是否存储数据
node.data: true
#设置索引分片数
#index.number_of_shards: 20
#设置索引副本数
#index.number_of_replicas: 1
#设置为公开访问
network.host: 0.0.0.0
#设置其它节点和该节点交互的本机器的ip地址
network.publish_host: 192.168.3.126
# 设置映射端口
http.port: 9200
# 内部节点之间沟通端口
transport.tcp.port: 9300
#支持跨域访问
http.cors.enabled: true
http.cors.allow-origin: "*"
#配置集群的主机地址
discovery.seed_hosts: ["192.168.3.126", "192.168.3.127", "192.168.3.128"]
#初始主节点,使用一组初始的符合主条件的节点引导集群
cluster.initial_master_nodes: ["scan-es-node-1", "scan-es-node-2", "scan-es-node-3"]
#节点等待响应的时间,默认值是30秒,增加这个值,从一定程度上会减少误判导致脑裂
discovery.zen.ping_timeout: 30s
#配置集群最少主节点数目,通常为 (可成为主节点的主机数目 / 2) + 1
discovery.zen.minimum_master_nodes: 2
#配置集群最少正常工作节点数
#gateway.recover_after_nodes: 2
#禁用交换内存,提升效率
bootstrap.memory_lock: true
# http传输内容的最大容量
http.max_content_length: 200mb
3. 服务器优化配置
- root用户修改/etc/security/limits.conf,添加如下,提高进程及资源使用限制上限
* soft nofile 65536
* hard nofile 65536
* soft nproc 32000
* hard nproc 32000
* hard memlock unlimited
* soft memlock unlimited
- 执行命令使其生效
source /etc/profile
- 修改/etc/systemd/system.conf,添加如下
DefaultLimitNOFILE=65536
DefaultLimitNPROC=32000
DefaultLimitMEMLOCK=infinity
- 重启服务器,或执行下面两个命令使其配置生效
systemctl daemon-reload
systemctl daemon-reexec
- 修改虚拟内存最大映射数
系统虚拟内存默认最大映射数为65530,无法满足ES系统要求,需要调整为262144以上。
vim /etc/sysctl.conf
#添加参数
vm.max_map_count = 262144
- 重新加载/etc/sysctl.conf配置
sysctl -p
4. 安装es 7.17.4
-
拉取镜像
docker pull elasticsearch:7.17.4
-
es 数据挂在的目录设置读写权限
chmod -R 777 /data/elasticsearch/
-
启动es
注意:我们启动参数设置的-Xms4g -Xmx4g,根据服务器内存实际情况调整。
● Xms 为jvm启动是分配的最大内存
● Xmx 为jvm运行过程分配的最大内存
● Xss 为jvm启动的每个线程分配的内存大小,jdk1.5+默认1Mdocker run -d -p 9200:9200 -p 9300:9300 \ -e "ES_JAVA_OPTS=-Xms4g -Xmx4g" \ -v /opt/software/es/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml \ -v /opt/software/es/plugins:/usr/share/elasticsearch/plugins \ -v /data/elasticsearch/data:/usr/share/elasticsearch/data \ --name elasticsearch \ --restart=always \ elasticsearch:7.17.4
-
使用docker ps -a 发现容器频繁启动,查看日志发现有报错,重启一下服务器
docker ps -a docker logs -f elasticsearch ERROR: [1] bootstrap checks failed. You must address the points described in the following [1] lines before starting Elasticsearch. bootstrap check failure [1] of [1]: memory locking requested for elasticsearch process but memory is not locked
5. 安装head插件(版本太老,不推荐)
-
拉取镜像
docker pull mobz/elasticsearch-head:5-alpine
-
启动ElasticSearch-head
docker run -d -p 9100:9100 \ --name elasticsearch-head \ --restart=always \ mobz/elasticsearch-head:5-alpine
-
ElasticSearch-Head请求Content-Type问题及连接服务器问题
进入elasticsearch-head容器内部,修改vendor.js及app.js文件
docker exec -it 容器id /bin/sh
vi /usr/src/app/_site/vendor.js
6886行 contentType: "application/x-www-form-urlencoded
改成 contentType: "application/json;charset=UTF-8"
7573行 var inspectData = s.contentType === "application/x-www-form-urlencoded" &&`
改成 var inspectData = s.contentType === "application/json;charset=UTF-8" &&
vi /usr/src/app/_site/app.js
4328行 this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://localhost:9200";
将localhost修改为对应es服务器的IP地址,例如192.168.3.126
-
退出并重启容器
ctrl + p + q docker restart 容器id
-
web访问
http://192.168.3.126:9100/ http://192.168.3.127:9100/ http://192.168.3.128:9100/
6. 安装kibana插件
-
ifconfig查看docker网卡IP,例如:172.17.0.1
ifconfig
-
拉取镜像
docker pull kibana:7.17.4
-
启动容器文章来源:https://www.toymoban.com/news/detail-413990.html
docker run -d -p 5601:5601 -e ELASTICSEARCH_HOSTS=http://172.17.0.1:9200 --name kibana --restart=always kibana:7.17.4
-
web访问文章来源地址https://www.toymoban.com/news/detail-413990.html
http://192.168.3.126:5601 http://192.168.3.127:5601 http://192.168.3.128:5601
到了这里,关于docker 部署 ES集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!