<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Docker Elasticsearch 集群配置

          共 9736字,需瀏覽 20分鐘

           ·

          2021-03-03 11:00

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

            作者 |  讓我發(fā)會(huì)呆

          來(lái)源 |  urlify.cn/NNRvUv

          76套java從入門(mén)到精通實(shí)戰(zhàn)課程分享

          一:選用ES原因

          公司項(xiàng)目有些mysql的表數(shù)據(jù)已經(jīng)超過(guò)5百萬(wàn)了,各種業(yè)務(wù)的查詢?nèi)霂?kù)壓力已經(jīng)凸顯出來(lái),初步打算將一個(gè)月前的數(shù)據(jù)遷移到ES中,mysql的老數(shù)據(jù)就物理刪除掉。

          首先是ES使用起來(lái)比較方便,對(duì)于項(xiàng)目初期存儲(chǔ)一些不能刪除但又一般使用不到的數(shù)據(jù)比較合適,

          還有就是ES的存儲(chǔ)采用索引分片式,使用數(shù)據(jù)的創(chuàng)建時(shí)間分片也很合適。

          本文使用的ES版本:5.6.8,docker版本:18.06.3-ce

          本文的測(cè)試機(jī)器為兩臺(tái)百度云的2C4G的機(jī)器,每個(gè)機(jī)器分別部署三個(gè)節(jié)點(diǎn)(1個(gè)master,2個(gè)data),總共6個(gè)節(jié)點(diǎn),次配置僅為研究測(cè)試用,具體生產(chǎn)業(yè)務(wù)要看情況考慮。


          二:Docker的安裝:

            參考我之前的安裝文檔:《Docker-常用基建的安裝與部署》。


          三:ES配置

          1:創(chuàng)建es相關(guān)目錄

          cd /home/data/docker
          mkdir -p es/cluster/es-0/conf
          mkdir -p es/cluster/es-1/conf
          mkdir -p es/cluster/es-2/conf
          cd es/cluster/es-0/conf
          touch elasticsearch.yml
          # 一個(gè)機(jī)器 三個(gè)節(jié)點(diǎn),復(fù)制兩份
          cd /home/data/docker
          cp es/cluster/es-0/conf/elasticsearch.yml es/cluster/es-1/conf
          cp es/cluster/es-0/conf/elasticsearch.yml es/cluster/es-2/conf

          2:編輯 服務(wù)器A的 elasticsearch.yml

          #跨域支持
          http.cors.enabled: true
          http.cors.allow-origin: "*"
          #集群名稱(chēng)(所有節(jié)點(diǎn)的集群名稱(chēng)必須一致)
          cluster.name: es-nova
          #節(jié)點(diǎn)名稱(chēng)(集群下每個(gè)節(jié)點(diǎn)都不相同)
          node.name: node-0#ifconfig查看當(dāng)前系統(tǒng)的內(nèi)網(wǎng)ipnetwork.host: 172.16.0.4#對(duì)外服務(wù)的http端口,默認(rèn)為9200http.port: 9201
          #設(shè)置可以訪問(wèn)的ip,默認(rèn)為0.0.0.0,這里全部設(shè)置通過(guò)network.bind_host: 0.0.0.0
          #設(shè)置結(jié)點(diǎn)之間交互的ip地址network.publish_host: 當(dāng)前服務(wù)器的外網(wǎng)ip
          #culster transport port
          #節(jié)點(diǎn)之間交互的tcp端口transport.tcp.port: 9301
          transport.tcp.compress: true
          #至少存在一個(gè)主資格節(jié)點(diǎn)時(shí)才進(jìn)行主節(jié)點(diǎn)選舉,防止腦裂
          discovery.zen.minimum_master_nodes: 1
          #是否有master選舉資格:一個(gè)集群同時(shí)只有一個(gè)master存在,true代表有資格參與master選舉node.master: true
          #是否作為數(shù)據(jù)節(jié)點(diǎn):參與數(shù)據(jù)存儲(chǔ)與查詢node.data: false
          #等待集群至少存在多少節(jié)點(diǎn)數(shù)才進(jìn)行數(shù)據(jù)恢復(fù)
          gateway.recover_after_nodes: 3
          #等待 5 分鐘,或者3 個(gè)節(jié)點(diǎn)上線后,才進(jìn)行數(shù)據(jù)恢復(fù),這取決于哪個(gè)條件先達(dá)到
          gateway.expected_nodes: 3
          gateway.recover_after_time: 5m
          #集群?jiǎn)尾グl(fā)現(xiàn)
          discovery.zen.ping.unicast.hosts: ["外網(wǎng)ip:9301","另一臺(tái)服務(wù)器外網(wǎng)ip:9301"]# 連接集群超時(shí)時(shí)間
          discovery.zen.ping_timeout: 120s
          # discovery.zen.fd合理的設(shè)置可以避免正常機(jī)器重啟造成的數(shù)據(jù)遷移
          # 單次心跳檢測(cè)ping超時(shí)時(shí)間
          discovery.zen.fd.ping_timeout: 60s
          # 多少次心跳檢測(cè)失敗才認(rèn)為節(jié)點(diǎn)丟失
          discovery.zen.fd.ping_retries: 3
          # 集群機(jī)器間機(jī)器定時(shí)心跳檢測(cè)時(shí)間
          discovery.zen.fd.ping_interval: 30s
          # 為保證ES性能,請(qǐng)同時(shí)關(guān)閉系統(tǒng)內(nèi)存交換 swapp 
          #bootstrap.memory_lock: true

          上面這個(gè)當(dāng)前一個(gè)非數(shù)據(jù)節(jié)點(diǎn)的master節(jié)點(diǎn)的配置,然后再基于當(dāng)前的配置,簡(jiǎn)單修改下,分別在es-1/conf 和 es-2/conf 下創(chuàng)建兩個(gè)數(shù)據(jù)節(jié)點(diǎn),

          只需要修改以下配置:

          node.name: node-1   
          http.port: 9202  
          transport.tcp.port: 9302 
          node.master: false
          node.data: true
          node.name: node-2   
          http.port: 9203
          transport.tcp.port: 9303
          node.master: false
          node.data: true 

          3:編輯 服務(wù)器B的 elasticsearch.yml

          #跨域支持
          http.cors.enabled: true
          http.cors.allow-origin: "*"
          #集群名稱(chēng)(所有節(jié)點(diǎn)的集群名稱(chēng)必須一致)
          cluster.name: es-nova
          #節(jié)點(diǎn)名稱(chēng)(集群下每個(gè)節(jié)點(diǎn)都不相同)
          node.name: node-4
          #ifconfig查看當(dāng)前系統(tǒng)的內(nèi)網(wǎng)ip
          network.host: 172.16.0.4
          #對(duì)外服務(wù)的http端口,默認(rèn)為9200
          http.port: 9201
          #設(shè)置可以訪問(wèn)的ip,默認(rèn)為0.0.0.0,這里全部設(shè)置通過(guò)
          network.bind_host: 0.0.0.0
          #設(shè)置結(jié)點(diǎn)之間交互的ip地址
          network.publish_host: 當(dāng)前服務(wù)器的外網(wǎng)ip
          #culster transport port
          #節(jié)點(diǎn)之間交互的tcp端口
          transport.tcp.port: 9301
          transport.tcp.compress: true
          #至少存在一個(gè)主資格節(jié)點(diǎn)時(shí)才進(jìn)行主節(jié)點(diǎn)選舉,防止腦裂
          discovery.zen.minimum_master_nodes: 1
          #是否有master選舉資格:一個(gè)集群同時(shí)只有一個(gè)master存在,true代表有資格參與master選舉
          node.master: true
          #是否作為數(shù)據(jù)節(jié)點(diǎn):參與數(shù)據(jù)存儲(chǔ)與查詢
          node.data: false
          #等待集群至少存在多少節(jié)點(diǎn)數(shù)才進(jìn)行數(shù)據(jù)恢復(fù)
          gateway.recover_after_nodes: 3
          #等待 5 分鐘,或者3 個(gè)節(jié)點(diǎn)上線后,才進(jìn)行數(shù)據(jù)恢復(fù),這取決于哪個(gè)條件先達(dá)到
          gateway.expected_nodes: 3
          gateway.recover_after_time: 5m
          #集群?jiǎn)尾グl(fā)現(xiàn)
          discovery.zen.ping.unicast.hosts: ["外網(wǎng)ip:9301","另一臺(tái)服務(wù)器外網(wǎng)ip:9301"]
          # 連接集群超時(shí)時(shí)間
          discovery.zen.ping_timeout: 120s
          # discovery.zen.fd合理的設(shè)置可以避免正常機(jī)器重啟造成的數(shù)據(jù)遷移
          # 單次心跳檢測(cè)ping超時(shí)時(shí)間
          discovery.zen.fd.ping_timeout: 60s
          # 多少次心跳檢測(cè)失敗才認(rèn)為節(jié)點(diǎn)丟失
          discovery.zen.fd.ping_retries: 3
          # 集群機(jī)器間機(jī)器定時(shí)心跳檢測(cè)時(shí)間
          discovery.zen.fd.ping_interval: 30s
          # 為保證ES性能,請(qǐng)同時(shí)關(guān)閉系統(tǒng)內(nèi)存交換 swapp 
          #bootstrap.memory_lock: true

          和服務(wù)器A的不同配置僅僅 node.namenetwork.publish_host。

          同樣在當(dāng)前服務(wù)器下也分別在es-1/conf 和 es-2/conf 下創(chuàng)建兩個(gè)數(shù)據(jù)節(jié)點(diǎn),

          node.name: node-5  
          http.port: 9202  
          transport.tcp.port: 9302 
          node.master: false
          node.data: true
          node.name: node-6  
          http.port: 9203
          transport.tcp.port: 9303
          node.master: false
          node.data: true



          四:修改宿主機(jī)的配置

          如果es集群?jiǎn)?dòng)報(bào)錯(cuò):max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] vim /etc/sysctl.conf 
          # 配置里需要添加
          vm.max_map_count=262144
          # 執(zhí)行命令sysctl -p 生效
          sysctl -p
          如果es集群?jiǎn)?dòng)報(bào)錯(cuò):memory locking requested for elasticsearch process but memory is not locked# 修改limits.conf vim /etc/security/limits.conf# 添加 *表示所用用戶
          * soft nofile 65536
          * hard nofile 65536
          * soft nproc 32000
          * hard nproc 32000
          * hard memlock unlimited
          * soft memlock unlimited
          # 關(guān)閉selinux
          vim /etc/sysconfig/selinux
          # 將 SELINUX=enforcing 改為 SELINUX=disabled

          五:集群

          1:開(kāi)啟集群

          docker run -d --name es-0 -p 9201:9201 -p 9301:9301 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /home/data/docker/es/cluster/es-0/data:/usr/share/elasticsearch/data -v /home/data/docker/es/cluster/es-0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/data/docker/es/cluster/es-0/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8

          docker run -d --name es-1 -p 9202:9202 -p 9302:9302 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /home/data/docker/es/cluster/es-1/data:/usr/share/elasticsearch/data -v /home/data/docker/es/cluster/es-1/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/data/docker/es/cluster/es-1/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8

          docker run -d --name es-2 -p 9203:9203 -p 9303:9303 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /home/data/docker/es/cluster/es-2/data:/usr/share/elasticsearch/data -v /home/data/docker/es/cluster/es-2/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /home/data/docker/es/cluster/es-2/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8
          docker run -d --name es-0 -p 9201:9201 -p 9301:9301 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /root/data/docker/es/cluster/es-0/data:/usr/share/elasticsearch/data -v /root/data/docker/es/cluster/es-0/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/data/docker/es/cluster/es-0/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8

          docker run -d --name es-1 -p 9202:9202 -p 9302:9302 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /root/data/docker/es/cluster/es-1/data:/usr/share/elasticsearch/data -v /root/data/docker/es/cluster/es-1/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/data/docker/es/cluster/es-1/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8

          docker run -d --name es-2 -p 9203:9203 -p 9303:9303 -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" -v /root/data/docker/es/cluster/es-2/data:/usr/share/elasticsearch/data -v /root/data/docker/es/cluster/es-2/conf/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /root/data/docker/es/cluster/es-2/logs:/user/share/elasticsearch/logs --restart=always elasticsearch:5.6.8

          啟動(dòng)完成后,docker ps  以及docker logs es-0  去查看es是否啟動(dòng)成功。

           

          2:常用的一些es命令

          #集群健康
          curl -XGET 127.0.0.1:9201/_cat/health?v

          "status": 集群狀態(tài),重點(diǎn)關(guān)注項(xiàng)

          * green正常
          * yellow服務(wù)仍然可用但存在副本分片丟失,
          * red 存在主分片丟失,集群不正常,存在數(shù)據(jù)丟失可能

          shards :所有分片數(shù)(主分片+副本分片)

          pri:主分片數(shù)

           

          # 查詢集群節(jié)點(diǎn)
          curl -XGET 127.0.0.1:9203/_cat/nodes?v

           v替換為format=json可以使用json形式返回

          表頭字段含義用途
          IpIP地址
          heap.percentheap使用百分比內(nèi)存使用高時(shí)重點(diǎn)關(guān)注
          ram.percent系統(tǒng)內(nèi)存使用百分比內(nèi)存使用高時(shí)重點(diǎn)關(guān)注
          cpu 當(dāng)前cpu使用百分比CPU使用高時(shí)重點(diǎn)關(guān)注
          load_1m最近1分鐘cpu loadCPU使用高時(shí)重點(diǎn)關(guān)注
          load_5m最近5分鐘cpu loadCPU使用高時(shí)重點(diǎn)關(guān)注
          load_15m最近15分鐘cpu loadCPU使用高時(shí)重點(diǎn)關(guān)注
          node.role三字母縮寫(xiě) m: 主節(jié)點(diǎn)  d: 數(shù)據(jù)節(jié)點(diǎn)  i: 協(xié)調(diào)節(jié)點(diǎn)
          master* 表示當(dāng)前節(jié)點(diǎn)為主節(jié)點(diǎn)


          # 分片信息查詢
          curl -XGET 127.0.0.1:9201/_cat/shards?v

           

          表頭字段含義用途
          index索引名
          shard分片
          prirepp:主分片,r:副本分片
          state節(jié)點(diǎn)狀態(tài)
          docs分片文檔數(shù)
          store分片數(shù)據(jù)大小
          ip分片所在ip地址
          node分片所在節(jié)點(diǎn)名稱(chēng)結(jié)合prirep,確定多個(gè)主分片是否分布在同一個(gè)節(jié)點(diǎn)


          分片移動(dòng)(當(dāng)多個(gè)主分片分配在同一節(jié)點(diǎn),造成單節(jié)點(diǎn)寫(xiě)入壓力較大,可將其中一個(gè)主分片移動(dòng)到空閑節(jié)點(diǎn))

          POST _cluster/reroute
          {
             "commands": [
               {
                 "move": {
                   "index""poi-address",            // 索引名
                   "shard": 2,                        // 分片號(hào)
                   "from_node""node-1",            // 源節(jié)點(diǎn)
                   "to_node""node-5"            // 目標(biāo)節(jié)點(diǎn)
                 }
               }
             ]
          }
          commands為json數(shù)據(jù),支持多個(gè)遷移命令同時(shí)執(zhí)行,可通過(guò)GET /_cat/recovery?v 查看遷移進(jìn)度






          粉絲福利:Java從入門(mén)到入土學(xué)習(xí)路線圖

          ??????

          ??長(zhǎng)按上方微信二維碼 2 秒


          感謝點(diǎn)贊支持下哈 

          瀏覽 53
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产欧美一区二区三区四区 | 人妻巨大乳HD无码 | 久久影音先锋 | 国产一级a毛一级a看免费人交 | 亚洲精品在线视频 |