久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      SolrCloud 高可用集群搭建

      1.1 什么是SolrCloud

      SolrCloud(solr )Solr提供的分布式搜索方案,當(dāng)你需要大規(guī)模,容錯,分布式索引和檢索能力時使用 SolrCloud。當(dāng)一個系統(tǒng)的索引數(shù)據(jù)量少的時候是不需要使用SolrCloud的,當(dāng)索引量很大,搜索請求并發(fā)很高,這時需要使用SolrCloud來滿足這些需求。

       SolrCloud是基于SolrZookeeper的分布式搜索方案,它的主要思想是使用Zookeeper作為集群的配置信息中心。

      它有幾個特色功能:

      1)集中式的配置信息

      2)自動容錯

      3)近實時搜索

      4)查詢時自動負(fù)載均衡

       

      ——————————————分割線——————————————

       

      本文要用到的相關(guān)文件可從以下信息得到下載:

       

      點擊這個http://www.linuxidc.com/Linux/2013-12/93755.htm 鏈接關(guān)注 Linux公社官方微信,關(guān)注后回復(fù)數(shù)字159306。即可得到網(wǎng)友的分享密碼。

       

      如果取消關(guān)注Linux公社公眾號,即使再次關(guān)注,也將無法提供本服務(wù)!

       

      鏈接: https://pan.baidu.com/s/1eYvEUUvUBMV4j7RMUxwtZQ 密碼:獲得見上面的方法,地址失效請在下面留言。

       

      ——————————————分割線——————————————

       

      1.1.1 zookeeper是個什么玩意?

      顧名思義zookeeper就是動物園管理員,他是用來管Hadoop(大象)、Hive(蜜蜂)pig(小豬)的管理員, Apache HbaseApache Solr 的分布式集群都用到了zookeeperZookeeper:是一個分布式的、開源的程序協(xié)調(diào)服務(wù),是hadoop項目下的一個子項目。

      1.1.2 Zookeeper可以干哪些事情

      1、配置管理

      在我們的應(yīng)用中除了代碼外,還有一些就是各種配置。比如數(shù)據(jù)庫連接等。一般我們都是使用配置文件的方式,在代碼中引入這些配置文件。但是當(dāng)我們只有一種配置,只有一臺服務(wù)器,并且不經(jīng)常修改的時候,使用配置文件是一個很好的做法,但是如果我們配置非常多,有很多服務(wù)器都需要這個配置,而且還可能是動態(tài)的話使用配置文件就不是個好主意了。這個時候往往需要尋找一種集中管理配置的方法,我們在這個集中的地方修改了配置,所有對這個配置感興趣的都可以獲得變更。比如我們可以把配置放在數(shù)據(jù)庫里,然后所有需要配置的服務(wù)都去這個數(shù)據(jù)庫讀取配置。但是,因為很多服務(wù)的正常運行都非常依賴這個配置,所以需要這個集中提供配置服務(wù)的服務(wù)具備很高的可靠性。一般我們可以用一個集群來提供這個配置服務(wù),但是用集群提升可靠性,那如何保證配置在集群中的一致性呢? 這個時候就需要使用一種實現(xiàn)了一致性協(xié)議的服務(wù)了。Zookeeper就是這種服務(wù),它使用Zab這種一致性協(xié)議來提供一致性?,F(xiàn)在有很多開源項目使用Zookeeper來維護(hù)配置,比如在HBase中,客戶端就是連接一個Zookeeper,獲得必要的HBase集群的配置信息,然后才可以進(jìn)一步操作。還有在開源的消息隊列Kafka中,也使用Zookeeper來維護(hù)broker的信息。在Alibaba開源的SOA框架Dubbo中也廣泛的使用Zookeeper管理一些配置來實現(xiàn)服務(wù)治理。

      2、名字服務(wù)

      名字服務(wù)這個就很好理解了。比如為了通過網(wǎng)絡(luò)訪問一個系統(tǒng),我們得知道對方的IP地址,但是IP地址對人非常不友好,這個時候我們就需要使用域名來訪問。但是計算機是不能是別域名的。怎么辦呢?如果我們每臺機器里都備有一份域名到IP地址的映射,這個倒是能解決一部分問題,但是如果域名對應(yīng)的IP發(fā)生變化了又該怎么辦呢?于是我們有了DNS這個東西。我們只需要訪問一個大家熟知的(known)的點,它就會告訴你這個域名對應(yīng)的IP是什么。在我們的應(yīng)用中也會存在很多這類問題,特別是在我們的服務(wù)特別多的時候,如果我們在本地保存服務(wù)的地址的時候?qū)⒎浅2环奖?,但是如果我們只需要訪問一個大家都熟知的訪問點,這里提供統(tǒng)一的入口,那么維護(hù)起來將方便得多了。

      3、分布式鎖

      其實在第一篇文章中已經(jīng)介紹了Zookeeper是一個分布式協(xié)調(diào)服務(wù)。這樣我們就可以利用Zookeeper來協(xié)調(diào)多個分布式進(jìn)程之間的活動。比如在一個分布式環(huán)境中,為了提高可靠性,我們的集群的每臺服務(wù)器上都部署著同樣的服務(wù)。但是,一件事情如果集群中的每個服務(wù)器都進(jìn)行的話,那相互之間就要協(xié)調(diào),編程起來將非常復(fù)雜。而如果我們只讓一個服務(wù)進(jìn)行操作,那又存在單點。通常還有一種做法就是使用分布式鎖,在某個時刻只讓一個服務(wù)去干活,當(dāng)這臺服務(wù)出問題的時候鎖釋放,立即fail over到另外的服務(wù)。這在很多分布式系統(tǒng)中都是這么做,這種設(shè)計有一個更好聽的名字叫Leader Election(leader選舉)。比如HBaseMaster就是采用這種機制。但要注意的是分布式鎖跟同一個進(jìn)程的鎖還是有區(qū)別的,所以使用的時候要比同一個進(jìn)程里的鎖更謹(jǐn)慎的使用。

      4、集群管理

      在分布式的集群中,經(jīng)常會由于各種原因,比如硬件故障,軟件故障,網(wǎng)絡(luò)問題,有些節(jié)點會進(jìn)進(jìn)出出。有新的節(jié)點加入進(jìn)來,也有老的節(jié)點退出集群。這個時候,集群中其他機器需要感知到這種變化,然后根據(jù)這種變化做出對應(yīng)的決策。比如我們是一個分布式存儲系統(tǒng),有一個中央控制節(jié)點負(fù)責(zé)存儲的分配,當(dāng)有新的存儲進(jìn)來的時候我們要根據(jù)現(xiàn)在集群目前的狀態(tài)來分配存儲節(jié)點。這個時候我們就需要動態(tài)感知到集群目前的狀態(tài)。還有,比如一個分布式的SOA架構(gòu)中,服務(wù)是一個集群提供的,當(dāng)消費者訪問某個服務(wù)時,就需要采用某種機制發(fā)現(xiàn)現(xiàn)在有哪些節(jié)點可以提供該服務(wù)(這也稱之為服務(wù)發(fā)現(xiàn),比如Alibaba開源的SOA框架Dubbo就采用了Zookeeper作為服務(wù)發(fā)現(xiàn)的底層機制)。還有開源的Kafka隊列就采用了Zookeeper作為Cosnumer的上下線管理。

      1.2 Solr集群的結(jié)構(gòu)

       SolrCloud 高可用集群搭建

      1.3 Solr集群的搭建

      本教程的這套安裝是單機版的安裝,所以采用偽集群的方式進(jìn)行安裝,如果是真正的生產(chǎn)環(huán)境,將偽集群的ip改下就可以了,步驟是一樣的。

      SolrCloud結(jié)構(gòu)圖如下:

       SolrCloud 高可用集群搭建

      需要三個zookeeper節(jié)點

      四個solr節(jié)點。

      使用偽分布式實現(xiàn)solr集群。需要三個zookeeper實例,4tomcat實例,可以在一臺虛擬機上模擬。建議虛擬機1G以上內(nèi)存。

      1.4 Zookeeper集群的搭建

      1.4.1 前臺條件

      三個zookeeper實例。Zookeeper也是Java開發(fā)的所以需要安裝jdk。

      1、Linux系統(tǒng)

      2、Jdk環(huán)境。

      3、Zookeeper。

      1.4.2 Zookeeper的安裝步驟

      準(zhǔn)備安裝包:

      鏈接:https://pan.baidu.com/s/1DnjSW-4mpdkPCR5v3UN7mw
      提取碼:8ilt 

      第一步:把zookeeper的安裝包上傳到服務(wù)器

      第二步:解壓縮。

      [root@bogon ~]# tar -zxf zookeeper-3.4.6.tar.gz

      [root@bogon ~]#

      第三步:在/usr/local/目錄下創(chuàng)建一個solrcloud目錄。把zookeeper解壓后的文件夾復(fù)制到此目錄下三份。分別命名為zookeeper12、3

      [root@bogon ~]# mkdir /usr/local/solrcloud

      [root@bogon ~]# mv zookeeper-3.4.6 /usr/local/solrcloud/zookeeper1

      [root@bogon ~]# cd /usr/local/solrcloud

      [root@bogon solrcloud]# ll

      total 4

      drwxr-xr-x. 10 1000 1000 4096 Feb 20  2014 zookeeper1

      [root@bogon solrcloud]# cp -r zookeeper1/ zookeeper2

      [root@bogon solrcloud]# cp -r zookeeper1/ zookeeper3

      [root@bogon solrcloud]#

      第四步:配置zookeeper

      1、在每個zookeeper文件夾下創(chuàng)建一個data目錄。

      2、data文件夾下創(chuàng)建一個文件名稱為myid,文件的內(nèi)容就是此zookeeper的編號1、23

      [root@bogon data]# echo 1 >> myid

      [root@bogon data]# ll

      total 4

      -rw-r–r–. 1 root root 2 Sep 17 23:43 myid

      [root@bogon data]# cat myid

      1

      [root@bogon data]#

      zookeeper2、3文件夾下分別創(chuàng)建data目錄和myid文件

      [root@bogon solrcloud]# mkdir zookeeper2/data

      [root@bogon solrcloud]# echo 2 >> zookeeper2/data/myid

      [root@bogon solrcloud]# ll zookeeper2/data

      total 4

      -rw-r–r–. 1 root root 2 Sep 17 23:44 myid

      [root@bogon solrcloud]# cat zookeeper2/data/myid

      2

      [root@bogon solrcloud]# mkdir zookeeper3/data        

      [root@bogon solrcloud]# echo 3 >> zookeeper3/data/myid

      [root@bogon solrcloud]#

      3、zookeeper1conf目錄下的zoo_sample.cfg文件復(fù)制一份改名為zoo.cfg

      [root@bogon conf]# cp zoo_sample.cfg  zoo.cfg

      4、修改zoo.cfg的配置

      vim zoo.cfg

       SolrCloud 高可用集群搭建

      對zookeeper2、3中的設(shè)置做第二步至第四步修改。
      zookeeper2:
      myid內(nèi)容為2
      dataDir=/usr/local/solrcloud/zookeeper2/data
      clientPort=2182
      Zookeeper3:
      的myid內(nèi)容為3
      dataDir=/usr/local/solrcloud/zookeeper3/data
      clientPort=2183

      第五步:

      啟動三個zookeeper
      /usr/local/solrcloud/zookeeper1/bin/zkServer.sh start
      /usr/local/solrcloud/zookeeper2/bin/zkServer.sh start
      /usr/local/solrcloud/zookeeper3/bin/zkServer.sh start
      查看集群狀態(tài):
      /usr/local/solrcloud/zookeeper1/bin/zkServer.sh status
      /usr/local/solrcloud/zookeeper2/bin/zkServer.sh status
      /usr/local/solrcloud/zookeeper3/bin/zkServer.sh status

      狀態(tài)信息如下:

      [root@bogon solrcloud]# /usr/local/solrcloud/zookeeper1/bin/zkServer.sh status
      JMX enabled by default
      Using config: /usr/local/solrcloud/zookeeper1/bin/../conf/zoo.cfg
      Mode: follower
      [root@bogon solrcloud]# /usr/local/solrcloud/zookeeper2/bin/zkServer.sh status
      JMX enabled by default
      Using config: /usr/local/solrcloud/zookeeper2/bin/../conf/zoo.cfg
      Mode: leader
      [root@bogon solrcloud]# /usr/local/solrcloud/zookeeper3/bin/zkServer.sh status
      JMX enabled by default
      Using config: /usr/local/solrcloud/zookeeper3/bin/../conf/zoo.cfg
      Mode: follower
      [root@bogon solrcloud]#

      1.5 Solr實例的搭建

      第一步:將apache-tomcat-7.0.47.tar.gz解壓
      tar -zxvf apache-tomcat-7.0.47.tar.gz
      第二步:把解壓后的tomcat復(fù)制到/usr/local/solrcloud/目錄下復(fù)制四份。

      cp apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat1 -r
      cp apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat2 -r
      cp apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat3 -r
      cp apache-tomcat-7.0.47 /usr/local/solrcloud/tomcat4 -r

      第三步:修改tomcat的server.xml
      vim tomcat2/conf/server.xml,把其中的端口后都加一。保證兩個tomcat可以正常運行不發(fā)生端口沖突。

      第四步:解壓solr-4.10.3.tar.gz壓縮包。復(fù)制solr.wartomcat。

      cd solr-4.10.3/dist

      cp solr-4.10.3.war /usr/local/solrcloud/tomcat1/webapps/solr.war
      cp solr-4.10.3.war /usr/local/solrcloud/tomcat2/webapps/solr.war
      cp solr-4.10.3.war /usr/local/solrcloud/tomcat3/webapps/solr.war
      cp solr-4.10.3.war /usr/local/solrcloud/tomcat4/webapps/solr.war

      第五步:啟動tomcat解壓war包。把solr-4.10.3目錄下example目錄下的關(guān)于日志相關(guān)的jar包添加到solr工程中(可參考上一篇solr單機版的文章https://www.cnblogs.com/hxun/p/11159031.html)。

      這里直接拷貝上篇文章搭建 配置好的solr文件

      cd solr/tomcat/webapps/
      cp solr -r ../../../solrcloud/tomcat1/webapps/
      cp solr -r ../../../solrcloud/tomcat2/webapps/
      cp solr -r ../../../solrcloud/tomcat3/webapps/
      cp solr -r ../../../solrcloud/tomcat4/webapps/

      第六步:拷貝單機版的solrhome。修改每個web.xml指定solrhome的位置。

      cd /usr/local/solr/
      cp -r solrhome/ ../solrcloud/solrhome1
      cp -r solrhome/ ../solrcloud/solrhome2
      cp -r solrhome/ ../solrcloud/solrhome3
      cp -r solrhome/ ../solrcloud/solrhome4

      vim tomcat1/webapps/solr/WEB-INF/web.xml
      vim tomcat2/webapps/solr/WEB-INF/web.xml
      vim tomcat3/webapps/solr/WEB-INF/web.xml
      vim tomcat4/webapps/solr/WEB-INF/web.xml
      分別修改路徑為
      /usr/local/solrcloud/solrhome1
      /usr/local/solrcloud/solrhome2
      /usr/local/solrcloud/solrhome3
      /usr/local/solrcloud/solrhome4

      1.6 solr集群的搭建

      1.6.1 第一步

      solrhome中的配置文件上傳到zookeeper集群。使用zookeeper的客戶端上傳。

      進(jìn)入客戶端命令位置:cd /root/solr-4.10.3/example/scripts/cloud-scripts

       SolrCloud 高可用集群搭建

      ./zkcli.sh -zkhost 192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183 -cmd upconfig -confdir /usr/local/solrcloud/solrhome1/collection1/conf -confname myconf

      查看配置文件是否上傳成功:

      [root@bogon bin]# cd /usr/local/solrcloud/zookeeper1/bin/

      [root@bogon bin]# ./zkCli.sh

      Connecting to localhost:2181

      [zk: localhost:2181(CONNECTED) 0] ls /

      [configs, zookeeper]

      [zk: localhost:2181(CONNECTED) 1] ls /configs

      [myconf]

      [zk: localhost:2181(CONNECTED) 2] ls /configs/myconf

      [admin-extra.menu-top.html, currency.xml, protwords.txt, mapping-FoldToASCII.txt, _schema_analysis_synonyms_english.json, _rest_managed.json, solrconfig.xml, _schema_analysis_stopwords_english.json, stopwords.txt, lang, spellings.txt, mapping-ISOLatin1Accent.txt, admin-extra.html, xslt, synonyms.txt, scripts.conf, update-script.js, velocity, elevate.xml, admin-extra.menu-bottom.html, clustering, schema.xml]

      [zk: localhost:2181(CONNECTED) 3]

      1.6.2 第二步

      修改solrhome下的solr.xml文件,指定當(dāng)前實例運行的ip地址及端口號。

      vim /usr/local/solrcloud/solrhome1/solr.xml

      vim /usr/local/solrcloud/solrhome2/solr.xml

      vim /usr/local/solrcloud/solrhome3/solr.xml

      vim /usr/local/solrcloud/solrhome4/solr.xml

      修改host和prot從8080到8083

       SolrCloud 高可用集群搭建

      1.6.3 第三步

      修改每一臺solrtomcat bin目錄下catalina.sh文件中加??DzkHost指定zookeeper服務(wù)器地址: 

      vim /usr/local/solrcloud/tomcat1/bin/catalina.sh
      vim /usr/local/solrcloud/tomcat2/bin/catalina.sh
      vim /usr/local/solrcloud/tomcat3/bin/catalina.sh
      vim /usr/local/solrcloud/tomcat4/bin/catalina.sh

      JAVA_OPTS=”-DzkHost=192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183″

      (可以使用vim的查找功能查找到JAVA_OPTS的定義的位置,然后添加)

      1.6.4 第四步

      重新啟動tomcat。

      如果覺得一個個啟動tomcat麻煩可以編寫腳本一鍵啟動 如下:
      vim /usr/local/solrcloud/startall.sh
      編寫內(nèi)容:
      /usr/local/solrcloud/tomcat1/bin/startup.sh
      /usr/local/solrcloud/tomcat2/bin/startup.sh
      /usr/local/solrcloud/tomcat3/bin/startup.sh
      /usr/local/solrcloud/tomcat4/bin/startup.sh

      加權(quán)限:
      chmod +x /usr/local/solrcloud/startall.sh

      執(zhí)行腳本:/usr/local/solrcloud/startupall.sh

       一鍵關(guān)閉同理。SolrCloud 高可用集群搭建

      一個主節(jié)點多個備份節(jié)點,集群只有一片。

      1.6.5 第五步

      創(chuàng)建一個兩片的collection,每片是一主一備。

      在瀏覽器地址欄使用以下命令創(chuàng)建:

      http://192.168.25.154:8080/solr/admin/collections?action=CREATE&name=collection2&numShards=2&replicationFactor=2

       SolrCloud 高可用集群搭建

       SolrCloud 高可用集群搭建

      1.6.6 第六步

      刪除collection1.

      http://192.168.25.154:8080/solr/admin/collections?action=DELETE&name=collection1

       SolrCloud 高可用集群搭建

      SolrCloud 高可用集群搭建 

      Solr集群的使用

      使用solrj操作集群環(huán)境的索引庫。

      2.1 Solrj測試

      public class SolrCloudTest {

      @Test

      public void testAddDocument() throws Exception {

      //創(chuàng)建一個和solr集群的連接

      //參數(shù)就是zookeeper的地址列表,使用逗號分隔

      String zkHost = “192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”;

      CloudSolrServer solrServer = new CloudSolrServer(zkHost);

      //設(shè)置默認(rèn)的collection

      solrServer.setDefaultCollection(“collection2”);

      //創(chuàng)建一個文檔對象

      SolrInputDocument document = new SolrInputDocument();

      //向文檔中添加域

      document.addField(“id”, “test001”);

      document.addField(“item_title”, “測試商品”);

      //把文檔添加到索引庫

      solrServer.add(document);

      //提交

      solrServer.commit();

      }

      @Test

      public void deleteDocument() throws SolrServerException, IOException {

      //創(chuàng)建一個和solr集群的連接

      //參數(shù)就是zookeeper的地址列表,使用逗號分隔

      String zkHost = “192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”;

      CloudSolrServer solrServer = new CloudSolrServer(zkHost);

      //設(shè)置默認(rèn)的collection

      solrServer.setDefaultCollection(“collection2”);

      solrServer.deleteByQuery(“*:*”);

      solrServer.commit();

      }

      }

      2.2 Solrjspring集成

      修改spring的配置文件,添加集群版的配置:

      <!– 集群版 –>

      <bean id=“cloudSolrServer” class=“org.apache.solr.client.solrj.impl.CloudSolrServer”>

      <constructor-arg name=“zkHost” value=“192.168.25.154:2181,192.168.25.154:2182,192.168.25.154:2183”></constructor-arg>

      <property name=“defaultCollection” value=“collection2”></property>

      </bean>

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號