在Ubuntu14.04操作系统的宿主机中,安装docker17.06.3,将宿主机的操作系统制作成docker基础镜像,之后使用自制的基础镜像在docker中启动3个容器,分配固定IP,再在3个容器中配置solrCloud集群。

关键点:docker17.06.3安装,docker自制镜像及相关容器操作,docker分配固定IP及添加端口映射,solrCloud集群部署等

注:solrCloud采用的solr内置jetty,需要单独配置zookeeper

容器IP及名称见下表:

编号
静态IP
容器名称
1
172.18.0.11
server1
2
172.18.0.12
server2
3
172.18.0.13
server3

一、在宿主机安装docker最新版

1.更新apt-get
apt-get update
2.安装curl工具
apt-get install curl
3.获取并安装docker最新版
curl -fsSL https://get.docker.com/ | sh
4.查看docker版本
docker -v

二、在宿主机制作Ubuntu14.10基础镜像ubuntu-self

1.将本机操作系统打包成tar文件
tar --numeric-owner --exclude=/proc --exclude=/sys -cvf ubuntu-self.tar /
2.将制作的tar文件导入docker镜像库中,并命令为:ubuntu-self:
cat ubuntu-self.tar | docker import - ubuntu-self
3.现在可以运行它了:
docker run -i -t ubuntu-self 
注:官方提供的镜像库中Ubuntu无法sudo,不太好用,这里我自己利用本机的操作系统生成了一个基础纯净版镜像,命名为ubuntu-self,大小约3.5G,里面没有安装任何软件。

三、配置宿主机的hosts文件,以便利用ssh登录容器

1.修改hosts文件,添加如下内容:
vi /etc/hosts
172.18.0.11 server1
172.18.0.12 server2
172.18.0.13 server3
2.查看hosts文件
cat /etc/hosts

四、启动一个容器,设置静态IP,命名为server1

1.在宿主机上创建自定义网络
docker network create --subnet=172.18.0.0/16 search_network
备注:这里选取了172.18.0.0网段,也可以指定其他任意空闲的网段,search_network为自定义网桥的名字,可自己任意取名。
2.利用docker启动容器server1,分配固定IP 172.18.0.11,并将容器的8983端口与宿主机8983进行映射,以便可以从外部访问容器
docker run -itd --name server1 --net search_network --ip 172.18.0.11 -p 8983:8983 ubuntu-self /bin/bash
注:该命令执行完之后直接进入到server1的命令行界面,主机名称变为docker分配的随机字符串,查看ip是否为静态,执行结果如下图所示:

五、继续操作,在容器server1中配置ssh服务

1.aptget升级
apt-get update
2.安装openssh服务
apt-get install openssh-server
3.开启ssh服务
sudo /etc/init.d/ssh start
4.设置ssh开机启动
vi /etc/rc.local
添加如下内容:
service ssh start
4.退出容器,在宿主机中采用ssh登录
exit
5.在宿主机切换到tank用户(root登录ssh需要修改ssh配置文件,这里用tank用户登录更方便些),并ssh到容器server1
su tank
ssh server1

六、在容器server1中安装jdk1.8并配置java环境变量

1.解压缩文件
tar -zxvf jdk1.8.0_141.tar.gz -C /usr/local/java/
2.向/etc/profile文件中追加下面内容:
export JAVA_HOME=/usr/local/java/jdk1.8.0_141
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:${JAVA_HOME}/bin
3.让文件生效
source /etc/profile
4.验证java成功安装
java -version

七、在容器server1中安装配置zookeeper-3.4.10

1.解压zookeeper 安装包到/usr/local目录中
tar -zxvf zookeeper-3.4.10.tar.gz -C /usr/local/
2.创建zookeeper的data和logs目录,确保拥有读写权限
mkdir /home/tank/zookeeper/data
mkdir /home/tank/zookeeper/log
3.将zookeeper安装目录下conf文件夹中的zoo_sample.cfg重命名为zoo.cfg
4.修改zoo.cfg内容,zoo.cfg配置完后如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/home/tank/zookeeper/data
dataLogDir=/home/tank/zookeeper/log
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=172.18.0.11:2888:3888
server.2=172.18.0.12:2888:3888
server.3=172.18.0.13:2888:3888
5.进入/home/tank/zookeeper/data中,新建myid文件,写入1
注:其他两个节点的myid内容应分别是2和3

八、在容器server1中安装配置solr-6.6.0

1.解压solr-6.6.0.tgz到/usr/local目录下
tar -zxvf solr-6.6.0.tgz -C /usr/local/
2.创建solrCloud根目录solr_cloud_home文件夹
mkdir /usr/local/solrCloud/solr_cloud_home
3.复制/usr/local/solr-6.6.0/server/solr/目录下的文件到solr_cloud_home中
cp /usr/local/solr-6.6.0/server/solr/* /usr/local/solrCloud/solr_cloud_home/
查看solr_cloud_home目录,如图所示:
ls
4.创建配置存放目录solr_cloud_collection文件夹
mkdir /usr/local/solrCloud/solr_cloud_collection
5.复制/usr/local/solr-6.6.0/example/example-DIH/solr/solr/目录下的文件到solr_cloud_collection/cloud_core中
mkdir /usr/local/solr_cloud_collection/cloud_core
cp /usr/local/solr-6.6.0/example/example-DIH/solr/solr/* /usr/local/solr_cloud_collection/cloud_core/
ls

九、在宿主机提交容器server1为新的镜像,命名为ubuntu-self-solr

sudo docker commit server1 ubuntu-self-solr
docker images

十、利用上一步生成的镜像启动容器server2,server3

1.在宿主机启动容器server2,设置IP为172.18.0.12
docker run -itd --name server2 --net search_network --ip 172.18.0.12 ubuntu-self-solr /bin/bash
2.将容器server2中/home/tank/zookeeper/data/myid内容由1改为2
3.退出容器server2,回到宿主机
exit
3.在宿主机启动容器server3,设置IP为172.18.0.13
docker run -itd --name server3 --net search_network --ip 172.18.0.13 ubuntu-self-solr /bin/bash
4.将容器server3中/home/tank/zookeeper/data/myid内容由1改为3
5.退出容器server3,回到宿主机
exit
6.在宿主机中查看docker容器运行情况
docker ps

十一、在宿主机ssh登录容器server1,server2,server3 并分别启动zookeeper

ssh server1
cd /usr/local/zookeeper-3.4.10/
bin/zkServer.sh start
/usr/local/zookeeper-3.4.10/bin/zkServer.sh start
注:在server2,server3上同样执行此操作

十二、在宿主机ssh登录容器server1,server2,server3并启动solr

1.ssh登录server1,cloud模式下启动solr
ssh server1
cd /usr/local/solr-6.6.0
bin/solr start -cloud -p 8983 -s "/usr/local/solrCloud/solr_cloud_home/" -z "172.18.0.11:2181,172.18.0.12:2181,172.18.0.13:2181"
2.打开宿主机浏览器,访问页面http://172.18.0.11:8983/solr/,可以进入solr页面即代表启动成功
注:在server2,server3上同样执行此操作

十三、在容器server1上创建Collection(只需要在一台solr节点上操作)

 1、由solr命令建立索引,这里索引命名为:cloudsuite_web_search
进入solr/bin目录,使用solr命令:
cd /usr/local/solr-6.6.0
bin/solr create_collection -c cloudsuite_web_search -shards 3 -replicationFactor 3 -d /usr/local/solrCloud/solr_cloud_collection/cloud_core/conf -p 8983 
-c 核心名称tar
-shards 分片数量
- replicationFactor 副本数量 (一般指有几台solr集群)
2.将solr提供的xml示例文件上传至索引
bin/post -c cloudsuite_web_search *.xml

十四、在宿主机上通过浏览器访问solrCloud集群,验证操作成功

安装成功后,无论从哪个节点访问8983端口,均可以看到cloud的拓扑模式,如下所示
 

ubuntu14.04环境下利用docker搭建solrCloud集群的更多相关文章

  1. linux下利用httpd搭建tomcat集群,实现负载均衡

    公司使用运营管理平台是单点tomcat,使用量大,或者导出较大的运营数据时,会造成平台不可用,现在需要搭建tomcat集群,调研后,决定使用apache的httpd来搭建tomcat集群.以下是搭建步 ...

  2. 利用Docker搭建Redis集群

    Redis集群搭建 运行Redis镜像 分别使用以下命令启动3个Redis docker run --name redis-6379 -p 6379:6379 -d hub.c.163.com/lib ...

  3. docker搭建etcd集群环境

    其实关于集群网上说的方案已经很多了,尤其是官网,只是这里我个人只有一个虚拟机,在开发环境下建议用docker-compose来搭建etcd集群. 1.拉取etcd镜像 docker pull quay ...

  4. docker 搭建zookeeper集群和kafka集群

    docker 搭建zookeeper集群 安装docker-compose容器编排工具 Compose介绍 Docker Compose 是 Docker 官方编排(Orchestration)项目之 ...

  5. 【solr】Solr5.5.4+Zookeeper3.4.6+Tomcat8搭建SolrCloud集群

    Solr5.5.4+Zookeeper3.4.6+Tomcat8搭建SolrCloud集群 SolrCloud(solr 云)是Solr提供的分布式搜索方案,当你需要大规模,容错,分布式索引和检索能力 ...

  6. 使用Docker搭建Spark集群(用于实现网站流量实时分析模块)

    上一篇使用Docker搭建了Hadoop的完全分布式:使用Docker搭建Hadoop集群(伪分布式与完全分布式),本次记录搭建spark集群,使用两者同时来实现之前一直未完成的项目:网站日志流量分析 ...

  7. 使用Docker搭建Hadoop集群(伪分布式与完全分布式)

    之前用虚拟机搭建Hadoop集群(包括伪分布式和完全分布式:Hadoop之伪分布式安装),但是这样太消耗资源了,自学了Docker也来操练一把,用Docker来构建Hadoop集群,这里搭建的Hado ...

  8. 庐山真面目之十二微服务架构基于Docker搭建Consul集群、Ocelot网关集群和IdentityServer版本实现

    庐山真面目之十二微服务架构基于Docker搭建Consul集群.Ocelot网关集群和IdentityServer版本实现 一.简介      在第七篇文章<庐山真面目之七微服务架构Consul ...

  9. Elasticsearch使用系列-Docker搭建Elasticsearch集群

    Elasticsearch使用系列-ES简介和环境搭建 Elasticsearch使用系列-ES增删查改基本操作+ik分词 Elasticsearch使用系列-基本查询和聚合查询+sql插件 Elas ...

随机推荐

  1. 《转》快速导出SSRS之RDL文件

    select name,[path],cast(cast(content AS varbinary(max)) as xml) as RDLDef from dbo.[Catalog] where t ...

  2. [置顶] Unity2d引入新功能SpriteAtlas,Sprite新的图集方式

    孙广东  2017.8.3 http://blog.csdn.NET/u010019717 在Unity 2017.1.0f3中引入了 SpriteAtlas 官方文档:  https://docs. ...

  3. Opencv中Rect类

    转载: Rect_类有些意思,成员变量x.y.width.height,分别为左上角点的坐标和矩形的宽和高.常用的成员函数有Size()返回值为一个Size,area()返回矩形的面积,contain ...

  4. 注册dll文件

    1.打开"开始-运行-输入regsvr32 XXX.dll",回车即可 2.win7 64位旗舰版系统运行regsvr32.exe提示版本不兼容 在运行regsvr32.exe的时 ...

  5. TypeScript学习笔记(五) - 泛型

    本篇将介绍在TypeScript如何使用泛型. 一.泛型方法 在TypeScript里,声明泛型方法有以下两种方式: function generics_func1<T>(arg: T): ...

  6. CH1812 生日礼物

    题意 描述 ftiasch 18岁生日的时候,lqp18_31给她看了一个神奇的序列 A1, A2, ..., AN. 她被允许选择不超过 M 个连续的部分作为自己的生日礼物.ftiasch想要知道选 ...

  7. hasura graphql 角色访问控制

    目前从官方文档以及测试可以看出不加任何header的请求访问的是所有的数据,对于具有访问 控制的请求需要添加请求头,实际生产的使用需要集合web hook 的实现访问控制. 参考配置 访问请求 目前数 ...

  8. 使用dev_add_pack注冊新的以太网类型

    接着上一篇文件:使用PF_PACKET和SOCK_RAW发送自己定义type以太网数据包 上一篇文章我们使用wireshare抓包.尽管在Linux下也能够使用抓包工具,可是我打算自己动手,在内核添加 ...

  9. CentOS 6.6下 BCM4312 802.11b/g无线网卡驱动安装

    1.目前www.broadcom.com网站上最新版本为hybrid-v35,但此版本与2.6.32不匹配,无法识别验证密码,搜索网上说是要求升级内核,后根据http://www.dadclab.co ...

  10. POJ3070 矩阵快速幂模板

    题目:http://poj.org/problem?id=3070 矩阵快速幂模板.mod写到乘法的定义部分就行了. 别忘了 I ( ) 和 i n i t ( ) 要传引用! #include< ...