Linux下elasticsearch的安裝配置以及head插件的安裝使用

注:elasticsearch是用Java編寫的,elasticsearch的運行需要有Java環境,因此需要先行下載jdk。

首先介紹elasticsearch的幾個基本概念:
? index:?es里的index相當于數據庫名稱。
? type:?相當于數據庫里的一個表。
? id:唯一,相當于主鍵。
? node:?節點是es實例,一臺機器可以運行多個實例,但是要保證端口號不同,可以在配置文件中進行配置。
? cluster:?代表一個集群,集群由一個或多個節點組成。集群會自動選舉其中一個節點為主節點。
? shards:代表索引分片,es可以把一個完整的索引分成多個分片,這樣的好處是可以把一個大的索引拆分成多個,分布到不同的節點上,構成分布式搜索。分片的數量只能在索引創建前指定,并且索引創建后不能更改,默認的分片數量為5個。
? replicas:?代表索引副本,es可以設置多個索引的副本,副本的作用一是提高系統的容錯性,當個某個節點某個分片損壞或丟失時可以從副本中恢復。二是提高es的查詢效率,es會自動對搜索請求進行負載均衡,默認的副本數量為1個。

1、下載安裝elasticsearch

因為elasticsearch本身就是一個集群,所以我們需要準備多臺機器來進行安裝。這里我使用的是:192.168.198.223,192.168.198.224,192.168.198.226。需要分別在每臺機器上安裝elasticsearch。這里給出官網地址:https://www.elastic.co/guide/en/elasticsearch/reference/current/_installation.html

注意此處的坑:

● root超級用戶身份不能啟動,這應該是出于安全考錄設置的條件。

解決方案:創建一個單獨的用戶來啟動elasticsearch

groupadd elastic
useradd elastic -g elastic
#給elastic用戶賦予權限,這里的elasticsearch-5.5.0是elasticsearch的安裝目錄
chown -R elastic:elastic elasticsearch-5.5.0

其他可能出現的坑:

● ERROR: bootstrap checks failed
解決方案:切換到root用戶,編輯limits.conf 添加類似如下內容
vi /etc/security/limits.conf
添加如下內容:
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096

max number of threads [1024] for user [lish] likely too low, increase to at least [2048]
解決方案:切換到root用戶,進入limits.d目錄下修改配置文件。
vi /etc/security/limits.d/90-nproc.conf
修改如下內容:
* soft nproc 1024
#修改為
* soft nproc 2048

max virtual memory areas vm.max_map_count [65530] likely too low, increase to at least [262144]
解決方案:切換到root用戶修改配置sysctl.conf
vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=655360
并執行命令:
sysctl -p
重新啟動elasticsearch即可。

2、配置elasticsearch

這里有幾個elasticsearch配置選項個人認為還是有必要配置一下的,先關閉每臺機器上的elasticsearch,編輯elasticsearch.yml:

cd elasticsearch-5.5.0/config ? ? ? ?#進入config目錄
vim elasticsearch.yml ? ? ? ?#編輯elasticsearch.yml文件

#集群名字,可以自定義,這里我起名為 mycluster,es啟動后會將同一網段下具有相同集群名字的節點放到一個集群下。
cluster.name:? mycluster

#節點名字,默認的節點名字是一串隨機字符串,而且每次啟動都會不一樣。我們自己修改了之后查看日志等都會方便一點。同一集群中不同節點應該取不一樣的名字。
node.name:"node-1"? ? ? #我的三個節點取的名字分別是:node-1,node-2,node-3

#設置數據以及日志的路徑。默認情況下,Eleasticsearch會把插件、日志以及你最重要的數據放在安裝目錄下,你可以自己重新設置到安裝目錄之后的地方。
path.data: /data/es
path.logs: /log/es

#設置綁定的ip地址以及與其它節點交互的IP地址,設置為0.0.0.0即可。
network.host:0.0.0.0

#設置是否打開多播方式發現節點,默認是true。生產環境中建議把多播關閉,因為某個節點可能會意外加入一個集群。建議使用單播方式。
discovery.zen.ping.multicast.enabled:false

#指定集群中的節點中有幾個有master資格的節點。這個配置就是告訴Elasticsearch當沒有足夠master候選節點的時候,就不要進行master選舉,等master候選節點足夠了才進行選舉。這個配置有助于防止集群分裂。推薦個數就是(master候選節點個數*2)+1。視具體情況而定。如果有兩個節點,那么就遇到難題了,推薦數當然是2,但是這意味著如果有一個節點掛掉,整個集群就不可用了。設置成1可以保證集群的功能,但是就無法保證集群分裂了,那么這樣的情況,最好至少保證有3個節點。
covery.zen.minimum_master_nodes:2

#discovery.zen.ping.unicast.hosts:["節點1的 ip","節點2 的ip","節點3的ip"]指明集群中其它可能為master的節點ip,以防es啟動后發現不了集群中的其他節點。第一對引號里是node1。第二個是 node2 。
discovery.zen.ping.unicast.hosts: ["192.168.198.223","192.168.198.224"]

elasticsearch的默認對外服務的http端口號是9200,節點間交互的tcp端口號是9300。我們要保證開放其防火墻端口。

3、可視化工具elasticsearch-head的安裝

官方 GitHub 地址為:https://github.com/mobz/elasticsearch-head。之前head是作為elasticsearch的插件安裝的,不過現在這種方法已經廢棄。
在我本地電腦上執行:

git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
#注意需要有node環境,如果沒有,安裝node環境就好了
npm install

然后打開elasticsearch-head/Gruntfile.js,找到下面connect屬性,新增hostname: ‘*’,

connect: {
? ?server: {
? ? ? options: {
? ? ? ? ? hostname:'*',
? ? ? ? ? port: 9100,
? ? ? ? ? base:'.',
? ? ? ? ? keepalive:true
? ? ? }
}

修改elasticsearch配置文件使其允許跨域:

cd elasticsearch-5.5.0/config? ? ? ? #進入config目錄
vim elasticsearch.yml? ? ? ? #編輯elasticsearch.yml文件
#添加如下內容
http.cors.enabled: true
http.cors.allow-origin: "*"

然后就可以執行elasticsearch-head了。進入elasticsearch-head目錄,執行命令:

npm run start

打開瀏覽器,輸入網址localhost:9100進入即可。

4、分別運行每臺機器上的elasticsearch

分別運行每臺機器上的elasticsearch,并且啟動本機上的elasticsearch-head插件,打開瀏覽器,輸入網址:localhost:9100進入,連接http://192.168.198.223:9200/,結果圖如下:

這里可以看到elasticsearch集群狀態是綠色,并且沒有任何數據。當我們查看集群狀態的時候,我們要么得到綠色、黃色或紅色。
綠色代表一切正常(集群功能齊全)。
黃色意味著所有的數據都是可用的,但是某些復制分片處于沒有被分配的狀態(集群功能齊全)。
紅色則代表因為某些原因,某些數據不可用。在這種狀態下,會有丟失數據的危險。

elasticsearch官方文檔:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容