0x00 概述
最近因為測試需求,需要快速搭建一個ES集群,要求:
''' 1. 開啟xpack 2. 開啟kibana,導入測試數據集 3. ES和kibana版本為7.13.2
4. 集群為3個節點,master節點1個,data節點3個(master節點角色為master+data) '''
0x01 集群部署
1.1 新增es專用用戶和組並開啟權限(3個節點都要操作)
es是無法用root用戶開啟的,所以需要新增es專用用戶和組
groupadd es # 新建es用戶組 useradd -g es es # 新建es用戶,屬於es組
給es用戶開啟權限
vim /etc/sudoers
新增一行
# 在 root ALL=(ALL) ALL下面新增一行 es ALL=(ALL) ALL # 使用wq!保存退出
1.2 修改節點系統配置(3個節點都要操作)
#修改elastic系統文件打開數 cat << EOF >> /etc/security/limits.conf es soft nofile 65536 es hard nofile 65536
es soft nproc 4096
es hard nproc 4096 EOF #修改無法分配內存問題 cat << EOF >> /etc/security/limits.conf es soft memlock unlimited es hard memlock unlimited EOF
[root@localhost ~]# cd /etc/security/limits.d
[root@localhost limits.d]# ll
total 4
-rw-r--r--. 1 root root 191 Nov 6 2016 20-nproc.conf
[root@localhost limits.d]# vi 20-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.
* soft nproc 4096
root soft nproc unlimited
~
~
將上面內容的*號改成用戶名
# See rhbz #432903 for reasoning.
es soft nproc 4096
root soft nproc unlimited
#修改max_map_count值 sysctl -w vm.max_map_count=655360 echo 'vm.max_map_count=655360' >> /etc/sysctl.conf sysctl -p # 修改jvm,設置內存為機器內存的50%(測試節點為2g內存) vim elasticsearch-7.13.2/config/jvm.options -Xms1g -Xmx1g
1.3 准備安裝包
# 將下載的安裝包上傳到node1根目錄 [root@node1 /]# cd / # 解壓 [root@node1 /]# tar -zvxf elasticsearch-7.13.2-linux-x86_64.tar.gz # 安裝包改為es用戶所有 [root@node1 /]# chown -R es:es elasticsearch-7.13.2 # 將安裝包拷貝到節點2和節點3的根目錄 [root@node1 /]# scp -r elasticsearch-7.13.2 root@$node2:/ [root@node1 /]# scp -r elasticsearch-7.13.2 root@$node3:/
1.4 修改配置文件
# 切換到es用戶 [root@node1 /]# su - es # 修改es配置文件 [es@node1 /]# vim /elasticsearch-7.13.2/conf/elasticsearch.yml
修改節點1的elastisearch.yml為
cluster.name: elastic_test node.name: test_node1 node.roles: [master, data] path.data: /app/data # 使用chown -R命令改為es組 path.logs: /app/logs # 使用chown -R命令改為es組 bootstrap.memory_lock: false http.port: 19200 discovery.seed_hosts: ["192.168.59.128","192.168.59.129","192.168.59.130"] cluster.initial_master_nodes: ["192.168.59.128"] # 以下為打開xpack,加密開啟TLS集群通信認證 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
修改節點2的elastisearch.yml為
cluster.name: elastic_test node.name: test_node2 node.roles: [data] path.data: /app/data # 使用chown -R命令改為es組 path.logs: /app/logs # 使用chown -R命令改為es組 bootstrap.memory_lock: false http.port: 19200 discovery.seed_hosts: ["192.168.59.128","192.168.59.129","192.168.59.130"] cluster.initial_master_nodes: ["192.168.59.128"] # 以下為打開xpack,加密開啟TLS集群通信認證 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
修改節點3的elastisearch.yml為
cluster.name: elastic_test node.name: test_node3 node.roles: [data] path.data: /app/data # 使用chown -R命令改為es組 path.logs: /app/logs # 使用chown -R命令改為es組 bootstrap.memory_lock: false http.port: 19200 discovery.seed_hosts: ["192.168.59.128","192.168.59.129","192.168.59.130"] cluster.initial_master_nodes: ["192.168.59.128"] # 以下為打開xpack,加密開啟TLS集群通信認證 xpack.security.enabled: true xpack.security.transport.ssl.enabled: true xpack.security.transport.ssl.verification_mode: certificate xpack.security.transport.ssl.keystore.path: elastic-certificates.p12 xpack.security.transport.ssl.truststore.path: elastic-certificates.p12
0x02 生成集群TLS認證用的證書
先不要着急啟動集群,使用es自帶的工具生成證書
# 在任意一個節點分別執行下面兩個命令,一路直接enter,不要輸入密碼 /elasticsearch-7.13.2/bin/elasticsearch-certutil ca /elasticsearch-7.13.2/bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12
執行上面兩個命令后,發現在elasticsearch-7.13.2目錄多出來兩個文件(7.13.2版本文件生成后放到了安裝文件的根目錄)
elastic-certificates.p12
elastic-stack-ca.p12
將這兩個文件分別拷貝到各自節點的以下目錄
/elasticsearch-7.13.2/config
0x03 啟動集群
注意切換到es用戶,執行啟動操作
su - es
啟動集群,在各個節點分別執行下面命令,暫時不加 -d后台操作,方便觀察啟動狀態,有報錯可以第一時間看到
/elasticsearch-7.13.2/bin/elasticsearch
0x04 設置集群訪問用戶名和密碼
使用es自帶的工具生成訪問用戶名和密碼,用於集群訪問控制
4.1 使用auto參數會隨機生成密碼
在Master節點執行以下命令
/elasticsearch-7.13.2/bin/elasticsearch-setup-password auto
需要將隨機生成的密碼做好保存!
[es@node1 ~]$ /elasticsearch-7.13.2/bin/elasticsearch-setup-passwords auto Initiating the setup of passwords for reserved users elastic,apm_system,kibana,logstash_system,beats_system,remote_monitoring_user. The passwords will be randomly generated and printed to the console. Please confirm that you would like to continue [y/N]y #確認隨機生成密碼 Changed password for user apm_system PASSWORD apm_system = g7JOAUBi4jJh7PAaXdAN Changed password for user kibana #kibana連接es的用戶名及密碼 PASSWORD kibana = 0B3EINVicVRbsnyJHk99 Changed password for user logstash_system #logstash連接es的用戶名及密碼 PASSWORD logstash_system = b34Aradp6gSqJMe3SbXK Changed password for user beats_system #beats連接es的用戶名及密碼 PASSWORD beats_system = EWjwNoDZILqCOCjCEjSc Changed password for user remote_monitoring_user #遠程監控es的用戶名及密碼 PASSWORD remote_monitoring_user = N92vKgJ4AHrSfhg5mFUK Changed password for user elastic #應用程序連接es API的用戶名及密碼 PASSWORD elastic = 26tBktGolYCyZD2pPISW
4.2 使用interactive命令手動設置密碼
/elasticsearch-7.13.2/bin/elasticsearch-setup-password interactive
0x05 驗證集群訪問用戶名和密碼
[es@node1 ~]$ curl -u elastic:26tBktGolYCyZD2pPISW -XGET 'http://192.168.59.128:19200/_cat/nodes?v' ip heap.percent ram.percent cpu load_1m load_5m load_15m node.role master name 192.168.59.128 29 68 2 0.04 0.17 0.26 dilm - elastic_node1 192.168.59.129 22 68 1 0.04 0.17 0.26 dilm * elastic_node2 192.168.59.130 28 68 1 0.04 0.17 0.26 dilm - elastic_node3
0x06 部署kibana
建議將kibana部署到一台配置較低的機器,不要與es節點的機器混用,避免kibana和es節點爭搶資源,導致相互拖累
6.1 開集群監控開關
在kibana dev輸入如下:
PUT _cluster/settings { "persistent": { "xpack.monitoring.collection.enabled": true } }
6.2 修改Kibana配置文件
[root@kibana ~]$ vim /kibana-7.13.2/config/kibana.yml server.port: 15601 server.host: "192.168.59.131" server.name: "kibana" elasticsearch.hosts: "http://192.168.59.131:19200" kibana.index: ".kibana" logging.verbose: true elasticsearch.username: "kibana_system" #指定剛使用elasticsearch生成的kibana連接的用戶名及密碼 elasticsearch.password: "0B3EINVicVRbsnyJHk99"
6.3 啟動並kibana
[root@kibana ~]$ nohup /kibana-7.13.2/bin/kibana --allow-root &
6.4 導入樣本數據
在瀏覽器打開kibana web服務
http://192.168.59.131:15601
根據使用引導,分別導入3類測試數據
0x07 參考
https://blog.csdn.net/qq_20143059/article/details/112992016