Elasticsearch 叢集搭建

百聯達發表於2017-04-26
一:資源

叢集: gh-cluster

節點1:gh-cluster-node-01   10.44.66.2

節點2:gh-cluster-node-02   10.116.148.103

節點3:gh-cluster-node-03   10.170.142.108

Elasticsearch:elasticsearch-2.4.4.tar.gz

安裝目錄:/mnt/gh

二:安裝 Elasticsearch

1.建立相關檔案目錄 

mkdir -p /mnt/gh/data/logs/elasticsearch
mkdir -p /mnt/gh/data/elasticsearch/{data,work,plugins,scripts}

2.建立新的使用者

groupadd elsearch
useradd elsearch -g elsearch -p elsearch

3.操作許可權

chown -R elsearch:elsearch /mnt/gh/data/logs/elasticsearch /mnt/gh/data/elasticsearch

4.安裝 Elasticsearch

tar -zxvf elasticsearch-2.4.4.tar.gz

5./etc/security/limits.conf 配置

elsearch soft memlock unlimited
elsearch hard memlock unlimited

6.Elasticsearch 配置

vi /mnt/gh/elasticsearch-2.4.4/config/elasticsearch.yml 


點選(此處)摺疊或開啟

  1. # ======================== Elasticsearch Configuration =========================
  2. #
  3. # NOTE: Elasticsearch comes with reasonable defaults for most settings.
  4. # Before you set out to tweak and tune the configuration, make sure you
  5. # understand what are you trying to accomplish and the consequences.
  6. #
  7. # The primary way of configuring a node is via this file. This template lists
  8. # the most important settings you may want to configure for a production cluster.
  9. #
  10. # Please see the documentation for further information on configuration options:
  11. # <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
  12. #
  13. # ---------------------------------- Cluster -----------------------------------
  14. #
  15. # Use a descriptive name for your cluster:
  16. #
  17.   cluster.name: gh-cluster
  18. #
  19. # ------------------------------------ Node ------------------------------------
  20. #
  21. # Use a descriptive name for the node:
  22. #
  23.   node.name: gh-cluster-node-01
  24. #
  25. # Add custom attributes to the node:
  26. #
  27. # node.rack: r1
  28. #
  29. # ----------------------------------- Paths ------------------------------------
  30. #
  31. # Path to directory where to store the data (separate multiple locations by comma):
  32.   path.data: /mnt/gh/data/elasticsearch/data
  33. #
  34. # Path to log files:
  35. #
  36.   path.logs : /mnt/gh/data/logs/elasticsearch
  37.   path.plugins: /mnt/gh/data/elasticsearch/plugins
  38.   path.scripts: /mnt/gh/data/elasticsearch/scripts
  39. #
  40. # ----------------------------------- Memory -----------------------------------
  41. #
  42. # Lock the memory on startup:
  43. #
  44.   bootstrap.memory_lock: true
  45. #
  46. # Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
  47. # available on the system and that the owner of the process is allowed to use this limit.
  48. #
  49. # Elasticsearch performs poorly when the system is swapping the memory.
  50. #
  51. # ---------------------------------- Network -----------------------------------
  52. #
  53. # Set the bind address to a specific IP (IPv4 or IPv6):
  54. #
  55.   network.host: 10.44.66.2
  56. #
  57. # Set a custom port for HTTP:
  58. #
  59.   http.port: 9200
  60. #
  61. # For more information, see the documentation at:
  62. # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
  63. #
  64. # --------------------------------- Discovery ----------------------------------
  65. #
  66. # Pass an initial list of hosts to perform discovery when new node is started:
  67. # The default list of hosts is ["127.0.0.1", "[::1]"]
  68. #
  69.   discovery.zen.ping.multicast.enabled: false
  70.   discovery.zen.ping_timeout: 120s
  71.   discovery.zen.fd.ping_timeout: 120s
  72.   discovery.zen.ping.unicast.hosts: ["10.44.66.2", "10.116.148.103", "10.170.142.108"]
  73. #
  74. # Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
  75. #
  76.   discovery.zen.minimum_master_nodes: 2
  77. #
  78. # For more information, see the documentation at:
  79. # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
  80. #
  81. # ---------------------------------- Gateway -----------------------------------
  82. #
  83. # Block initial recovery after a full cluster restart until N nodes are started:
  84. #
  85.   gateway.recover_after_nodes: 3
  86.   gateway.recover_after_time: 30m
  87.   gateway.expected_nodes: 3
  88. #
  89. # For more information, see the documentation at:
  90. # <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
  91. #
  92. # ---------------------------------- Various -----------------------------------
  93. #
  94. # Disable starting multiple nodes on a single system:
  95. #
  96. # node.max_local_storage_nodes: 1
  97. #
  98. # Require explicit names when deleting indices:
  99. #
  100. # action.destructive_requires_name: true
各節點調整node-name的配置資訊,保證唯一。

四: 在節點1上面安裝Elasticsearch  外掛

1.安裝head外掛 監控Elasticsearch的執行狀態以及資料

./plugin -DproxyPort=4832  -DproxyHost=10.116.4.116   install  mobz/elasticsearch-head

紅色部分因為是內網,用了代理訪問外網

2.安裝kopf外掛 ---ElasticSearch的管理工具

./plugin -DproxyPort=4832  -DproxyHost=10.116.4.116   install  lmenezes/elasticsearch-kopf

五:啟動

以elsearch使用者啟動三個節點

/mnt/gh/elasticsearch-2.4.4/bin/elasticsearch

六:驗證

1.

{
  "name" : "gh-cluster-node-01",
  "cluster_name" : "gh-cluster",
  "cluster_uuid" : "iGovr8lcSW62JdEABzLMyg",
  "version" : {
    "number" : "2.4.4",
    "build_hash" : "fcbb46dfd45562a9cf00c604b30849a6dec6b017",
    "build_timestamp" : "2017-01-03T11:33:16Z",
    "build_snapshot" : false,
    "lucene_version" : "5.5.2"
  },
  "tagline" : "You Know, for Search"
}

2.head外掛  _plugin/head/



3.kopf外掛 _plugin/kopf/#!/nodes



七:操作命令

1.檢查叢集的狀態
curl '10.44.66.2:9200/_cat/health?v'


2.檢查節點的資訊
curl '10.44.66.2:9200/_cat/nodes?v'


3.檢查索引資訊
curl '10.44.66.2:9200/_cat/indices?v'


4.建立索引
curl -XPUT '10.44.66.2:9200/customer?pretty'


5.往索引中,新增文件
curl -XPUT '10.44.66.2:9200/customer/external/1?pretty' -d '{"name":"John Doe"}'


6.檢視文件資訊
curl -XGET '10.44.66.2:9200/customer/external/1?pretty'


7.檢視所有文件數量
curl -XGET '10.44.66.2:9200/_count?pretty' -d '{"query":{"match_all":{}}}'


8.刪除索引
curl -XDELETE '10.44.66.2:9200/customer?pretty'


9.隨機建立文件資訊
curl -XPOST '10.44.66.2:9200/customer/external?pretty' -d '{"name":"Geng Chong"}'






一個 Elasticsearch 請求和任何 HTTP 請求一樣由若干相同的部件組成:


curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>'


被 < > 標記的部件:


VERB


適當的 HTTP 方法 或 謂詞 : GET`、 `POST`、 `PUT`、 `HEAD 或者 `DELETE`。


PROTOCOL


http 或者 https`(如果你在 Elasticsearch 前面有一個 `https 代理)


HOST


Elasticsearch 叢集中任意節點的主機名,或者用 localhost 代表本地機器上的節點。


PORT


執行 Elasticsearch HTTP 服務的埠號,預設是 9200 。


PATH


API 的終端路徑(例如 _count 將返回叢集中文件數量)。Path 可能包含多個元件,例如:_cluster/stats 和 _nodes/stats/jvm 。


QUERY_STRING


任意可選的查詢字串引數 (例如 ?pretty 將格式化地輸出 JSON 返回值,使其更容易閱讀)


BODY


一個 JSON 格式的請求體 (如果請求需要的話)

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/28624388/viewspace-2138064/,如需轉載,請註明出處,否則將追究法律責任。

相關文章