通過上篇博客,我們已經從概念上了解elasticsearch了,相信在安裝配置的時候,會有熟悉感的,尤其是在配置elasticsearch.yml文件的時候。
一、前提準備
ElasticSearch分爲Linux和Window版本,本篇博客用的Linux版本
ElasticSearch的官方地址: https://www.elastic.co/products/elasticsearch
我用的elasticsearch的包是:elasticsearch-6.3.0.tar.gz,所在路徑是/usr/local/elk
安裝elasticsearch前提是已經安裝好了jdk
安裝jdk可參考這篇博客:
【運維】Centos上JDK的下載與安裝
查看是否安裝jdk,java -version
如果安裝jdk過程中出現錯誤,可參考這篇博客
Linux安裝jdk1.8以及出現的問題
二、安裝配置
1、解壓
我將elasticsearch-6.3.0.tar.gz上傳到了/usr/local/elk的路徑下,所以需要在/usr/local/elk路徑下操作
cd /usr/local/elk
tar -zxvf elasticsearch-6.3.0.tar.gz
2、添加用戶
由於elasticsearch不能由root用戶啓動,所以需要添加一個用戶
(1)添加用戶組
groupadd es_admin
(2)添加用戶
useradd es_admin -g es_admin
(3)修改用戶密碼
echo 'es_admin' | passwd --stdin es_admin
(4)給用戶提升權限
chown -Rf es_admin:es_admin /usr/local/elk/elasticsearch-6.3.0
3、創建數據和日誌目錄
mkdir -pv /usr/local/elk/es630/data/{data1,data2,data3,logs}
這是一個批量創建命令
4、修改sysctl.conf文件
vim /etc/sysctl.conf
在文件末尾添加
vm.max_map_count=655360
可用sysctl -p查看是否設置成功
5、修改limits.conf文件
vim /etc/security/limits.conf
在文件末尾添加
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
重新登錄終端,上述配置即可生效。客用 ulimit -n查看
6、修改配置文件elasticsearch.yml
切換到config路徑下
cd /usr/local/elk/elasticsearch-6.3.0/config/
修改elasticsearch.yml文件
vim elasticsearch.yml
配置如下
# ---------------------------------- Cluster -----------------------------------
cluster.name: elasticsearch
cluster.routing.allocation.cluster_concurrent_rebalance: 16
cluster.routing.allocation.node_concurrent_recoveries: 16
cluster.routing.allocation.node_initial_primaries_recoveries: 16
# ------------------------------------ Node ------------------------------------
node.name: es_node1
node.master: true
node.data: true
# ----------------------------------- Paths ------------------------------------
path.data: /usr/local/elk/elasticsearch-6.3.0/data/data1,/usr/local/elk/elasticsearch-6.3.0/data/data2,/usr/local/elk/elasticsearch-6.3.0/data/data3
path.logs: /usr/local/elk/elasticsearch-6.3.0/data/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# ---------------------------------- Network -----------------------------------
network.host: 192.168.226.133 # 本機ip
network.tcp.no_delay: true
network.tcp.keep_alive: true
network.tcp.reuse_address: true
network.tcp.send_buffer_size: 64mb
network.tcp.receive_buffer_size: 64mb
transport.tcp.port: 9301 # tcp通訊端口號 默認是9300
transport.tcp.compress: true
http.max_content_length: 100mb
http.enabled: true
#解決跨域問題
http.cors.enabled: true
http.cors.allow-origin: "*"
http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
http.port: 9201 # http協議端口號 默認是9200
# --------------------------------- Discovery ----------------------------------
discovery.zen.ping.unicast.hosts: ["192.168.226.133", "192.168.226.132","192.168.226.134"] # 所搭建集羣的每臺機器的ip
discovery.zen.minimum_master_nodes: 2
discovery.zen.fd.ping_timeout: 150s
discovery.zen.fd.ping_retries: 6
discovery.zen.fd.ping_interval: 15s
7、分別另外倆臺機器的配置文件elasticsearch.yml
同上,只需要修改節點的名字即可
node.name: es_node1
如果覺得每臺都配一遍一樣的太費勁的話,我們可以直接將第一個配置好的elasticsearch.yml文件複製到另外倆臺服務器的相同路徑下即可。
可用服務器間傳輸文件的形式
scp -r /usr/local/elk/elasticsearch-6.3.0/config/elasticsearch.yml root@192.168.226.132:/usr/local/elk/elasticsearch-6.3.0/config/
scp -r /usr/local/elk/elasticsearch-6.3.0/config/elasticsearch.yml root@192.168.226.134:/usr/local/elk/elasticsearch-6.3.0/config/
8、啓動
(1)切換用戶
su - es_admin
(2)切換到bin目錄下
cd /usr/local/elk/elasticsearch-6.3.0/bin/
(3)啓動
./elasticsearch
後臺啓動
./elasticsearch -d
9、查看是否搭建成功
curl -XGET 'http://192.168.226.133:9201/_cat/nodes?v'
結果如下,就代表已搭建成功了
以上過程,elasticsearch集羣就搭建完了。
三、擴展
設置elasticsearch開機自啓
做了開機自啓,之後服務器重啓,我們就不用手動一個一個啓動elasticsearch了。
(1)修改elasticsearch文件
vim /etc/init.d/elasticsearch
#!/bin/sh
#chkconfig: 2345 80 05
#description: elasticsearch
export JAVA_HOME=/usr/local/java/jdk1.8.0_65/
export JAVA_BIN=/usr/local/java/jdk1.8.0_65/bin
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
case "$1" in
start)
su es_admin<<!
cd /usr/local/elk/elasticsearch-6.3.0
./bin/elasticsearch -d
!
echo "elasticsearch startup"
;;
stop)
es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
kill -9 $es_pid
echo "elasticsearch stopped"
;;
restart)
es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
kill -9 $es_pid
echo "elasticsearch stopped"
su es_admin<<!
cd /usr/local/elk/elasticsearch-6.3.0
./bin/elasticsearch -d
!
echo "elasticsearch startup"
;;
*)
echo "start|stop|restart"
;;
esac
exit $?
(2)修改文件權限
chmod +x /etc/init.d/elasticsearch
(3)添加開機自啓
chkconfig --add /etc/init.d/elasticsearch