部署步骤
docker安装部署
#更新yum源(一下均为root用户)
yum update
#安装docker
yum remove docker-ce -y && yum install docker-ce -y && service docker start
#docker启动
systemctl start docker
#docker设置开机启动
systemctl enable docker
#docker停止
systemctl stop docker
#有时候需要使用这种命令启动
systemctl start docker.service
systemctl enable docker.service
docker镜像配置
在宿主机器编辑文件:vim /etc/docker/daemon.json#请在该配置文件中加入(没有该文件的话,请先建一个):
{
"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
Elasticsearch安装部署
拉取指定版本镜像
#拉取镜像 docker pull elasticsearch:7.7.0
从官网拉取最新(目前最新是7.16.0)
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.16.0
docker images 命令查看镜像列表docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elasticsearch 7.7.0 7ec4f35ab452 15 months ago 757MB
初始化es配置文件
-- 拉取es镜像 docker pull elasticsearch:7.2.0 --创建挂载目录[data:存放索引数据,plugins:存放es插件] mkdir -p /esdata/elasticsearch mkdir -p /esdata/elasticsearch/data mkdir -p /esdata/elasticsearch/data/data1 mkdir -p /esdata/elasticsearch/data/data2 mkdir -p /esdata/elasticsearch/data/data3 mkdir -p /esdata/elasticsearch/plugins mkdir -p /esdata/elasticsearch/plugins/plugins1 mkdir -p /esdata/elasticsearch/plugins/plugins2 mkdir -p /esdata/elasticsearch/plugins/plugins3
-- 设置执行权限 chmod 777 /esdata/elasticsearch/data/data1 chmod 777 /esdata/elasticsearch/data/data2 chmod 777 /esdata/elasticsearch/data/data3 --data1/data2/data3 分别创建es.yml [network.publish_host:填写服务器ip] vim /esdata/elasticsearch/config/es1.yml ->> cluster.name: elasticsearch-cluster cluster.initial_master_nodes : es-node1 node.name: es-node1 node.master: true node.data: true network.bind_host: 0.0.0.0 network.publish_host: 192.168.1.127 http.port: 9201 transport.tcp.port: 9301 http.cors.enabled: true http.cors.allow-origin: "*" discovery.zen.ping.unicast.hosts: ["192.168.1.127:9301","192.168.1.127:9302","192.168.1.127:9303"] vim /esdata/elasticsearch/config/es2.yml ->> cluster.name: elasticsearch-cluster node.name: es-node2 node.master: false node.data: true network.bind_host: 0.0.0.0 network.publish_host: 192.168.1.127 http.port: 9202 transport.tcp.port: 9302 http.cors.enabled: true http.cors.allow-origin: "*" discovery.zen.ping.unicast.hosts: ["192.168.1.127:9301","192.168.1.127:9302","192.168.1.127:9303"] vim /esdata/elasticsearch/config/es3.yml ->> cluster.name: elasticsearch-cluster node.name: es-node3 node.master: false node.data: true network.bind_host: 0.0.0.0 network.publish_host: 192.168.1.127 http.port: 9203 transport.tcp.port: 9303 http.cors.enabled: true http.cors.allow-origin: "*" discovery.zen.ping.unicast.hosts: ["192.168.1.127:9300","192.168.1.127:9301","192.168.1.127:9302"]
调高JVM线程数限制数量
vim /etc/sysctl.conf ->> vm.max_map_count=262144
刷新配置
sysctl -p
服务部署
es集群部署
# 服务1
docker run -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-d -p 9201:9201 -p 9301:9301 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v /esdata/elasticsearch/config/es1.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /esdata/elasticsearch/data/data1/:/usr/share/elasticsearch/data/ \
-v /esdata/elasticsearch/plugins/plugins1/:/usr/share/elasticsearch/plugins \
--restart=always \
--name ES01 \
elasticsearch:7.2.0
# 服务2
docker run -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-d -p 9202:9202 -p 9302:9302 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v /esdata/elasticsearch/config/es2.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /esdata/elasticsearch/data/data2/:/usr/share/elasticsearch/data/ \
-v /esdata/elasticsearch/plugins/plugins2/:/usr/share/elasticsearch/plugins \
--restart=always \
--name ES02 \
elasticsearch:7.2.0
# 服务3
docker run -e ES_JAVA_OPTS="-Xms2048m -Xmx2048m" \
-d -p 9203:9203 -p 9303:9303 \
-e ES_MIN_MEM=128m \
-e ES_MAX_MEM=4096m \
-v /esdata/elasticsearch/config/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml \
-v /esdata/elasticsearch/data/data3/:/usr/share/elasticsearch/data/ \
-v /esdata/elasticsearch/plugins/plugins3/:/usr/share/elasticsearch/plugins \
--restart=always \
--name ES03 \
elasticsearch:7.2.0
防火墙设置
# 防火墙设置
firewall-cmd --add-port=9301/tcp
firewall-cmd --add-port=9302/tcp
firewall-cmd --add-port=9303/tcp
firewall-cmd --add-port=9200/tcp
firewall-cmd --add-port=9201/tcp
firewall-cmd --add-port=9202/tcp
firewall-cmd --add-port=9203/tcp
firewall-cmd --complete-reload
确认集群配置
在浏览器打开 http://192.168.1.127:9200/_cat/nodes?pretty
IK分词器安装
# 进入容器 docker exec -it ES01 bash # 在线安装 elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.2.0/elasticsearch-analysis-ik-7.2.0.zip
# 复制es1安装的插件到es2和es3 cp -rf /esdata/elasticsearch/plugins/plugins1/analysis-ik /home/creationpoint/software/elasticsearch/config/plugins2/ cp -rf /esdata/elasticsearch/plugins/plugins1/analysis-ik /home/creationpoint/software/elasticsearch/config/plugins3/ # 重启es docker restart ES01 docker restart ES02 ES03
elasticsearch-head 部署
部署elasticsearch-head 便于管理es数据docker run -d \
--name=elasticsearch-head \
-p 9100:9100 \
-m 512m \
--memory-swap=1024m \
mobz/elasticsearch-head:5
确认效果
ES负载均衡
nginx配置es负载均衡修改nginx配置文件
#修改nginx配置文件
vim /home/jamelli/software/nginx/conf.d/default.conf
->>
upstream es{
least_conn; #把请求转发给连接数较少的后端服务器
server 192.168.1.127:9201;#ES对应的ip:port
server 192.168.1.127:9202;
server 192.168.1.127:9203;
}
server {
listen 9210;
server_name localhost;
underscores_in_headers on;
location / {
proxy_set_header Host $host:$server_port;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://es;
}
}
# 重新加载nginx使生效(二选一)
docker restart nginx
nginx -s reload
此刻访问服务器的9210端口会负载均衡到es集群上,测试一下。看下图可以看到已经可以轮询es了
来源:https://www.iwmyx.cn/dockerbsesjqesfc.html
https://www.iwmyx.cn/zdockerzbselasticsearc.html
https://blog.csdn.net/Jamel_LiToo/article/details/110070741