10 Easticsearch叢集搭建
10.1 企業叢集部署
10.2 角色介紹
伺服器IP | 伺服器配置 | 安裝服務 | 擔任角色 |
---|---|---|---|
192.168.5.3 | 1C2G | Kibana、Elasticsearch | 協調節點 |
192.168.5.4 | 1C2G | Kibana、Elasticsearch | 主節點 |
192.168.5.5 | 1C2G | Elasticsearch | 資料節點 |
192.168.5.6 | 1C2G | Nginx | 排程Kibana |
主結點:master節點主要用於叢集的管理及索引 比如新增結點、分片分配、索引的新增和刪除等。 資料結點:data 節點上儲存了資料分片,它負責索引和搜尋操作。 客戶端結點:client 節點僅作為請求客戶端存在,client的作用也作為負載均衡器,client 節點不存資料,只是將請求均衡轉發到其它結點。
通過下邊兩項引數來配置結點的功能:
node.master: #是否允許為主結點
node.data: #允許儲存資料作為資料結點
node.ingest: #是否允許成為協調節點
四種組合方式:
master=true,data=true:即是主結點又是資料結點
master=false,data=true:僅是資料結點
master=true,data=false:僅是主結點,不儲存資料
master=false,data=false:即不是主結點也不是資料結點,此時可設定ingest為true表示它是一個客戶端。
10.3 安裝Elasticsearch叢集
10.3.1 關閉防火牆及selinux(所有叢集節點)
systemctl stop firewalld && systemctl disable firewalld
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
10.3.2 安裝 java 環境(所有叢集節點)
yum -y install java vim
java -version
10.3.3 安裝Elasticsearch(所有叢集節點)
elasticsearch的安裝非常簡單,首先從官網
mkdir /usr/local/elk
tar zxvf elasticsearch-7.15.0-linux-x86_64.tar.gz -C /usr/local/elk/
由於ElasticSearch可以接收使用者輸入的指令碼並且執行,為了系統安全考慮,需要建立一個單獨的使用者用來執行elasticSearch,這裡建立的普通使用者是es,操作如下:
groupadd es
useradd es -g es
然後將elasticsearch的安裝目錄都授權給es使用者,操作如下:
chown -R es:es /usr/local/elk/elasticsearch-7.15.0
10.3.4 作業系統調優(所有叢集節點)
作業系統以及JVM調優主要是針對安裝elasticsearch的機器。對於作業系統,需要調整幾個核心引數,fs.file-max主要是配置系統最大開啟檔案描述符數,建議修改為655360或者更高,vm.max_map_count影響Java執行緒數量,用於限制一個程序可以擁有的VMA(虛擬記憶體區域)的大小,系統預設是65530,建議修改成262144或者更高。將下面內容新增到/etc/sysctl.conf檔案中:
cat <<EOF>>/etc/sysctl.conf
fs.file-max=655360
vm.max_map_count = 262144
EOF
另外,還需要調整程序最大開啟檔案描述符(nofile)、最大使用者程序數(nproc)和最大鎖定記憶體地址空間(memlock),新增如下內容到/etc/security/limits.conf檔案中:
cat <<EOF>>/etc/security/limits.conf
* soft nproc 204800
* hard nproc 204800
* soft nofile 655360
* hard nofile 655360
* soft memlock unlimited
* hard memlock unlimited
EOF
最後,還需要修改/etc/security/limits.d/20-nproc.conf檔案(centos7.x系統),將:
* soft nproc 4096
# 修改為:
* soft nproc 20480
或者直接刪除/etc/security/limits.d/20-nproc.conf檔案也行。
sed -i 's/4096/20480/g' /etc/security/limits.d/20-nproc.conf
使配置檔案生效
sysctl -p
重新連線對話方塊
10.3.5 修改配置檔案(所有叢集節點)
cat <<EOF>>/usr/local/elk/elasticsearch-7.15.0/config/elasticsearch.yml
# 叢集名稱
cluster.name: cluster-es
#節點名稱, 每個節點的名稱不能重複
node.name: node-1
# ip 地址, 每個節點的地址不能重複
network.host: 0.0.0.0
# 是不是有資格主節點
node.master: true
node.data: true
node.ingest: true
http.port: 9200
# head 外掛需要這開啟這兩個配置
http.cors.allow-origin: "*"
http.cors.enabled: true
http.max_content_length: 200mb
# es7.x 之後新增的配置,初始化一個新的叢集時需要此配置來選舉 master
cluster.initial_master_nodes: ["node-1"]
# es7.x 之後新增的配置,節點發現
discovery.seed_hosts: ["192.168.5.3:9300","192.168.5.4:9300","192.168.5.5:9300"]
gateway.recover_after_nodes: 2
network.tcp.keep_alive: true
network.tcp.no_delay: true
transport.tcp.compress: true
# 資料儲存地址以及日誌儲存位置
path.data: /data1/elasticsearch,/data2/elasticsearch
path.logs: /usr/local/elk/elasticsearch-7.15.0/logs
# 叢集內同時啟動的資料任務個數,預設是 2 個
cluster.routing.allocation.cluster_concurrent_rebalance: 16
# 新增或刪除節點及負載均衡時併發恢復的執行緒個數,預設 4 個
cluster.routing.allocation.node_concurrent_recoveries: 16
# 初始化資料恢復時,併發恢復執行緒的個數,預設 4 個
cluster.routing.allocation.node_initial_primaries_recoveries: 16
EOF
建立儲存目錄並賦予啟動使用者許可權
mkdir -p /data{1,2}/elasticsearch/
chown es:es -R /data{1,2}/
10.3.6 啟動Elasticsearch(所有叢集節點)
切換到es使用者下啟動elasticsearch叢集即可。分別登入到server1、server2和server3三臺主機上,執行如下操作:
su - es
sh /usr/local/elk/elasticsearch-7.15.0/bin/elasticsearch -d
其中,“-d”引數的意思是將elasticsearch放到後臺執行。
10.3.7 驗證elasticsearch叢集的可用性
http://192.168.5.3:9200/_cat/nodes
10.4 安裝Kibana及負載排程
10.4.1 安裝kibana(部分叢集節點)
tar zxvf kibana-7.15.0-linux-x86_64.tar.gz -C /usr/local/elk/
10.4.2 修改配置檔案(部分叢集節點)
cat <<EOF>>/usr/local/elk/kibana-7.15.0-linux-x86_64/config/kibana.yml
server.port: 5601
server.host: "0.0.0.0"
elasticsearch.hosts: ["http://localhost:9200"]
kibana.index: ".kibana"
i18n.locale: "zh-CN"
EOF
10.4.3 啟動kibana(部分叢集節點)
nohup /usr/local/elk/kibana-7.15.0-linux-x86_64/bin/kibana --allow-root
10.4.4 安裝Nginx(部分叢集節點)
yum -y install gcc* gcc-* pcre openssl zlib pcre-devel openssl-devel mkae
wget http://nginx.org/download/nginx-1.20.1.tar.gz
tar zxvf nginx-1.20.1.tar.gz -C /opt
cd /opt/nginx-1.20.1
./configure --prefix=/usr/local/nginx && make && make install
10.4.5 新增負載排程(部分叢集節點)
vim /usr/local/nginx/conf/nginx.conf
http {
# ... 省略其它配置
upstream kibana {
server 192.168.5.3:5601;
server 192.168.5.4:5601;
}
server {
listen 80;
location / {
proxy_pass http://kibana;
}
}
# ... 省略其它配置
}
sh /usr/local/nginx/sbin/nginx