首頁>Club>
8
回覆列表
  • 1 # 物空飛雨

    以前做過一個專案,主要是用作職位的搜尋,所以當時 資料是放在 es裡的搜尋。es版本使用6.3.2 簡單介紹一下elasticsearch :

    •Elasticsearch是一個實時的分散式搜尋和分析引擎。它可以幫助你用前所未有的速度去處理大規模資料。 •它可以用於全文搜尋,結構化搜尋以及分析,當然你也可以將這三者進行組合。 •Elasticsearch是一個建立在全文搜尋引擎 Apache Lucene™ 基礎上的搜尋引擎,可以說Lucene是當今最先進,最高效的全功能開源搜尋引擎框架。 •但是Lucene只是一個框架,要充分利用它的功能,需要使用JAVA,並且在程式中整合Lucene。需要很多的學習瞭解,才能明白它是如何執行的,Lucene確實非常複雜。 •Elasticsearch使用Lucene作為內部引擎,但是在使用它做全文搜尋時,只需要使用統一開發好的API即可,而不需要了解其背後複雜的Lucene的執行原理。

    優點: •Elasticsearch是分散式的。不需要其他元件,分發是實時的,被叫做”Push replication”。 •Elasticsearch 完全支援 Apache Lucene 的接近實時的搜尋(文件的變化是從記憶體到)。 •處理多租戶(multitenancy)不需要特殊配置,而Solr則需要更多的高階設定。 •Elasticsearch 採用 Gateway 的概念,使得完備份更加簡單。 •各節點組成對等的網路結構,某些節點出現故障時會自動分配其他節點代替其進行工作。 •搭建環境 (centos 7)下載 •wget

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz

    •解壓 加入環境變數 •tar xf elasticsearch-6.3.2.tar.gz -C /usr/local/ ln -s /usr/local/elasticsearch-6.3.2 /usr/local/elasticsearch echo "PATH=$PATH:/usr/local/elasticsearch/bin" >>/etc/profile && . /etc/profile •vim

    elasticsearch.yml

    •curl http://localhost:9200

  • 2 # 架構師成長錄

    筆者曾經運維過一個分散式日誌服務,託管了部門十幾條產品線的業務日誌。因此就Elasticsearch環境的搭建有相應的積累。主要內容如下:

    ES安裝方法

    ES單節點部署遇到的問題

    ES叢集配置

    1. ES安裝方法

    Linux使用者登入(work),我們用的是6.3版本的包。從官網下載:

    curl -L -O

    https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.0.tar.gz

    解壓後,進入到bin目錄下,使用 ./elasticsearch 命令啟動,看到如下的提示,即為啟動成功。埠號9200.

    2. ES單節點部署遇到的問題

    1.記住不要在root下啟動,否則會報錯:can not run elasticsearch as root

    2.如果是在root下下載的elasticsearch,可能會報下面的錯誤:

    main ERROR Could not register mbeans Java.security.AccessControlException: access denied ("javax.management.MBeanTrustPermission" "register")

    【解決方案】:改變elasticsearch資料夾所有者到當前使用者

    sudo chown -R bae:bae elasticsearch

    3. jdk的版本要在1.8以上

    4.錯誤:

    【解決方法】:切換到root使用者, vi /etc/security/

    limits.conf

    ,新增如下內容:

    vi /etc/security/limits.d/90-nproc.conf 修改如下內容: * soft nproc 1024 #修改為 * soft nproc 2048

    vi /etc/sysctl.conf

    新增下面配置:並執行命令: sysctl -p

    執行上述sysctl -p命令可能會遇到如下錯誤:

    錯誤的原因是3個bridge模組未載入。可以先執行命令 modprobe bridge

    然後再執行sysctl -p命令,重啟elasticsearch。此處備註一下es的啟動,可以在bin目錄下直接執行./elasticsearch,但是有一個問題,終端關閉之後,elasticsearch這個程序就被殺掉了。此時,可以使用如下命令啟動 nohup ./elasticsearch &

    5. 報錯:

    ERROR: bootstrap checks failed system call filters failed to install; check the logs and fix your configuration or disable system call filters at your own risk

    【解決】:在elasticsearch.yml中配置bootstrap.system_call_filter為false,注意要在Memory下面: bootstrap.memory_lock: falsebootstrap.system_call_filter: false

    【錯誤原因】:這是在因為Centos6不支援SecComp,而ES5.2.0預設bootstrap.system_call_filter為true進行檢測,所以導致檢測失敗,失敗後直接導致ES不能啟動。

    3. ES叢集配置

    多機叢集中的節點可以分為master nodes和data nodes,在配置檔案中使用Zen發現(Zen discovery)機制來管理不同節點。Zen發現是ES自帶的預設發現機制,使用多播發現其它節點。只要啟動一個新的ES節點並設定和叢集相同的名稱這個節點就會被加入到叢集中。

    Elasticsearch叢集中有的節點一般有三種角色:master node、data node和client node。

    master node:master幾點主要用於元資料(metadata)的處理,比如索引的新增、刪除、分片分配等。data node:data 節點上儲存了資料分片。它負責資料相關操作,比如分片的 CRUD,以及搜尋和整合操作。這些操作都比較消耗 CPU、記憶體和 I/O 資源;client node:client 節點起到路由請求的作用,實際上可以看做負載均衡器。

    我們選m1這臺機器作為client node,elasticsearch.yml中的配置如下:

    cluster.name: mkt-es-cluster node.name: ${HOSTNAME} network.host: 0.0.0.0discovery.zen.ping.unicast.hosts: ["10.**.**.**"]

    在m2上配置elasticsearch.yml:

    cluster.name: mkt-es-cluster node.name: ${HOSTNAME} network.host: 0.0.0.0discovery.zen.ping.unicast.hosts: ["10.**.**.**"]

    我們在任意一臺機器上請求:curl "localhost:9200/_cat/health?v"

    我們可以看到,標誌著叢集狀態的status顯示為green,節點個數為2個。

  • 中秋節和大豐收的關聯?
  • 翡翠首飾佩戴久後綠色真的會變多嗎?