原理問題
主分片是4 副本數是2 ,副本分片等於就是8個,所有分片等於加起來分片數是12,主分片可以寫入,副本分片只可讀
一個分片最大存儲30G數據
elasticsearch7以上 xpack基礎版本免費了,不用破解
https://www.elastic.co/cn/subscriptions 免費功能界面
集群必須強制開啟tls后才能開啟密碼認證
參考文檔
http://www.pianshen.com/article/9207198635/
配置文件詳解
https://www.cnblogs.com/han-luo/p/10444754.html
https://abcops.cn/archives/981#toc_5
https://blog.51cto.com/13740724/2438072
部署環境
內核版本 |
Linux iZ8vbc1ax05oc6vsu6u24kZ 3.10.0-1062.9.1.el7.x86_64 #1 SMP Fri Dec 6 15:49:49 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux |
系統版本 |
CentOS Linux release 7.7.1908 (Core) |
jdk版本 |
openjdk version "13.0.1" 2019-10-15 |
elasticsearch版本 |
elasticsearch 7.5.1 |
elasticsearch和jdk的版本對應關系
https://www.elastic.co/cn/support/matrix#matrix_jvm
安裝部署單點
上傳tar包,並解壓縮
創建安裝目錄並創建運行用戶(es不能用root用戶運行,創建普通用戶)
mkdir -p /jesong/cluster/
useradd -d /home/elastic elastic -s /sbin/nologin
修改環境參數
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
echo -e "elastic soft memlock unlimited \nelastic hard memlock unlimited" >> /etc/security/limits.conf
調整jvm參數
vim /jesong/cluster/elasticsearch01/config/jvm.options #使用內存大小,一般不超過百分之50
-Xms256m
-Xmx256m
如果未配置java jdk環境變量那么es會用自帶的java jdk(es版本和jdk版本對應)如果發現未覆蓋,可以到官網下載未捆綁jdk的版本
vim /etc/profile
配置系統環境變量
JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
授權普通用戶
chown -R elastic. /jesong/cluster/elasticsearch
修改配置文件
vim elasticsearch.yml
node.name: node-1
path.data: /jesong/cluster/elasticsearch01/data2
path.logs: /jesong/cluster/elasticsearch01/data2
network.host: 172.26.103.59
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
#xpack密碼認證配置
#xpack.security.enabled: true
#xpack.license.self_generated.type: basic
#xpack.security.transport.ssl.enabled: true
啟動
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
如果想遷移data目錄,先停止es,然后把data目錄拷貝到想要遷移得位置,更改配置文件路徑然后啟動即可。(記得目錄屬主屬組問題)
安裝部署集群
上傳tar包,並解壓縮
創建安裝目錄並創建運行用戶(es不能用root用戶運行,創建普通用戶)
mkdir -p /jesong/cluster/
useradd -d /home/elastic elastic -s /sbin/nologin
復制三份文件
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch01
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch02
cp -a elasticsearch-7.5.1/ /jesong/cluster/elasticsearch03
修改環境參數
echo "vm.max_map_count=262144" >>/etc/sysctl.conf
sysctl -p
echo -e "elastic soft memlock unlimited \nelastic hard memlock unlimited" >> /etc/security/limits.conf
修改配置文件
雙擊即可打開
#集群的名稱
cluster.name: easyliao-brd100
#節點名稱,其余兩個節點分別為node-2 和node-3
node.name: node-3
#指定該節點是否有資格被選舉成為master節點,默認是true,es是默認集群中的第一台機器為master,如果這台機掛了就會重新選舉master
node.master: true
#允許該節點存儲數據(默認開啟)
node.data: true
#索引數據的存儲路徑
path.data: /jesong/cluster/elasticsearch03/data/
#日志文件的存儲路徑
path.logs: /jesong/cluster/elasticsearch03/logs/
#設置為true來鎖住內存。因為內存交換到磁盤對服務器性能來說是致命的,當jvm開始swapping時es的效率會降低,所以要保證它不swap
bootstrap.memory_lock: true
#綁定的ip地址
network.host: 172.26.103.63
#設置對外服務的http端口,默認為9200
http.port: 9203
# 設置節點間交互的tcp端口,默認是9300
transport.tcp.port: 9303
#Elasticsearch將綁定到可用的環回地址,並將掃描端口9300到9305以嘗試連接到運行在同一台服務器上的其他節點。
#這提供了自動集群體驗,而無需進行任何配置。數組設置或逗號分隔的設置。每個值的形式應該是host:port或host
#(如果沒有設置,port默認設置會transport.profiles.default.port 回落到transport.tcp.port)。
#請注意,IPv6主機必須放在括號內。默認為127.0.0.1, [::1]
discovery.zen.ping.unicast.hosts: ["172.26.103.63:9301", "172.26.103.63:9302", "172.26.103.63:9303"]
#如果沒有這種設置,遭受網絡故障的集群就有可能將集群分成兩個獨立的集群 - 分裂的大腦 - 這將導致數據丟失
discovery.zen.minimum_master_nodes: 2
#只要配置數量的數據或主節點已加入集群,即可恢復
gateway.recover_after_nodes: 2
#
#設置是否可以通過正則或者_all刪除或者關閉索引庫,默認true表示必須需要顯式指定索引庫名稱,生產環境建議設置為true,刪除索引庫的時候必須顯式指定,否則可能會誤刪索引庫中的索引庫
action.destructive_requires_name: true
#
cluster.initial_master_nodes: ["node-1","node-2","node-3"]
調整jvm參數
vim /jesong/cluster/elasticsearch01/config/jvm.options #使用內存大小,一般不超過百分之50
-Xms256m
-Xmx256m
如果未配置java jdk環境變量那么es會用自帶的java jdk(es版本和jdk版本對應,)
vim /etc/profile
配置系統環境變量
JAVA_HOME=/usr/local/java/jdk1.8
JRE_HOME=/usr/local/java/jdk1.8/jre
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH
授權普通用戶權限
chown -R elastic. /jesong/cluster/elasticsearch01
chown -R elastic. /jesong/cluster/elasticsearch02
chown -R elastic. /jesong/cluster/elasticsearch03
啟動es各節點
-p 指定pid -d 后台運行
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
增加x-pack密碼驗證
單點增加xpack
修改配置文件
node.name: node-1
path.data: /jesong/cluster/elasticsearch01/data2
path.logs: /jesong/cluster/elasticsearch01/data2
network.host: 172.26.103.59
http.port: 9200
cluster.initial_master_nodes: ["node-1"]
xpack.security.enabled: true
xpack.license.self_generated.type: basic
xpack.security.transport.ssl.enabled: true
啟動es
sudo -u elastic nohup /usr/local/elasticsearch/bin/elasticsearch -p /usr/local/elasticsearch/elasticsearch.pid -d
配置密碼(進入bin目錄)
./elasticsearch-setup-passwords –help #查看參數
./elasticsearch-setup-passwords interactive #手動輸入各密碼
使用密碼連接es,驗證是否正常
curl --user elastic:111111 -XGET 'http://172.26.103.59:9200/_cat/nodes?v'
集群增加xpack密碼驗證(集群增加驗證強制開啟ssl,不然報錯)
進入其中一台的bin目錄生成ca證書
elasticsearch-certutil ca
elasticsearch-certutil cert --ca elastic-stack-ca.p12
創建證書存放目錄
mkdir -p /jesong/cluster/elasticsearch01/config/certs/
mv /jesong/cluster/elasticsearch01/elastic-* /jesong/cluster/elasticsearch01/config/certs/
如果是用root創建的目錄和證書,別忘記授權
chown -R elastic. /jesong/cluster/elasticsearch01/config/certs/
把證書復制到其他節點
cp -a /jesong/cluster/elasticsearch01/config/certs/ /jesong/cluster/elasticsearch02/config/certs/
cp -a /jesong/cluster/elasticsearch01/config/certs/ /jesong/cluster/elasticsearch03/config/certs/
修改各節點配置文件
vim config/elasticsearch.yml
#開啟安全功能
xpack.security.enabled: true
#集群內部通信加密
xpack.security.transport.ssl.enabled: true
xpack.security.transport.ssl.verification_mode: certificate
xpack.security.transport.ssl.keystore.path: certs/elastic-certificates.p12
xpack.security.transport.ssl.truststore.path: certs/elastic-certificates.p12
啟動各節點(啟動后應該是連不上的,配置完密碼后即可鏈接)
sudo -u elastic nohup /jesong/cluster/elasticsearch01/bin/elasticsearch -p /jesong/cluster/elasticsearch01/elasticsearch.pid -d
配置密碼
進入任意節點bin目錄,配置各賬戶密碼, elastic為管理員
./elasticsearch-setup-passwords interactive
配置完成后測試各節點是否能正常連接
curl --user elastic:marbless -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
此時已經部署完成
es命令
查看節點信息
curl -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
curl --user elastic:marbless -XGET 'http://172.26.103.63:9202/_cat/nodes?v'
查看集群狀態
curl -XGET 'http://172.26.103.63:9202/_cat/health?v'
curl -XGET 'http://172.26.103.63:9201/_cluster/health?pretty'
查看master節點信息
curl -XGET 'http://172.26.103.63:9202/_cat/master?v'
創建一個索引
curl -XPUT 'http://172.26.103.63:9202/test_one?pretty' test_one:索引名字
查看當前所有索引
curl '192.168.1.4:9200/_cat/indices?v'
刪除指定索引
curl -XDELETE 192.168.1.4:9200/system-log-2019.05
刪除多個索引
curl -XDELETE 192.168.1.4:9200/system-log-2019.05,system-log-2019.05
刪除所有索引
curl -XDELETE 192.168.1.4:9200/_all
curl -XGET 'http://172.26.103.63:9201/cluster/settings
{
"transient" : {
"cluster.routing.allocation.exclude._ip" : "10.0.0.1"
}
}