參考資料
http://www.baiyp.ren/elasticsearch-集群部署.html文章來源地址http://www.zghlxwxcb.cn/news/detail-717828.html
說明
- 一個服務(wù)器,三個es服務(wù)節(jié)點,一個kibana容器,一個elasticsearch-head服務(wù)節(jié)點。
- es版本為7.17.5。
- 服務(wù)器地址:192.168.127.142。
- elasticsearch 不建議使用docker,容器部署不適合有狀態(tài)服務(wù)。這里是為了學(xué)習方便。
安裝流程
- 安裝docker
- 安裝docker-compose
- 打開https://github.com/docker/compose/releases/tag/v2.14.1 頁面找到docker-compose-linux-x86_64
- 上傳到
/usr/local/bin
目錄下,改名為docker-compose
。 - 使用
docker-compose --version
命令測試。
- 安裝docker-compose
- 初始化環(huán)境
- 虛擬機新建虛擬服務(wù)器,名稱elasticsearch。
- 防火墻初始化
- 修改Liunx句柄數(shù)
- 查看最大句柄
sysctl -a | grep vm.max_map_count
- 修改句柄數(shù)
在末尾添加vi /etc/sysctl.conf
vm.max_map_count=262144
- 讓系統(tǒng)讀取這個新的配置
sysctl -p
- 檢查,如果返回值為
vm.max_map_count = 262144
證明修改成功。
sysctl vm.max_map_count
- 句柄就是用戶可以同時打開的文件句柄(包括文件、套接字等)的數(shù)量。
- 修改最大線程數(shù)
vi /etc/security/limits.conf
# 添加以下內(nèi)容 * soft nofile 65536 * hard nofile 65536 * soft nproc 4096 * hard nproc 4096
-
limits.conf
用于設(shè)置系統(tǒng)資源限制的配置文件。它可以幫助管理員限制用戶或進程能夠使用的系統(tǒng)資源量。- 每一行表示對一個用戶或用戶組的限制,格式為
<domain> <type> <item> <value>
。其中domain:限制的對象,用戶/用戶組(@groupname)/所有用戶(*);type表示限制類型,如soft(軟限制)、hard(硬限制)和 -(不設(shè)置限制)等;item表示限制的資源;value表示限制的具體數(shù)量。 - 軟限制是超過會提示,硬限制是超過會阻塞等待。
- 第一行和第二行表示:限制系統(tǒng)中所有用戶可以最多打開的文件數(shù)為65536。
- 第三行和第四行表示:限制所有用戶可以最多啟動的進程數(shù)為4096。
- 每一行表示對一個用戶或用戶組的限制,格式為
-
- 重新啟動服務(wù)
reboot
- 創(chuàng)建掛載目錄
- 創(chuàng)建ES節(jié)點配置目錄
mkdir -p /etc/es/elasticsearch/node-{1..3}/{config,plugins}
- 創(chuàng)建ES節(jié)點數(shù)據(jù)目錄
mkdir -p /home/es/elasticsearch/node-{1..3}/{data,log}
- 創(chuàng)建kibana配置目錄
mkdir -p /etc/es/kibana/config
- 目錄授權(quán)
chmod 777 /etc/es/elasticsearch/node-{1..3}/{config,plugins}
chmod 777 /home/es/elasticsearch/node-{1..3}/{data,log}
chmod 777 /etc/es/kibana/config
- 下載分詞器
- 打開下載頁面,地址 https://github.com/medcl/elasticsearch-analysis-ik/releases,下載7.17.5版本分詞器。
- 切換上傳目錄
mkdir -p /home/download/es/ik/ && cd /home/download/es/ik/
- 上傳
- 解壓
unzip elasticsearch-analysis-ik-7.17.5.zip
- 刪除zip壓縮包,并返回上級
rm -rf elasticsearch-analysis-ik-7.17.5.zip && cd ../
- 復(fù)制到對應(yīng)目錄
cp -R ik/ /etc/es/elasticsearch/node-1/plugins/
cp -R ik/ /etc/es/elasticsearch/node-2/plugins/
cp -R ik/ /etc/es/elasticsearch/node-3/plugins/
- 編寫配置文件
- node-1
vi /etc/es/elasticsearch/node-1/config/elasticsearch.yml
#集群名稱 cluster.name: elastic #當前該節(jié)點的名稱 node.name: node-1 #是不是有資格競選主節(jié)點 node.master: true #是否存儲數(shù)據(jù) node.data: true #最大集群節(jié)點數(shù) node.max_local_storage_nodes: 3 #給當前節(jié)點自定義屬性(可以省略) #node.attr.rack: r1 #數(shù)據(jù)存檔位置 path.data: /usr/share/elasticsearch/data #日志存放位置 path.logs: /usr/share/elasticsearch/log #是否開啟時鎖定內(nèi)存(默認為是) #bootstrap.memory_lock: true #設(shè)置網(wǎng)關(guān)地址,我是被這個坑死了,這個地址我原先填寫了自己的實際物理IP地址, #然后啟動一直報無效的IP地址,無法注入9300端口,這里只需要填寫0.0.0.0 network.host: 0.0.0.0 #設(shè)置映射端口 http.port: 9200 #內(nèi)部節(jié)點之間溝通端口 transport.tcp.port: 9300 # 尋找集群中的主節(jié)點,默認值為127.0.0.1:9300,也就是自己。如果要發(fā)現(xiàn)已存在的群集需要填寫對應(yīng)集群的服務(wù)節(jié)點信息,如果單節(jié)點可以忽略。es7.x 之后新增的配置,寫入候選主節(jié)點的設(shè)備地址,在開啟服務(wù)后可以被選為主節(jié)點,建議把所有的節(jié)點都寫上。 discovery.seed_hosts: ["node-1","node-2","node-3"] #當你在搭建集群的時候,選出合格的節(jié)點集群,有些人說的太官方了, #其實就是,讓你選擇比較好的幾個節(jié)點,在你節(jié)點啟動時,在這些節(jié)點中選一個做領(lǐng)導(dǎo)者, #如果你不設(shè)置呢,elasticsearch就會自己選舉,這里我們把三個節(jié)點都寫上 cluster.initial_master_nodes: ["node-1","node-2","node-3"] #在群集完全重新啟動后阻止初始恢復(fù),直到啟動N個節(jié)點 #簡單點說在集群啟動后,至少復(fù)活多少個節(jié)點以上,那么這個服務(wù)才可以被使用,否則不可以被使用 gateway.recover_after_nodes: 2 #刪除索引是是否需要顯示其名稱,默認為顯示 #action.destructive_requires_name: true #禁用安全配置,否則查詢的時候會提示警告 xpack.security.enabled: false #配置允許跨域訪問 http.cors.enabled: true http.cors.allow-origin: "*"
- node-2
vi /etc/es/elasticsearch/node-2/config/elasticsearch.yml
#集群名稱 cluster.name: elastic #當前該節(jié)點的名稱 node.name: node-2 #是不是有資格競選主節(jié)點 node.master: true #是否存儲數(shù)據(jù) node.data: true #最大集群節(jié)點數(shù) node.max_local_storage_nodes: 3 #給當前節(jié)點自定義屬性(可以省略) #node.attr.rack: r1 #數(shù)據(jù)存檔位置 path.data: /usr/share/elasticsearch/data #日志存放位置 path.logs: /usr/share/elasticsearch/log #是否開啟時鎖定內(nèi)存(默認為是) #bootstrap.memory_lock: true #設(shè)置網(wǎng)關(guān)地址,我是被這個坑死了,這個地址我原先填寫了自己的實際物理IP地址, #然后啟動一直報無效的IP地址,無法注入9300端口,這里只需要填寫0.0.0.0 network.host: 0.0.0.0 #設(shè)置映射端口 http.port: 9200 #內(nèi)部節(jié)點之間溝通端口 transport.tcp.port: 9300 #尋找集群中的主節(jié)點,默認值為127.0.0.1:9300,也就是自己。如果要發(fā)現(xiàn)已存在的群集需要填寫對應(yīng)集群的服務(wù)節(jié)點信息,如果單節(jié)點可以忽略。es7.x 之后新增的配置,寫入候選主節(jié)點的設(shè)備地址,在開啟服務(wù)后可以被選為主節(jié)點,建議把所有的節(jié)點都寫上。 discovery.seed_hosts: ["node-1","node-2","node-3"] #當你在搭建集群的時候,選出合格的節(jié)點集群,有些人說的太官方了, #其實就是,讓你選擇比較好的幾個節(jié)點,在你節(jié)點啟動時,在這些節(jié)點中選一個做領(lǐng)導(dǎo)者, #如果你不設(shè)置呢,elasticsearch就會自己選舉,這里我們把三個節(jié)點都寫上 cluster.initial_master_nodes: ["node-1","node-2","node-3"] #在群集完全重新啟動后阻止初始恢復(fù),直到啟動N個節(jié)點 #簡單點說在集群啟動后,至少復(fù)活多少個節(jié)點以上,那么這個服務(wù)才可以被使用,否則不可以被使用 gateway.recover_after_nodes: 2 #刪除索引是是否需要顯示其名稱,默認為顯示 #action.destructive_requires_name: true #禁用安全配置,否則查詢的時候會提示警告 xpack.security.enabled: false #配置允許跨域訪問 http.cors.enabled: true http.cors.allow-origin: "*"
- node-3
vi /etc/es/elasticsearch/node-3/config/elasticsearch.yml
#集群名稱 cluster.name: elastic #當前該節(jié)點的名稱 node.name: node-3 #是不是有資格競選主節(jié)點 node.master: true #是否存儲數(shù)據(jù) node.data: true #最大集群節(jié)點數(shù) node.max_local_storage_nodes: 3 #給當前節(jié)點自定義屬性(可以省略) #node.attr.rack: r1 #數(shù)據(jù)存檔位置 path.data: /usr/share/elasticsearch/data #日志存放位置 path.logs: /usr/share/elasticsearch/log #是否開啟時鎖定內(nèi)存(默認為是) #bootstrap.memory_lock: true #設(shè)置網(wǎng)關(guān)地址,我是被這個坑死了,這個地址我原先填寫了自己的實際物理IP地址, #然后啟動一直報無效的IP地址,無法注入9300端口,這里只需要填寫0.0.0.0 network.host: 0.0.0.0 #設(shè)置映射端口 http.port: 9200 #內(nèi)部節(jié)點之間溝通端口 transport.tcp.port: 9300 #尋找集群中的主節(jié)點,默認值為127.0.0.1:9300,也就是自己。如果要發(fā)現(xiàn)已存在的群集需要填寫對應(yīng)集群的服務(wù)節(jié)點信息,如果單節(jié)點可以忽略。es7.x 之后新增的配置,寫入候選主節(jié)點的設(shè)備地址,在開啟服務(wù)后可以被選為主節(jié)點,建議把所有的節(jié)點都寫上。 discovery.seed_hosts: ["node-1","node-2","node-3"] #當你在搭建集群的時候,選出合格的節(jié)點集群,有些人說的太官方了, #其實就是,讓你選擇比較好的幾個節(jié)點,在你節(jié)點啟動時,在這些節(jié)點中選一個做領(lǐng)導(dǎo)者, #如果你不設(shè)置呢,elasticsearch就會自己選舉,這里我們把三個節(jié)點都寫上 cluster.initial_master_nodes: ["node-1","node-2","node-3"] #在群集完全重新啟動后阻止初始恢復(fù),直到啟動N個節(jié)點 #簡單點說在集群啟動后,至少復(fù)活多少個節(jié)點以上,那么這個服務(wù)才可以被使用,否則不可以被使用 gateway.recover_after_nodes: 2 #刪除索引是是否需要顯示其名稱,默認為顯示 #action.destructive_requires_name: true #禁用安全配置,否則查詢的時候會提示警告 xpack.security.enabled: false #配置允許跨域訪問 http.cors.enabled: true http.cors.allow-origin: "*"
- kibana
vi /etc/es/kibana/config/kibana.yml
server.port: 5601 server.host: "0.0.0.0" elasticsearch.hosts: ["http://node-1:9200","http://node-2:9200","http://node-3:9200"] #下面兩項,需要開啟RBAC時需要打開配合es使用 #elasticsearch.username: "user" #elasticsearch.password: "pass" # 設(shè)置中文 i18n.locale: "zh-CN"
- node-1
- 創(chuàng)建docker-compose文件
- 創(chuàng)建目錄并打開
mkdir -p /opt/docker/es && vi /opt/docker/es/docker-compose.yaml
- 編寫文件
version: "3" services: node-1: image: elasticsearch:7.17.5 container_name: node-1 environment: - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" - "TZ=Asia/Shanghai" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - "9200:9200" logging: driver: "json-file" options: max-size: "50m" volumes: - /etc/es/elasticsearch/node-1/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /etc/es/elasticsearch/node-1/plugins:/usr/share/elasticsearch/plugins - /home/es/elasticsearch/node-1/data:/usr/share/elasticsearch/data - /home/es/elasticsearch/node-1/log:/usr/share/elasticsearch/log networks: - elastic node-2: image: elasticsearch:7.17.5 container_name: node-2 environment: - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" - "TZ=Asia/Shanghai" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - "9201:9200" logging: driver: "json-file" options: max-size: "50m" volumes: - /etc/es/elasticsearch/node-2/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /etc/es/elasticsearch/node-2/plugins:/usr/share/elasticsearch/plugins - /home/es/elasticsearch/node-2/data:/usr/share/elasticsearch/data - /home/es/elasticsearch/node-2/log:/usr/share/elasticsearch/log networks: - elastic node-3: image: elasticsearch:7.17.5 container_name: node-3 environment: - "ES_JAVA_OPTS=-Xms1024m -Xmx1024m" - "TZ=Asia/Shanghai" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 ports: - "9202:9200" logging: driver: "json-file" options: max-size: "50m" volumes: - /etc/es/elasticsearch/node-3/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml - /etc/es/elasticsearch/node-3/plugins:/usr/share/elasticsearch/plugins - /home/es/elasticsearch/node-3/data:/usr/share/elasticsearch/data - /home/es/elasticsearch/node-3/log:/usr/share/elasticsearch/log networks: - elastic kibana: container_name: kibana image: kibana:7.17.5 volumes: - /etc/es/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml ports: - 5601:5601 networks: - elastic elasticsearch-head: image: wallbase/elasticsearch-head:6-alpine container_name: elasticsearch-head environment: TZ: 'Asia/Shanghai' ports: - '9100:9100' networks: - elastic networks: elastic: driver: bridge
- 創(chuàng)建目錄并打開
- 啟動
docker-compose up -d
- 驗證
- 查看docker容器
docker-compose ps
- 查看kibana,打開:http://192.168.127.142:5601
- 查看es,打開:http://192.168.127.142:9200
- 查看docker容器
文章來源:http://www.zghlxwxcb.cn/news/detail-717828.html
到了這里,關(guān)于ES-部署(docker-compose)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!