elasticsearch(二) 之 elasticsearch安裝
目錄
elasticsearch 安裝與配置
安裝java
elasticsearch 需要 java環境
使用Java版本1.8.0_131或更高版本 安裝受支持的LTS版本java
并配置好環境變量
java 8早期的版本在啟用 G1GC收集器時會導致索引損壞。所以我們盡量使用Java版本1.8.0_131或更高版本(官網鏈接)
cd /tmp && wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u131-b11/d54c1d3a095b4ff2b6607d096fa80163/jdk-8u131-linux-x64.rpm
rpm -ivh jdk-8u131-linux-x64.rpm
環境變量: vi + /etc/profile
JAVA_HOME=/usr/java/jdk1.8.0_131
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
加載環境變量
source /etc/profile
安裝elastcsearch
二進制安裝(tar包)
不要以root去運行
curl -L -O https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.2.tar.gz.sha512
yum install perl-Digest-SHA # 解決shasum在centos執行不了的問題。
shasum -a 512 -c elasticsearch-6.3.2.tar.gz.sha512
tar -xvf elasticsearch-6.3.2.tar.gz
cd elasticsearch-6.3.2/bin
# 啟動(默認監聽9200端口)
./elasticsearch
# 后臺運行
./elasticsearch -d
# 后臺運行并記錄pid到文件
./elasticsearch -d -p ./elasticsearch.pid
# 關閉
kill `cat elasticsearch.pid `
當elasticsearch 有異常時會返回一個錯誤狀態碼
| 錯誤 | 狀態碼 |
|---|---|
| jvm 內部錯誤 | 128 |
| 內存不足 | 127 |
| 堆棧溢出 | 126 |
| 未知的虛擬機錯誤 | 125 |
| io 錯誤 | 124 |
| 未知的其他錯誤 | 1 |
在進入生產之前我們必須要考慮到以下設置
- 禁用swap
- 增加文件描述符
- 合適配置的jvm內存
- 足夠的線程
- jvm dns 緩存設置
怎么才意味著從開發模式到生產模式。
一但我們配置了network.host ,elasticsearch 就會認為我們將從開發模式轉為生產模式
一些警告可能會升級到異常來阻止我們啟動。
增大打開文件句柄數量
方法一: 臨時修改
在root的情況下:
ulimit -n 65536
方法二: 永久修改
更改配置文件:/etc/security/limits.conf
在文件末尾前面加入
Elsearch(啟動的用戶名) - nofile 65536
注意: 如果已經登錄了啟動用戶,需要在更改配置后重新登錄下。
方法三: 如果是rpm包安裝的,我們可以使用systemd服務來進行配置
systemctl edit elasticsearch
更改
[Service]
LimitMEMLOCK=infinity
重新加載配置
systemctl daemon-reload
禁用虛擬內存
交換分區對性能,對節點的穩定性非常不利,可能導致收集持續數分鐘。并且可能導致節點響應緩慢甚至斷開與群集的連接,在分布式系統中應該避免。
方法一:
臨時禁用:swapoff –a
永久禁用:您需要編輯/etc/fstab文件并注釋掉包含該單詞的任何行swap
方法二:
將vm.swappiness 設置為1
降低了使用交換的概率,正常情況下不應該使用交換,允許系統在緊急情況下使用swap.
設置:
臨時:sysctl -w vm.swappiness=1
永久 或者修改配置文件
vim /etc/sysctl.conf 以 key=values 的方式存儲。
查看所有的可讀變量: sysctl -a
方法三:
修改elasticsearch 的配置文件。
config/elasticsearch.yml 修改為:bootstrap.memory_lock: true
合適配置的jvm內存
一般在運行elasticsearch 的時候最小需要是內存是1G,少于1G我們會經常啟動不了。
-Xms1g # 最小值為1G
-Xmx1g # 最大值為1G
對于這個值的設置,官方為了適應不同的java版本,特做了一些適應配置
-Xms1g 不受版本影響,默認
8:-Xmx2g 只適應java8版本
8-:-Xmx2g 適應java8及以上版本
8-9:-Xmx2g 適應java8-java-9版本
官方文檔寫到:以往經驗得出,
1. 最大值和最小值設置為一樣的值,否則在系統使用的時候會因jvm值變化而導致服務暫停
2. 過多的內存,會導致用于緩存的內存越多,最終導致回收內存的時間也加長
3. 設置的內存不要超過物理內存的50%,以保證有足夠的內存留給操作系統
4. 不要將內存設置超過32GB
配置線程數
elasticsearch 用戶需要創建的線程數至少為4096。
# 臨時設置
ulimit -u 4096
# 永久設置
vim /etc/security/limits.d/90-nproc.conf
user soft nproc 4096
修改完即可生效。
max_map_count太小
vim /etc/sysctl.conf
#增加以下內容:
vm.max_map_count=262144
#保存退出vim后使sysctl.conf生效:
sysctl -p
最大文件大小
這個可以無需設置,基本都可以滿足
centos 7 使用 xfs 文件系統 最大支持單文件8EB (大多數企業都可以滿足)
centos 6 使用 ext4 文件系統 單文件達到16TB
DNS緩存設置
作者:理想三旬
本人承接各種項目維護和python項目開發, 如果覺得文章寫得不錯,或者幫助到您了,請點個贊,加個關注哦。運維學習交流群:544692191
本文版權歸作者所有,歡迎轉載,如果文章有寫的不足的地方,或者是寫得錯誤的地方,請你一定要指出,因為這樣不光是對我寫文章的一種促進,也是一份對后面看此文章的人的責任。謝謝。

浙公網安備 33010602011771號