在網(wǎng)上現(xiàn)在有很多那種ES步驟和問題的解決 方案的,不過沒有一個詳細的整合和問題的梳理;現(xiàn)在我們來記錄一下自己安裝的過程以及遇到問題的解決;有什么不對的和問題希望及時拍磚。
Linux系統(tǒng):CentOS 7.5
ES安裝環(huán)境的準備和初始化
現(xiàn)在比較新的版本Elasticsearch 5.6.3,官方建議安裝Oracle的JDK8,安裝前先檢查機器是否已安裝JDK。
檢查環(huán)境機器是否已安裝JDK
rpm -qa | grep -E ‘^open[jre|jdk]|j[re|dk]’
如果有的話,卸載掉,可以使用rpm -qa | grep java | xargs rpm -e –nodeps 批量卸載所有帶有Java的文件,然后進行重新安裝。
下載新的JDK
下載網(wǎng)址:
[linuxidc@localhost ~]$ wget –no-check-certificate –no-cookies
> –header “Cookie: oraclelicense=accept-securebackup-cookie”
> http://download.oracle.com/otn-pub/java/jdk/8u192-b12/750e1c8617c5452694857ad95c3ee230/jdk-8u192-linux-x64.tar.gz
JDK的下載可以去官網(wǎng)上直接下載,再次聲明一下不要下載最新版本 JAVA 9 版本本人在次已經(jīng)踩過坑了
ES 去官網(wǎng)直接下載,本人使用的是 5.6.3 版本;因為版本的不同安裝head插件的時候安裝步驟不同;好像是從5.0 以后的版本安裝head 插件的步驟就不一樣了;下面會詳細介紹。
安裝JDK環(huán)境
前提:查看該系統(tǒng)是否安裝過Java 環(huán)境,如果安裝過將其卸載安裝最新的版本,更換Java 的版本也可以這樣去操作。
執(zhí)行命令 rpm -qa|grep jdk 如果安裝過將會列出相應(yīng)的版本,如果沒有什么都不會輸出。如果安裝過使用rpm -e –nodeps java-1.7.0-openjdk-headless-1.7.0.111-2.6.7.2.el7_2.x86_64 使用這個命令需要注意的就是,列出多少個版本插件就要卸載幾個插件;執(zhí)行完成后;在使用 rpm -qa|grep jdk 去查看一下是否有遺漏的插件沒有卸載。
直接將下載好的 jdk-8u192-linux-x64.rpm 安裝包 ;上傳到自己創(chuàng)建好的java文件下;cd 命令進入到j(luò)ava文件下使用rpm 命令進行安裝 rpm -ivh jdk-8u192-linux-x64.rpm
安裝完成后執(zhí)行 java -version 命令查看安裝是否成功
查看安裝目錄命令,
命令一:
[linuxidc@localhost ~]$ java -version
java version “1.8.0_192”
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)
命令二:
[linuxidc@localhost ~]$ which java
/usr/bin/java
[linuxidc@localhost ~]$ ls -lrt /usr/bin/java
lrwxrwxrwx. 1 root root 22 11月 12 18:23 /usr/bin/java -> /etc/alternatives/java
命令三:
[linuxidc@localhost ~]$ ls -lrt /etc/alternatives/java
lrwxrwxrwx. 1 root root 41 11月 12 18:23 /etc/alternatives/java -> /usr/java/jdk1.8.0_192-amd64/jre/bin/java
最后將會得出如如上這樣的目錄 /usr/java/jdk1.8.0_192-amd64/jre/bin/java
如下圖:
配置環(huán)境變量,執(zhí)行命令 nano /etc/profile;然后進入編輯模式,在文件的最后添加下面的配置,如圖
JAVA_HOME=/usr/java/jdk1.8.0_192-amd64
JRE_HOME=/usr/java/jdk1.8.0_192-amd64/jre
CLASSPATH=$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
修改完配置后,保存并退出。
執(zhí)行命令 source /etc/profile 使用環(huán)境變量生效
驗證環(huán)境變量是否生效,分別執(zhí)行下面的命令
echo $JAVA_HOME
echo $CLASSPATH
echo $PATH
OK,到現(xiàn)在JDK就安裝好了。
安裝Elasticsearch
下載ES安裝包elasticsearch-5.6.3.tar.gz
進入ES官網(wǎng),選擇合適的版本網(wǎng)址,進行下載
以下是5.6.3 版本的網(wǎng)址
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-5.6.3.tar.gz
新建賬號
因為使用root用戶執(zhí)行ES程序,將會出現(xiàn)錯誤;
[WARN ][o.e.b.ElasticsearchUncaughtExceptionHandler] [] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
所以這里需要創(chuàng)建單獨的用戶去執(zhí)行ES 文件;命令如下:
useradd estest –添加賬號
chown -R estest:estest elasticsearch-5.6.3 –為新增賬號賦予文檔目錄的權(quán)限
su estest —切換賬號
創(chuàng)建ES數(shù)據(jù)文件和日志文件,直接在root用戶根目錄一下創(chuàng)建就可以了
執(zhí)行命令一:mkdir /data
命令二:chown -R estest:estest data
執(zhí)行命令三:mkdir /logs
命令四:chown -R estest:estest logs
看看,如下圖
修改ES配置文件,使用cd命令進入到config 文件下,執(zhí)行 nano elasticsearch.yml 命令,如圖所示,本人沒有配置集群,只是簡單的配置了一下;詳細說明可以參考官網(wǎng);
啟動ES
在新建的賬號estest下啟動ES。
在ES 的bin 文件所在的目錄下執(zhí)行以下命令即可
./elasticsearch -d
驗證 ES 是否正常啟動
方法1. curl http://localhost:9200/ 檢查,顯示以下信息證明已啟動OK。
啟用遠程IP 訪問
Elasticsearch 默認是rest-api的端口是9200,不支持IP地址,只能在本機使用http://localhost:9200 來訪問,如果需要完成訪問,還需進行以下配置。
Step 1 修改elasticsearch.yml 文件中的network.host 和 http.port 參數(shù)
去除文件中network.host 和 http.port 參數(shù)前面的注釋(#),且將network.host 的IP地址修改為本地的IP地址。
Step 2 .編輯/etc/security/limits.conf 文檔,在文檔中添加以下參數(shù)
sudo nano /etc/security/limits.conf
* soft nofile 65536
* hard nofile 131072
此參數(shù)主要解決以下錯誤:
max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
需要退出當前用戶,再次登錄才能生效。
Step 3 . 編輯vim /etc/sysctl.conf 文檔,在文檔中添加以下參數(shù)
vm.max_map_count=655360
編輯保存后并執(zhí)行命令: sysctl -p
此操作主要是解決以下問題
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ps:別的機器進行訪問時需要開放9200端口和9300端口,9200是http協(xié)議端口,9300是tcp協(xié)議端口,為java client服務(wù)的。我這里沒有單獨打開端口,只是關(guān)閉了防火強,CentOS7關(guān)閉防火墻和CentOS6不一樣,7的防火墻是firewalld的服務(wù),執(zhí)行命令
//臨時關(guān)閉
systemctl stop firewalld
//禁止開機啟動
systemctl disable firewalld
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.Fedoraproject.FirewallD1.service.
集群時需要添加一些配置,如果搭三個虛擬機做集群,想cluster.name相同時發(fā)現(xiàn)并不是集群,在es配置文件中需要添加額外配置
discovery.zen.ping.unicast.hosts: [“xxx.xxx.xxx”,”xxx.xxx.xxx”,”xxx.xxx.xxx”]
discovery.zen.minimum_master_nodes: 3
解釋說明:
bootstrap.memory_lock: false 這是鎖定內(nèi)存,在一篇調(diào)優(yōu)文章中這個設(shè)置成true時會減少內(nèi)存交換的消耗,這里先設(shè)置成false
bootstrap.system_call_filter: false 這個配置設(shè)置true在CentOS6或以上時會出現(xiàn)錯誤, 因為Centos6不支持SecComp
cluster.name 集群名字,同一個集群中使用相同名字,單機就隨意
node.name: node-01 節(jié)點名字
node.master: 是否為集群的master機器
node.data: true 是否作為數(shù)據(jù)節(jié)點
network.host: xxx.xxx.xxx.xxx 這個不用自然是配置ip地址的
http.port: 9200 端口號,不配置的話默認9200
discovery.zen.ping.unicast.hosts: [“xxx.xxx.xxx”,”xxx.xxx.xxx”,”xxx.xxx.xxx”] 這個就是配置集群的時候要用的到了,[]中填上集群中其他集群的ip的地址,如果是master的話請把所有salve的機器地址填上
discovery.zen.minimum_master_nodes: 2 關(guān)于這個值配置多少合適的話大家去搜一下,自己權(quán)衡一下集群,這里我用了3臺機器模擬集群,所以填上2。
http.cors.enabled: true 這個參數(shù)的設(shè)置和下面一個配置就關(guān)于ip的訪問策略了,如果你發(fā)現(xiàn)其他ip地址訪問不了就有可以這參數(shù)沒有配置
http.cors.allow-origin: “*”
未完待續(xù),請關(guān)注。