最小化安裝 Centos 7.2 x86_64操做系統的虛擬機,vcpu 2,內存4G或更多,操做系統盤50G,主機名設置規則爲linux-hostX.exmaple.com,其中host1和host2爲elasticsearch服務器,爲保證效果特額外添加一塊單獨的數據磁盤大小爲50G並格式化掛載到/data。html
[root@localhost ~]# hostnamectl set-hostname linux-hostx.exmaple.com && reboot #各服務器配置本身的主機名並重啓java
[root@localhost ~]# hostnamectl set-hostname linux-host2.exmaple.com && rebootnode
[root@linux-host1 ~]# mkdir /elklinux
[root@linux-host1 ~]# mount /dev/sdb /elk/git
[root@linux-host1 ~]# echo " /dev/sdb /elk/ xfs defaults 0 0" >> /etc/fstabgithub
hostX 。。。。。web
關閉防全部服務器的火牆和selinux,包括web服務器、redis和logstash服務器的防火牆和selinux所有關閉,此步驟是爲了不出現由於防火牆策略或selinux安全權限引發的各類未知問題,如下只顯示了host1和host2的命令,可是其餘服務器都要執行。redis
[root@linux-host1 ~]# systemctl disable firewallddocker
[root@linux-host1 ~]# systemctl disable NetworkManagernpm
[root@linux-host1 ~]# sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config
[root@linux-host1 ~]# echo "* soft nofile 65536" >> /etc/security/limits.conf
[root@linux-host1 ~]# echo "* hard nofile 65536" >> /etc/security/limits.conf
hostX 。。。。。。
[root@linux-host1 ~]# vim /etc/hosts
192.168.56.11 linux-host1.exmaple.com
192.168.56.12 linux-host2.exmaple.com
192.168.56.13 linux-host3.exmaple.com
192.168.56.14 linux-host4.exmaple.com
192.168.56.15 linux-host5.exmaple.com
192.168.56.16 linux-host6.exmaple.com
[root@linux-host1 ~]# wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
[root@linux-host1 ~]# yum install -y net-tools vim lrzsz tree screen lsof tcpdump wget ntpdate
[root@linux-host1 ~]# cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@linux-host1 ~]# echo "*/5 * * * * ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/root
[root@linux-host1 ~]# systemctl restart crond
[root@linux-host1 ~]# reboot #重啓檢查各項配置是否生效,沒有問題的話給虛擬機作快照以方便後期還原
由於elasticsearch服務運行須要java環境,所以兩臺elasticsearch服務器須要安裝java環境,能夠使用如下方式安裝:
方式一:直接使用yum安裝openjdk
[root@linux-host1 ~]# yum install java-1.8.0*
方式二:本地安裝在oracle官網下載rpm安裝包:
[root@linux-host1 ~]# yum localinstall jdk-8u92-linux-x64.rpm
方式三:下載二進制包自定義profile環境變量:
下載地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
[root@linux-host1 ~]# tar xvf jdk-8u121-linux-x64.tar.gz -C /usr/local/
[root@linux-host1 ~]# ln -sv /usr/local/jdk1.8.0_121 /usr/local/jdk
[root@linux-host1 ~]# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
[root@linux-host1 ~]# source /etc/profile
[root@linux-host1 ~]# java -version
java version "1.8.0_121" #確承認以出現當前的java版本號
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
下載地址:https://www.elastic.co/downloads/elasticsearch,當前最新版本5.3.0
[root@linux-host1 ~]# yum –y localinstall elasticsearch-5.3.0.rpm
[root@linux-host1 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
cluster.name: ELK-Cluster #ELK的集羣名稱,名稱相同即屬因而同一個集羣
node.name: elk-node1 #本機在集羣內的節點名稱
path.data: /elk/data #數據保存目錄
path.logs: /elk/logs #日誌保存目
bootstrap.memory_lock: true #服務啓動的時候鎖定足夠的內存,防止數據寫入swap
network.host: 0.0.0.0 #監聽IP
http.port: 9200
discovery.zen.ping.unicast.hosts: ["192.168.56.11", "192.168.56.12"]
[root@linux-host1 ~]# vim /usr/lib/systemd/system/elasticsearch.service #修改內存限制
LimitMEMLOCK=infinity #去掉註釋
[root@linux-host1 ~]# vim /etc/elasticsearch/jvm.options
22 -Xms2g
23 -Xmx2g #最小和最大內存限制,爲何最小和最大設置同樣大?
https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
#官方配置文檔最大建議30G之內。
#將以上配置文件scp到host2並修改本身的node名稱
[root@linux-host1~]#scp /etc/elasticsearch/elasticsearch.yml 192.168.56.12:/etc/elasticsearch/
[root@linux-host2 ~]# grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
cluster.name: ELK-Cluster
node.name: elk-node2 #與host1不能相同
path.data: /data/elk
path.logs: /data/elk
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
network.host: 0.0.0.0
http.port: 9200
http.cors.enabled: true
http.cors.allow-origin: "*"
discovery.zen.ping.unicast.hosts: ["192.168.56.11", "192.168.56.12"]
各服務器建立數據和日誌目錄並修改目錄權限爲elasticsearch:
[root@linux-host1 ~]# mkdir /elk/{data,logs}
[root@linux-host1 ~]# ll /elk/
total 0
drwxr-xr-x 2 root root 6 Apr 18 18:44 data
drwxr-xr-x 2 root root 6 Apr 18 18:44 logs
[root@linux-host1 ~]# chown elasticsearch.elasticsearch /elk/ -R
[root@linux-host1 ~]# ll /elk/
total 0
drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 data
drwxr-xr-x 2 elasticsearch elasticsearch 6 Apr 18 18:44 logs
vim /etc/security/limits.conf
* soft memlock unlimited
* hard memlock unlimited
* soft nofile 131072
* hard nofile 131072
vim /etc/security/limits.d/90-nproc.conf
* soft nproc 2048
[root@linux-host1 ~]# systemctl restart elasticsearch
[root@linux-host1 ~]# tail -f /elk/logs/ELK-Cluster.log
[root@linux-host1 ~]# tail -f /elk/logs/
插件是爲了完成不一樣的功能,官方提供了一些插件但大部分是收費的,另外也有一些開發愛好者提供的插件,能夠實現對elasticsearch集羣的狀態監控與管理配置等功能。
在elasticsearch 5.x版本之後再也不支持直接安裝head插件,而是須要經過啓動一個服務方式,git地址:https://github.com/mobz/elasticsearch-head
[root@linux-host1 ~]# yum install -y npm
# NPM的全稱是Node Package Manager,是隨同NodeJS一塊兒安裝的包管理和分發工具,它很方便讓JavaScript開發者下載、安裝、上傳以及管理已經安裝的包。
[root@linux-host1 ~]# cd /usr/local/src/
[root@linux-host1 src]#git clone git://github.com/mobz/elasticsearch-head.git
[root@linux-host1 src]# cd elasticsearch-head/
[root@linux-host1 elasticsearch-head]# yum install npm -y
[root@linux-host1 elasticsearch-head]# npm cache clean -f[root@linux-host1 elasticsearch-head]# npm install -g n[root@linux-host1 elasticsearch-head]# n stable
[root@linux-host1 elasticsearch-head]# npm install grunt -save
[root@linux-host2 elasticsearch-head]# ll node_modules/grunt #確認生成文件
[root@linux-host1 elasticsearch-head]# npm install #執行安裝
[root@linux-host1 elasticsearch-head]# npm run start & #後臺啓動服務
開啓跨域訪問支持,而後重啓elasticsearch服務:
[root@linux-host1 ~]# vim /etc/elasticsearch/elasticsearch.yml
http.cors.enabled: true #最下方添加
http.cors.allow-origin: "*"
[root@linux-host1 ~]# /etc/init.d/elasticsearch restart
分片:
curl -XPUT 13.228.119.64:9200/_template/my_template -d'{ "template": "*", "settings": { "index": { "number_of_shards": 6, "number_of_replicas": 1 } }}'
curl -XPUT 13.250.82.220:9200/_template/my_template -d'{ "template": "*", "settings": { "index": { "number_of_shards": 6, "number_of_replicas": 1 } }}'
[root@linux-host1 ~]# yum install docker -y
[root@linux-host1 ~]# systemctl start docker && systemctl enable docker
[root@linux-host1 ~]# docker run -d -p 9100:9100 mobz/elasticsearch-head:5
Master的職責:
統計各node節點狀態信息、集羣狀態信息統計、索引的建立和刪除、索引分配的管理、關閉node節點等
Slave的職責:
同步數據、等待機會成爲Master
[root@linux-host2 ~]# docker save docker.io/mobz/elasticsearch-head > /opt/elasticsearch-head-docker.tar.gz #導出鏡像
[root@linux-host1 src]# docker load < /opt/elasticsearch-head-docker.tar.gz #導入
[root@linux-host1 src]# docker images#驗證
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/mobz/elasticsearch-head 5 b19a5c98e43b 4 months ago 823.9 MB
[root@linux-host1 src]# docker run -d -p 9100:9100 --name elastic docker.io/mobz/elasticsearch-head:5 #從本地docker images 啓動容器
Git地址爲https://github.com/lmenezes/elasticsearch-kopf,可是目前還不支持5.x版本的elasticsearch,可是能夠安裝在elasticsearc 1.x或2.x的版本安裝。