主要內容: 技術關鍵點:docker17.06.3安裝,docker自製鏡像及相關容器操作,docker分配固定IP及添加埠映射,solrCloud集群部署等 主要思路:在Ubuntu14.04操作系統的宿主機中,安裝docker17.06.3,將宿主機的操作系統製作成docker基礎鏡像,之後使 ...
主要內容:
技術關鍵點:docker17.06.3安裝,docker自製鏡像及相關容器操作,docker分配固定IP及添加埠映射,solrCloud集群部署等 主要思路:在Ubuntu14.04操作系統的宿主機中,安裝docker17.06.3,將宿主機的操作系統製作成docker基礎鏡像,之後使用自製的基礎鏡像在docker中啟動3個容器,分配固定IP,再在3個容器中配置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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120134891-475407425.png)
二、在宿主機製作Ubuntu14.10基礎鏡像ubuntu-self
1.將本機操作系統打包成tar文件 tar --numeric-owner --exclude=/proc --exclude=/sys -cvf ubuntu-self.tar /![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120318860-820739092.png)
三、配置宿主機的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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120403516-1766048033.png)
四、啟動一個容器,設置靜態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是否為靜態,執行結果如下圖所示:![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120504547-1635230389.png)
五、繼續操作,在容器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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120536110-1261532199.png)
![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120557922-1136564961.png)
六、在容器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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120633610-135502894.png)
七、在容器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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120705032-89483401.png)
![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120828782-1127331680.png)
八、在容器server1中安裝配置solr-6.6.0
1.解壓solr-6.6.0.tgz到/usr/local目錄下 tar -zxvf solr-6.6.0.tgz -C /usr/local/![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120846985-314164644.png)
![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120901719-1824546330.png)
![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912120915516-239970841.png)
九、在宿主機提交容器server1為新的鏡像,命名為ubuntu-self-solr
sudo docker commit server1 ubuntu-self-solr docker images![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912121022547-1160592322.png)
十、利用上一步生成的鏡像啟動容器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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912121038891-1235738971.png)
十一、在宿主機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![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912121054110-747096519.png)
十二、在宿主機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"![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912121119407-1853122170.png)
十三、在容器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的拓撲模式,如下所示![](http://images2017.cnblogs.com/blog/1237731/201709/1237731-20170912121151625-1433295559.png)