ubuntu14.04環境下利用docker搭建solrCloud集群

来源:http://www.cnblogs.com/javaIOException/archive/2017/09/12/7509518.html
-Advertisement-
Play Games

主要內容: 技術關鍵點: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

二、在宿主機製作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的拓撲模式,如下所示  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1.usb 可以使用此命令讀取u盤裡的內容,此命令加上相關參數可以有以下功能: 1.1usb start 在使用u盤之前必須啟動此命令以初始化好fat文件系統環境,筆者的輸出如下: jello # usb start(Re)start USB...USB: Starting the controll ...
  • 原文發表於cu:2016-06-23 參考文檔: saltstack的安裝與簡單配置,應用。 一.環境 Server:CentOS Linux release 7.2.1511 (Core) Salt-master:172.18.12.201 Salt-minion:172.18.12.204 二. ...
  • 配置文件 在主節點初始化複製集配置 在主節點上添加從節點 修改節點的優先順序,設置為0則不會被選為主 ...
  • 要求:linux 卸載 mongo2.6 版本:linux系統:Ubuntu 16.04 mongo: mongo 2.6.12 1、 查看安裝的mongo版本和服務 # dpkg –l | grep mongo 可以看到,目前有三個和mongodb有關,mongodb,mongodb-client ...
  • 第1章 Linux命令基礎 1.1 習慣 操作前備份,操作後檢查 1.2 簡單目錄結構 一切從根開始,與windows不同 1.3 規則 [root@oldboyedu-40 ~]# [用戶名@主機名 你在哪]# [root@oldboyedu-40 ~]# [用戶名@主機名 你在哪]# 1.4 重 ...
  • 從本地複製到遠程 從遠程複製到本地 說明 ...
  • 本文目錄:1.awk簡介和基本語法格式2.print和printf格式化輸出3.輸入行的欄位分隔符和行分隔符4.BGEIN和END5.數組6.流程式控制制語句 6.1 條件判斷語句 6.2 while迴圈 6.3 do迴圈 6.4 for迴圈7.更完整的awk程式格式和表達式8.awk中的變數9.awk ...
  • ``` 第一講小結 1. 游標在屏幕文本中的移動既可以用箭頭鍵,也可以使用 hjkl 字母鍵。 h (左移) j (下行) k (上行) l (右移) 2. 欲進入 Vim 編輯器(從命令行提示符),請輸入:vim 文件名 3. 欲退出 Vim 編輯器,請輸入 :q! 放棄所有改動。 ... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...