Elastic Certified Engineer複習記錄-集羣搭建

集羣搭建和啓動

對應考綱裏的
Installation and Configuration
Deploy and start an Elasticsearch cluster that satisfies a given set of requirements

一般有幾種方式來deploy and start 一個 ES集羣,對於考試來說應該是Linux裏的兩種RPM包和tar包安裝,畢竟包括windows、Mac在內的系統並不是搭建搜索服務器的常用環境,而docker並不是elastic的技術棧(雖然他們也有從docker image到docker-compose的支持)

Linux環境

環境準備

sudo yum install -y wget tar shasum

tar包安裝方式

官網步驟

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gz.sha512
shasum -a 512 -c elasticsearch-7.6.0-linux-x86_64.tar.gz.sha512 
tar -xzf elasticsearch-7.6.0-linux-x86_64.tar.gz
cd elasticsearch-7.6.0/ 
  1. 從官網地址下載對應的tar包以及它的sha512的驗證文件
    1. 或者也可以直接下載這個包,裏面只有純開源功能的部分,不過考試的話後面可能會考到權限設置之類的只在xpack裏面的功能,不大可能需要這個包https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.6.0-linux-x86_64.tar.gz
    2. tar包的格式是elasticsearch-${ES_VERSION}-linux-x86_64.tar.gz,或者elasticsearch-oss-${ES_VERSION}-linux-x86_64.tar.gz
  2. 通過shasum來驗證這個jar包的合法性
  3. 解壓縮這個tar包並進入項目文件夾,這個文件夾下面會用$ES_HOME表示
  4. 記得給整個文件夾賦予相應的權限,特別是$ES_HOME/data和$ES_HOME/log,或者相應的配置的data和log目錄
  5. 運行命令 sudo echo vm.max_map_count=655360 >> /etc/sysctl.conf
  6. 然後把修改配置文件 sudo vi /etc/security/limits.conf
    1. 把兩個nofile的值改成65536
      1. * soft nofile 65535
      2. * hard nofile 65535
    2. 添加 memlock unlimited的配置
      1. * hard memlock unlimited
      2. * soft memlock unlimited
  7. 執行啓動命令./bin/elasticsearch,如果要求後臺運行則需要加參數-d寫作./bin/elasticsearch -d
    1. ES默認不可以用root賬戶,某些舊的版本可以通過修改jvm參數或者直接在啓動參數裏添加-Des.insecure.allow.root=true來強行使用root啓動
    2. 但是在比較新的版本里這個方式已經失效了,只能用非root用戶啓動
  8. 如果是前臺運行,es節點的日誌會直接輸出在屏幕上,同時寫在$ES_HOME/logs/${clusterName}.log
  9. 檢查一下集羣狀態,是否正常啓動
    1. curl ${ip}:9200,看是否會有顯示集羣信息的json返回,如果有就說明啓動正常了
      {
        "name" : "node1", // 當前訪問節點名字
        "cluster_name" : "docker-cluster", // 集羣名稱
        "cluster_uuid" : "wZFXKEITRKWVg36vUHWgyQ", // 集羣id(自動生成)
        "version" : {
          "number" : "7.6.0", // 節點ES版本
          "build_flavor" : "oss", // 存儲方式
          "build_type" : "docker", // 構建方式(我用的docker,官網的例子用的tar包)
          "build_hash" : "7f634e9f44834fbc12724506cc1da681b0c3b1e3", // 構建hash
          "build_date" : "2020-02-06T00:09:00.449973Z", // 構建時間
          "build_snapshot" : false, // 是否snapshot
          "lucene_version" : "8.4.0", // lucene版本
          "minimum_wire_compatibility_version" : "6.8.0", // 最低寫入版本
          "minimum_index_compatibility_version" : "6.0.0-beta1" // 最低索引版本,這倆我也不太清楚啥意思,目測是最小支持的ES節點版本
        },
        "tagline" : "You Know, for Search"
      }
      

RPM包安裝

官網步驟有倆:
直接yum install

  1. sudo vim /etc/yum.repos.d/elasticsearch.repo把下面這些玩意填在裏面,保存並退出
    [elasticsearch]
    name=Elasticsearch repository for 7.x packages
    baseurl=https://artifacts.elastic.co/packages/7.x/yum
    gpgcheck=1
    gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
    enabled=0
    autorefresh=1
    type=rpm-md
    
  2. sudo yum install --enablerepo=elasticsearch elasticsearch

手動下載rpm包

wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-x86_64.rpm.sha512
shasum -a 512 -c elasticsearch-7.6.0-x86_64.rpm.sha512 
sudo rpm --install elasticsearch-7.6.0-x86_64.rpm

#當然,rpm包也有開源版的,https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-oss-7.6.0-x86_64.rpm
命名格式和tar包類似,elasticsearch-${ES_VERSION}-linux-x86_64.rpm

然後就是正常的運行systemctl啓動命令了,和通過systemctl安裝啓動其他服務一樣

sudo /bin/systemctl daemon-reload // 重新家在systemctl配置
sudo systemctl enable elasticsearch.service // ES服務保活開啓
sudo systemctl start elasticsearch.service // 開啓ES服務
sudo systemctl stop elasticsearch.service // 關閉ES服務

通過RPM包安裝和tar包安裝之後配置文件包括ES的一些功能性文件(夾)的位置會有所不同,具體見下一節。
運行完systemctl start elasticsearch.service之後有兩種方式看ES節點是否正常啓動

  1. 運行systemctl start elasticsearch.service,如果成功了會打印相應的start狀態的日誌出來
  2. 和tar包啓動一樣,運行curl ${ip}:9200看是否會出現集羣啓動成功的信息

在系統配置文件裏(/etc/sysconfig/elasticsearch),RPM包安裝還支持一些其他的環境配置

key
JAVA_HOME 自行指定的Javahome,替代安裝完之後默認的路徑
MAX_OPEN_FILES 最大可打開文件數?默認65535
MAX_LOCKED_MEMORY 最大可鎖定內存數,建議設成unlimited用來配合配置文件裏的bootstrap.memory_lock
MAX_MAP_COUNT 最大內存map空間,不知道幹嘛用的,官網提供的文檔也打不開。大概說的是如果用mmapfs的方式存儲數據,那麼記得在systemctl啓動ES之前把它設大點,默認262144
ES_PATH_CONF 自定義的配置文件路徑,不設就在/etc/elasticsearch目錄裏面
ES_JAVA_OPTS 其他的Java啓動參數。ES是個Java項目,所以這裏可以添加一些自定的Java啓動參數。我能想到的就是一些Java agent路徑之類的東西
RESTART_ON_UPGRADE 是否在手動安裝升級之後自動重啓ES實例,默認false

tar包安裝和RPM包安裝的區別

區別 tar包 rpm包
home tar包解壓縮的地方$ES_HOME /usr/share/elasticsearch
bin $ES_HOME/bin /usr/share/elasticsearch/bin
conf $ES_HOME/conf /etc/elasticsearch,也可以配置爲環境變量 ES_PATH_CONF
data $ES_HOME/data /var/lib/elasticsearch
logs $ES_HOME/logs /var/log/elasticsearch
jdk /usr/share/elasticsearch/jdk
plugins $ES_HOME/plugins /usr/share/elasticsearch/plugins

簡單講用tar包安裝的時候,tar包解壓縮的folder就是$ES_HOME,而用rpm包安裝的時候,ES的各個文件夾會到處散,不過主要會在/usr/share/elasticsearch裏面

安裝完成

按照官網的說法,安裝完成基本的安裝之後,理論上應該是對ES開啓守護進程或者做保活。

通過tar包安裝的話,運行./bin/elasticsearch -d -p pid讓ES節點運行在指定的pid上,後面可以通過運行pkill -F pid來停用ES節點,不過我想大家應該更多的會是直接kill -9吧。😛

給個參考命令,當然這樣停止ES節點不夠優雅。ps -ef | grep elastic | grep -v grep | awk '{ print $2 }'

對於RPM包安裝的就不用那麼麻煩
sudo systemctl enable elasticsearch.service做保活和自啓動
sudo systemctl stop elasticsearch.service做服務停止

docker 方式

雖然我個人認爲主流方式(考試會考)的是Linux環境的安裝,但是作爲越來越火的docker技術還是想提一嘴。

  1. 下docker鏡像docker pull docker.elastic.co/elasticsearch/elasticsearch:7.6.0
  2. 直接單節點啓動docker run -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.6.0
    1. 這裏可以看到除了ES默認端口暴露之外,還有個"discovery.type=single-node",這就是單節點啓動的時候不去嘗試連接其他節點的意思
  3. 還有直接docker-compose方式啓動多節點的,配置文件太長了就不貼了,有興趣的同學可以自己下下來玩玩

參考資料

官網安裝方式目錄
tar包安裝
rpm包安裝
docker安裝

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章