基于docker的集群搭建

2.3.2.1 环境准备

​ 1.搭建docker

​ 要想在docker上搭建solr集群,首先安装docker的环境。这个就不再演示,如果没有学过docker的同学可以参考下面的视频地址进行学习。

​ https://www.boxuegu.com/freecourse/detail-1553.html

​ 如果学习过但是忘了如何搭建,参考一下地址。

​ https://www.runoob.com/docker/centos-docker-install.html

  1. 拉取zookeeper镜像和solr的镜像,采用的版本是3.4.14和7.7.2

    docker pull zookeeper:3.4.14
    docker pull solr:7.7.2
    

    遇到问题:

    Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

    原因:

    可能是上一次的docker没有成功退出导致的,所以要重新启动docker

    解决办法:

    systemctl start docker.service

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fhxpesQ2-1672214916033)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221222150059103.png)]

    查看拉取镜像

    docker images
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sqGlKfoQ-1672214916034)(imgs\2020-02-24_230838.png)]

2.3.2.2 搭建zookeeper集群

​ 搭建zookeeper集群,我们需要利用我们刚才拉取的zookeeper的镜像创建3个容器。并且让他们产生集群关系。

​ 单独创建一个桥接网卡

docker network create itcast-zookeeper
docker network ls
1.容器1创建
docker run -id --restart=always -v /opt/docker/zookeeper/zoo1/data:/data -v /opt/docker/zookeeper/zoo1/datalog:/datalog -e ZOO_MY_ID=1 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2181:2181--name=zookeeper1 --net=itcast-zookeeper--privileged zookeeper:3.4.14docker run -id --restart=always -v /opt/docker/zookeeper/zoo1/data:/data -v /opt/docker/zookeeper/zoo1/datalog:/datalog -e ZOO_MY_ID=1 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2181:2181  --name=zookeeper1 --privileged --net=itcast-zookeeper zookeeper:3.4.14说明:--restart:docker重启,容器重启。-d:守护式方式运行方式,除此之外还有-it-v:目录挂载,用宿主机/opt/docker/zookeeper/zoo1/data,映射容器的/data目录-e:指定环境参数。分别指定了自己的id,集群中其他节点的地址,包含通信端口和投票端口--name:容器的名称-p:端口映射,用宿主机2181映射容器 2181,将来我们就需要通过本机2181访问容器。--privileged:开启特权,运行修改容器参数--net=itcast-zookeeper 指定桥接网卡zookeeper:3.4.14:创建容器的镜像

​ 查看创建好的容器

docker ps

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OVmDmvjl-1672214916034)(imgs\2020-02-24_172947.png)]

​ 查看宿主机的目录,该目录映射的就是zookeeper1容器中的data目录。

cd /opt/docker/zookeeper/zoo1/data

​ 查看Zookeeper节点的id

cat myid
2.容器2创建
docker run -d --restart=always -v /opt/docker/zookeeper/zoo2/data:/data -v /opt/docker/zookeeper/zoo2/datalog:/datalog -e ZOO_MY_ID=2 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2182:2181--name=zookeeper2--net=itcast-zookeeper--privileged zookeeper:3.4.14docker run -d --restart=always -v /opt/docker/zookeeper/zoo2/data:/data -v /opt/docker/zookeeper/zoo2/datalog:/datalog -e ZOO_MY_ID=2 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2182:2181 --name=zookeeper2 --net=itcast-zookeeper --privileged zookeeper:3.4.14说明:需要修改目录挂载。修改Zookeeper的id端口映射:用宿主机2182 映射容器 2181容器名称:zookeeper2
3.容器3创建
docker run -d --restart=always -v /opt/docker/zookeeper/zoo3/data:/data -v /opt/docker/zookeeper/zoo3/datalog:/datalog -e ZOO_MY_ID=3-e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2183:2181--name=zookeeper3--net=itcast-zookeeper--privileged zookeeper:3.4.14docker run -d --restart=always -v /opt/docker/zookeeper/zoo3/data:/data -v /opt/docker/zookeeper/zoo3/datalog:/datalog -e ZOO_MY_ID=3 -e ZOO_SERVERS="server.1=zookeeper1:2888:3888 server.2=zookeeper2:2888:3888 server.3=zookeeper3:2888:3888" -p 2183:2181  --name=zookeeper3 --net=itcast-zookeeper --privileged zookeeper:3.4.14说明:需要修改目录挂载。修改Zookeeper的id端口映射:用宿主机2183 映射容器 2181 容器名称:zookeeper3

​ 查看容器创建情况

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GBmbkopA-1672214916035)(imgs\2020-02-24_191129.png)]

2.3.2.3 测试Zookeeper集群的搭建情况

​ 使用yum安装nc指令

yum install -y nc

​ 方式1:

​ 通过容器的ip查看Zookeeper容器状态

​ 查看三个Zookeeper容器的ip

docker   inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'   zookeeper1
docker   inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'   zookeeper2
docker   inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'   zookeeper3

​ 查看Zookeeper集群的状态

echo stat|nc ip 2181
echo stat|nc ip 2181
echo stat|nc ip 2181

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hf6YvZUB-1672214916035)(imgs\2020-02-24_191247.png)]

方式2:通过宿主机的ip查询Zookeeper容器状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ClAGbX6a-1672214916035)(imgs\2020-04-29_202943.bmp)]

2.3.2.4 zookeeper集群的架构

​ Zookeeper集群架构[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X7UPbIDK-1672214916036)(imgs\2020-02-24_214848.png)]

​ Zookeeper客户端连接Zookeeper容器

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6kkcHND0-1672214916036)(imgs\2020-04-29_211639.bmp)]

遇到问题:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AHyZbvk7-1672214916036)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221222153732976.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mDvDHKDv-1672214916037)(C:\Users\86151\AppData\Roaming\Typora\typora-user-images\image-20221222153741720.png)]

已解决,原因是ip地址为虚拟机的ip,使用ip addr 查看虚拟机ip

2.3.2.3 搭建solr集群

​ 搭建Solr集群,我们需要利用我们刚才拉取的solr的镜像创建4个容器。并且需要将集群交由Zookeeper管理,Solr容器内部使用jetty作为solr的服务器。

​ 1.容器1创建

docker run --name solr1 --net=itcast-zookeeper -d -p 8983:8983 solr:7.7.2  bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2181,zookeeper3:2181'
--name:指定容器名称
--net:指定网卡,之前创建的桥接网卡
-d:后台运行
-p:端口映射,宿主机8983映射容器中8983
-c:
/opt/solr/bin/solr:通过容器中脚本,指定Zookeeper的集群地址

​ 2.容器2创建

docker run --name solr2 --net=itcast-zookeeper -d -p 8984:8983 solr:7.7.2  bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2181,zookeeper3:2181'
--name:指定容器名称
--net:指定网卡,之前创建的桥接网卡
-d:后台运行
-p:端口映射,宿主机8983映射容器中8984
-c:/opt/solr/bin/solr:通过容器中脚本,指定Zookeeper的集群地址

​ 3.容器3创建

docker run --name solr3 --net=itcast-zookeeper -d -p 8985:8983 solr:7.7.2  bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2181,zookeeper3:2181'
--name:指定容器名称
--net:指定网卡,之前创建的桥接网卡
-d:后台运行
-p:端口映射,宿主机8983映射容器中8984
-c:/opt/solr/bin/solr:通过容器中脚本,指定Zookeeper的集群地址

​ 4.容器4创建

docker run --name solr4 --net=itcast-zookeeper -d -p 8986:8983 solr:7.7.2  bash -c '/opt/solr/bin/solr start -f -z zookeeper1:2181,zookeeper2:2181,zookeeper3:2181'
--name:指定容器名称
--net:指定网卡,之前创建的桥接网卡
-d:后台运行
-p:端口映射,宿主机8983映射容器中8985
-c:/opt/solr/bin/solr:通过容器中脚本,指定Zookeeper的集群地址

​ 5.查看结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GZ5Hnsau-1672214916037)(imgs\2020-02-24_231205.png)]

2.3.2.5 整体架构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0nBfB2ze-1672214916037)(imgs\2020-02-24_233058.png)]

2.3.2.6 创建集群的逻辑结构

​ 1.通过端口映射访问solr的后台系统(注意关闭防火墙)

 http://192.168.200.128:8983/solrhttp://192.168.200.128:8984/solrhttp://192.168.200.128:8985/solrhttp://192.168.200.128:8986/solr

​ 2.上传solr配置文件到Zookeeper集群。

​ 进入到某个solr容器中,使用/opt/solr/server/scripts/cloud-scripts/的zkcli.sh 。上传solr的配置文件。

位置/opt/solr/example/example-DIH/solr/solr/conf到Zookeeper集群zookeeper1:2181,zookeeper2:2181,zookeeper3:2181。

docker exec -it solr1 /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 -cmd upconfig -confdir /opt/solr/server/solr/configsets/sample_techproducts_configs/conf -confname myconfig

​ 3.使用zooInterceptor查看配置文件上传情况

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cPjdxEdL-1672214916038)(imgs\2020-02-25_091219.png)]

​ 4.使用后台管理系统创建connection

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0APSmTkv-1672214916038)(imgs\2020-02-25_091346.png)]

​ 5. 查看集群的逻辑结构

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bO6PtEdq-1672214916038)(imgs\2020-02-25_091958.png)]

​ 到这基于docker的solr集群我们就讲解完毕。

​ 6.测试集群

{id:1,name:"zx"}
2.3.2.7 solr配置文件修改

1.在linux服务器上需要有一份solr的配置文件,修改宿主机中的配置文件。

​ 之前单机版solr的/usr/local/solr_home下,就有solr的配置文件。

​ /usr/local/solr_home下面的配置文件,schema已经配置了基于IK分词器的FieldType

2.将宿主机中的配置文件,替换到某个solr容器中。

docker cp /usr/local/solr_home/collection1/conf/managed-schema solr1:/opt/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema

3.将容器中修改后managed-schema配置文件,重新上传到Zookeeper集群。

​ 进入到solr1容器中,使用zkcli.sh命令,将最新的配置文件上传到Zookeeper集群

​ 容器文件位置:/opt/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema

​ 集群文件位置: /configs/myconfig/managed-schema

docker exec -it solr1 /opt/solr/server/scripts/cloud-scripts/zkcli.sh -zkhost zookeeper1:2181,zookeeper2:2181,zookeeper3:2181 -cmd putfile /configs/myconfig/managed-schema /opt/solr/server/solr/configsets/sample_techproducts_configs/conf/managed-schema

4.在Files中查看,修改后的配置文件

5.将IK分词器的jar包,及配置文件复制到4个solr容器中。

​ 5.1 将IK分词器上传到linux服务器

​ 5.2 使用docker cp命令进行jar包的拷贝

docker cp /root/ik-analyzer-solr5-5.x.jar solr1:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-solr5-5.x.jar
docker cp /root/ik-analyzer-solr5-5.x.jar solr2:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-solr5-5.x.jar
docker cp /root/ik-analyzer-solr5-5.x.jar solr3:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-solr5-5.x.jar
docker cp /root/ik-analyzer-solr5-5.x.jar solr4:/opt/solr/server/solr-webapp/webapp/WEB-INF/lib/ik-analyzer-solr5-5.x.jar

5.3 使用docker cp命令进行配置文件的拷贝

​ 将IK分析器的相关配置文件复制到/root/classes目录中

docker cp /root/classes solr1:/opt/solr/server/solr-webapp/webapp/WEB-INF/classes
docker cp  /root/classes solr2:/opt/solr/server/solr-webapp/webapp/WEB-INF/classes
docker cp /root/classes solr3:/opt/solr/server/solr-webapp/webapp/WEB-INF/classes
docker cp  /root/classes solr4:/opt/solr/server/solr-webapp/webapp/WEB-INF/classes

6、重启所有solr容器

docker restart solr1
docker restart solr2
docker restart solr3
docker restart solr4

7、使用text_ik创建业务域

不再使用修改配置文件的方式,直接利用后台管理系统进行。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ESWeOUsq-1672214916039)(imgs\2020-02-25_120512.png)]

{id:2,book_name:"java编程思想"}

基于docker的集群搭建相关推荐

  1. 基于iptables的SNAT+DNAT+docker服务器集群搭建

    什么是SNAT? SNAT用于局域网访问互联网,局域网的主机A想访问互联网上的主机C,首先要将数据包发送到防火墙所在的主机B,B收到后修改数据包的源地址为B机的公网IP,然后再发送到互联网. C机收到 ...

  2. php solr docker搭建,深入浅出Docker技术- 基于Docker Solr集群的搭建

    Posted on 6月 2, 2018 深入浅出Docker技术- 基于Docker Solr集群的搭建 SolrCloud是基于Solr和Zookeeper的分布式搜索方案,是正在开发中的Solr ...

  3. 正式环境docker部署hyperf_应用部署 - Docker Swarm 集群搭建 - 《Hyperf v1.1.1 开发文档》 - 书栈网 · BookStack...

    Docker Swarm 集群搭建 现阶段,Docker容器技术已经相当成熟,就算是中小型公司也可以基于 Gitlab.Aliyun镜像服务.Docker Swarm 轻松搭建自己的 Docker集群 ...

  4. Docker Swarm集群搭建以及服务命令等操作

    前言:之前都是采用rancher可视化管理工具进行管理K8S进一步管理容器,但是每次机器宕机后rancher中集群特别容易挂掉,出现的问题五花八门,在网上很难搜到解决方案,所以准备采用docker官方 ...

  5. docker swarm集群搭建及使用Portainer、shipyard

    一.规划 1.swarm01作为manager节点,swarm02和swarm03作为worker节点. # cat /etc/hosts 127.0.0.1 localhost 192.168.13 ...

  6. 持续集成docker—第三篇(docker swarm集群搭建)

    一.规划 1.net-master作为manager节点,net-salve作为worker节点. cat >>/etc/hosts<<EOF 47.96.65.70 yund ...

  7. 【Docker】docker swarm集群搭建和相关命令分享

    Docker swarm 集群通过 docker cli 来创建,并通过docker cli来实现应用的部署和集群的管理. Docker swarm集群的搭建相对简单,这里使用三台虚拟机(一个管理节点 ...

  8. Docker Swarm集群搭建

    Docker Swarm提供Docker容器集群服务,可以将多个Docker主机封装为单个单行的虚拟Docker主机,快速打造一套容器云平台. DockerSwarm提供很多新特性,如 具有容错能力的 ...

  9. docker swarm 集群搭建与服务更新

    title: "docker swarm 搭建与服务更新"date: 2021-12-15T17:54:53+08:00Description: ""Tags: ...

最新文章

  1. PostgreSQL在何处处理 sql查询之四十六
  2. 【必知】国内最设计感的 App推荐
  3. Ubuntu,kubuntu与xubuntu的差别 Ubuntu各版本主要差异
  4. Error Code : 1064 You have an error in your SQL syntax; check the manual that corresponds to your My
  5. webpack基础教程:(二)
  6. 四种JSON解析工具--(json-libJacksonGsonFastJson)
  7. MATLAB— RGB图像 ==Bayer图像 (bggr, gbrg, grbg, rggb)
  8. 今天是元旦节,可是我失恋了
  9. 根据两个字段去重SQL语句
  10. 【USB】USB的VID和PID
  11. 安卓逆向 -- AndroidKiller介绍
  12. 如何用最少的老鼠试出有毒的牛奶?
  13. 用户太多:互联网巨头之惑
  14. wszystkie hoopery Buty Adidas Crazy BYW sklep
  15. 使用数组实现购物车的应用
  16. 学霸用 Python 分析相亲网站数据,在两万异性中找到真爱!
  17. 如何用小程序快速创业?
  18. 微信公众号开发详细教程
  19. Flag-2018年度计划与安排
  20. 四年级计算机wps教案,四年级上册信息技术教案-《初识“WPS文字”》苏教版新版...

热门文章

  1. 测试团队的价值_通过持久的团队释放价值
  2. 解决dubbo中遇到HessianProtocolException: ‘xxxException‘ could not be instantiated的问题
  3. html表格中数据的居中
  4. 中山大学计算机系录取线,中山大学 专业录取不设分数级差
  5. 通信原理包络是什么意思_绳锯的工作原理
  6. hive如何查找函数并查看函数使用方法
  7. python基础------继承特性
  8. php html block,html中的block name=content是什么意思?
  9. vue中使用ckeditor,支持wps,word,网页粘贴
  10. 无需代码即可实现Excel中图片链接的批量下载