Solr集群搭建詳細教程(二)

来源:https://www.cnblogs.com/dijia478/archive/2017/12/29/8124751.html
-Advertisement-
Play Games

註:歡迎大家轉載,非商業用途請在醒目位置註明本文鏈接和作者名dijia478,商業用途請聯繫本人[email protected]。 之前步驟:Solr集群搭建詳細教程(一) 三、solr集群搭建 註意,在搭建solr集群前,建議最好有一個solr服務是已經搭建好的,可以簡化大量重覆的配置操作。 單機 ...


註:歡迎大家轉載,非商業用途請在醒目位置註明本文鏈接和作者名dijia478,商業用途請聯繫本人[email protected]

之前步驟:Solr集群搭建詳細教程(一)

三、solr集群搭建

註意,在搭建solr集群前,建議最好有一個solr服務是已經搭建好的,可以簡化大量重覆的配置操作。

單機solr服務搭建過程參看我的這篇文章:

Solr服務在Linux上的搭建詳細教程

這個單機solr服務在solr集群搭建第二步和第三步里需要,搭建好一個solr服務後,就可以進行集群搭建了。

第一步:創建四個tomcat實例。每個tomcat運行在不同的埠。8180、8280、8380、8480

上傳解壓步驟省略,這是我解壓好的

複製tomcat到之前搭建zookeeper集群第四步時,創建的/usr/local/solr-cloud目錄里,複製4個

去solr-cloud目錄,發現已經複製好了4個tomcat目錄

在tomcat目錄下的conf里的server.xml,修改每個tomcat的埠號,這裡只演示第一個目錄的,另外三個都要改,埠要互不衝突

 用/port命令搜索port字元串,按n搜索下一個,有三個地方要改,依次更改為

其他三個tomcat目錄里的server.xml配置的埠按照234的順序全改了啊,具體過程這裡我就不截圖了。

一共要改四個文件,每個文件里改三個地方,這12個埠號要互不衝突

第二步:把單機版的solr工程複製到集群中的tomcat中

在搭建好的單機solr服務里(這裡是另一篇教程,上面說過了),複製solr工程到第一步的4個tomcat目錄里,一共是複製4份

第三步:為每個solr實例創建一個對應的solrhome。使用單機版的solrhome複製四份

一樣在之前搭建的單機solr服務里,把solrhome複製4份出來到solr-cloud目錄里

現在solr-cloud目錄里是有這些目錄,檢查一下有沒有複製錯地方的:

第四步:配置solrCloud相關的配置。每個solrhome下都有一個solr.xml,把其中的ip及埠號配置好

之前搭建單機版solr服務的時候沒有動過solrhome里的這個文件,現在搭建集群了,需要進行修改

需要修改4個solr.xml,我這裡還是只演示第一個,另外三個目錄里的類比著改,一樣的,就是1234的順序

找到這個地方,第一個紅框代表當前節點的ip地址,就是你部署這個solrhome01,tomcat01集群節點的伺服器ip,實際工作中就是會部署4個伺服器,一個伺服器是一個節點,部署一個solr服務

第二個紅框代表當前solr服務實例的埠號,就是所在的tomcat的埠號,就是第一步在tomcat01的server.xml里配置的8180

我的配置完後是這樣的

其他三個照著改啊,由於我是在一臺虛擬機搭建的四個實例,所以肯定四個實例的ip是一樣的,但埠分別是8180,8280,8380,8480

第五步:需要修改solr服務的web.xml文件。把solrhome關聯起來

修改這個文件,和之前單機版的solr配置是一樣的

要註意的是,tomcat01這裡的solr服務,是上面第二步複製過來的對吧,是我之前用solr7搭建的單機solr服務,裡面的配置和solr4不太一樣,具體還是去文章最上面看我提供的單機solr服務搭建教程鏈接

找到這個,這裡是我之前搭建單機solr服務時,配置的solrhome路徑

現在改成集群的solrhome01目錄,使他們關聯起來

其他三個tomcat里的web.xml都對應著一改,solrhome02,03,04

第六步:讓zookeeper統一管理配置文件。需要把/conf目錄上傳到zookeeper

現在我們每一個solr都有了自己的solrhome,現在我們要讓每一個solr實例的配置文件都一樣,這個配置文件需要集中管理,這個時候我們使用zookeeper來統一管理配置文件。所以要將配置文件上傳到zookeeper中。那麼上傳哪些配置文件呢?

這裡註意下managed-schema文件,網上有很多低版本solr,會提到一個collection1/conf下的schema.xml,但是並沒有找到。好像是從5.0版本開始不使用schema.xml的,這倆其實內容都一樣,搞不懂為啥要換個名字,而且內容格式是xml,但是文件名卻沒有.xml的後輟,這裡直接上傳整個conf目錄就行。

知道了要上傳什麼,那麼怎麼上傳呢?打開最早solr解壓出來的原始文件(如果刪了那就重新上傳解壓吧)

在這個目錄下有個腳本文件,執行這個腳本就可以將配置文件上傳到zookeeper了,有點難找,我是用find命令給搜出來的。不過我這裡給出了pwd路徑

 

要註意,在執行腳本上傳配置文件前,必須先去啟動zookeeper集群

然後回來執行腳本

這裡腳本的執行命令有點長,主要是參數多,建議複製出來改好後再粘貼上去

./zkcli.sh -zkhost 192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183 -cmd upconfig -confdir /usr/local/solr-cloud/solrhome01/configsets/sample_techproducts_configs/conf -confname myconf

我解釋下各個參數的含義:

紅色框代表zookeeper集群的ip和埠號列表(搭建zookeeper集群的時候配置過的)

綠色框代表要執行的是上傳配置文件操作

黃色框代表的是要上傳的配置文件目錄(低版本不太一樣,具體以那兩個主要的配置文件所在目錄為準,不知到在哪就find命令搜吧)

紫色框代表的是你給上傳的配置起的名字,可以改

現在上傳完了,那麼我們怎麼確定是否上傳成功呢?去zookeeper集群的一個目錄找到bin里zookeeper的客戶端腳本

運行後,裡面會出現一大堆內容,如果你不指定參數,他會預設訪問localhost:2181

在最下麵執行這個命令,查看在根目錄下有什麼,發現一個configs

再看它裡面有什麼?哈!

這就是我們剛纔上傳的配置了,名字一樣的,代表上傳成功了

然後用quit命令退出

如果你需要修改配置的話,只用在剛纔那個conf目錄里改好,改好後再上傳一次就行了,就會覆蓋原來的配置文件

第七步:修改tomcat/bin目錄下的catalina.sh 文件,關聯solr和zookeeper

現在上傳好配置文件了,可是solr和zookeeper還沒有建立任何關係,他們也不知道對方在哪裡,這個時候需要修改4個tomcat的配置文件,這裡只演示tomcat01,其他三個完全相同照著改

打開catalina.sh文件,加一個JAVA_OPTS這個參數,初始化這個值完了會傳給solr,註意不是在這個截圖這裡修改啊

用/JAVA_OPTS搜索紅色框框里的這句話(因為低版本加的位置長的不太一樣,但這句話的例子是不變的),在這句話下麵的位置加(註意位置啊,不要弄錯了):

加上JAVA_OPTS的值(zookeeper集群的ip列表):

JAVA_OPTS="-DzkHost=192.168.25.128:2181,192.168.25.128:2182,192.168.25.128:2183"

然後把其他三個tomcat也一改,改的位置和內容是一樣的,不用變

這樣每個solr實例就通過這個參數和zookeeper集群建立了聯繫,solr會將自己的狀態發送給zookeeper,比如ip地址啊,埠號啊,zookeeper就可以連接到solr了,建立了通信關係

第八步:啟動每個tomcat實例。要包裝zookeeper集群是啟動狀態

現在需要啟動每個tomcat,當然了,這個和啟動zookeeper集群一樣,要一個一個進去啟動,太麻煩了,還是寫個批處理腳本來運行

/usr/local/solr-cloud/tomcat01/bin/startup.sh
/usr/local/solr-cloud/tomcat02/bin/startup.sh
/usr/local/solr-cloud/tomcat03/bin/startup.sh
/usr/local/solr-cloud/tomcat04/bin/startup.sh

保存,退出

發現沒有運行許可權,添加許可權

然後運行腳本,等等啊,tomcat集群啟動比較慢

如果你想看啟動起來沒,可以複製一個會話視窗(我用的xshell5),去看看tomcat的日誌信息(相當於看控制台列印信息)

用這個命令查看,我這就查看一個,應該已經啟動好了

這裡說個小知識點,tomcat8開始,預設啟動的是NIO模式,7預設啟動的是BIO模式,還可以通過配置設置APR模式啟動,至於APR,NIO和BIO的區別,是和tomcat併發性能有關的,高併發的系統應該將tomcat的模式設置成APR模式,會大幅度的提高伺服器的處理和響應性能。感興趣的可以自己百度下。當然這個不用在意,跟本文集群搭建沒啥關係,就是想到了說一下。

第九步:訪問集群

然後用自己的電腦訪問下咱們的集群吧,之前單機版是沒有紅框框出來的兩個東西的,出現這個就是OK了

我這裡還沒創建collections,所以啥都沒有:

註意下訪問地址的輸入,要寫全。訪問地址寫成這樣會404

第十步:創建新的Collection進行分片處理

點擊頁面的Collections按鈕,然後就能添加了(高版本的solr才有,低版本的需要通過地址欄傳遞參數去設置,比較麻煩)

我這裡選擇的是名字叫mycollection1,用自己上傳的myconf配置文件,有2片shard,每個shard有2個備份節點一主一備

然後回去看下,這樣solr集群就搭建ok了!

第十一步:刪除不用的Collection或core

刪除collection,點這裡,然後輸入你要刪除的collection名稱就行

 刪除core在右邊,完瞭如果要添加下麵有add replica(如果工作中你的哪個備份機掛了,就這樣刪掉掛的伺服器,再添加一個好的就行,當然了,在這裡添加前,肯定是需要在伺服器上部署好solr服務,然後連接zookeeper集群才行的)

 


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

-Advertisement-
Play Games
更多相關文章
  • 微信掃一掃並支付成功,聯繫QQ:770628656獲取所有源碼(超級代碼詳細註釋版本) ...
  • using System;using System.Collections.Generic;using System.IO;using System.Text;using System.Net;using System.Web; namespace Deerchao.Utility{ public ...
  • 1. 應用場景 Windows服務程式是Windows操作系統下能完成特定功能的可執行程式。它適合需要長時間運行的功能使用。 2. 創建Windows服務 創建完成後,看到如下圖所示: 將Service1的名稱改成你需要的名稱,例如“HelloService” 3. 創建服務安裝程式 修改安裝服務名 ...
  • 本示例學習使用await來獲取非同步操作結果時,同步上下文行為的結節,並如何在何時關閉同步上下文流。 預設情況下,await操作符會嘗試捕獲同步上下文,併在其中執行代碼。使用await操作符不會發生死鎖的情況,因為當等待結果時並不會阻塞UI線程。 ...
  • 迴圈輸郵索引值,使用for是沒有任何問題: class Bh { public string[] str { get; set; } public void TestFor() { for (int i = 0; i < str.Length; i++) { Console.WriteLine("i ...
  • 1. 前言 TypeConverter是XAML解釋器的幕後功臣,它做了大量工作,從WPF誕生以來,幾乎每一次XAML的運作都有它的參與。雖然UWP中TypeConverter已經徹徹底底退居幕後,連自定義TypeConverver都不可以,但瞭解TypeConverter的原理對理解XAML解析器 ...
  • 知道這幾 個正則表達式,能讓你少寫 1,000 行代碼,廢話不多說了,直接上代碼 正則表達式經常被用於欄位或任意字元串的校驗,如下麵這段校驗基本日期格式的JavaScript代碼:var reg = /^(\\d{1,4})(-|\\/)(\\d{1,2})\\2(\\d{1,2})$/; var ...
  • 生產,操作,常需要,用LED屏顯示一些信息 下麵給一個最簡單的LED實常式序:本實例使用LEDSender2010.dll類庫 適用於中天等LED! 1.建立窗體: /* * Created by SharpDevelop. * User: gaofajin * Date: 2015/10/20 * ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...