在Ubuntu14.04操做系統的宿主機中,安裝docker17.06.3,將宿主機的操做系統製做成docker基礎鏡像,以後使用自制的基礎鏡像在docker中啓動3個容器,分配固定IP,再在3個容器中配置solrCloud集羣。html
關鍵點:docker17.06.3安裝,docker自制鏡像及相關容器操做,docker分配固定IP及添加端口映射,solrCloud集羣部署等java
注:solrCloud採用的solr內置jetty,須要單獨配置zookeeperweb
容器IP及名稱見下表:docker
編號
|
靜態IP
|
容器名稱
|
1
|
172.18.0.11
|
server1
|
2
|
172.18.0.12
|
server2
|
3
|
172.18.0.13
|
server3
|
1、在宿主機安裝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
2、在宿主機制做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,裏面沒有安裝任何軟件。
3、配置宿主機的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
4、啓動一個容器,設置靜態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是否爲靜態,執行結果以下圖所示:
5、繼續操做,在容器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
6、在容器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
7、在容器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
8、在容器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
9、在宿主機提交容器server1爲新的鏡像,命名爲ubuntu-self-solr
sudo docker commit server1 ubuntu-self-solr
docker images
10、利用上一步生成的鏡像啓動容器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
11、在宿主機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上一樣執行此操做
12、在宿主機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上一樣執行此操做
十3、在容器server1上建立Collection(只須要在一臺solr節點上操做)
一、由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
十4、在宿主機上經過瀏覽器訪問solrCloud集羣,驗證操做成功
安裝成功後,不管從哪一個節點訪問8983端口,都可以看到cloud的拓撲模式,以下所示