1. 程式人生 > >elasticsearch叢集檔案及路徑設定

elasticsearch叢集檔案及路徑設定

es叢集檔案路徑:
(1)資料目錄、日誌目錄以及外掛目錄
         預設情況下es會將plugin、log、data 、config、file都放在es的安裝目錄中。這有一個問題,就是在進行es升級的時候,可能會導致這些目錄被覆蓋掉使我們叢集中的檔案或資料丟失,所以對於這些特殊檔案
      應該 特別指定目錄去儲存:
        path.data:用於設定資料檔案的目錄,可以指定多個目錄,用逗號分隔即可如果多個目錄在不同的磁碟上,那麼這就是一個最簡單的RAID 0的方式,將資料在本地進行條帶化儲存了,可以提升整體的磁碟讀寫效能。
                   es會自動將資料在多個磁碟的多個目錄中條帶化儲存資料。
        path.logs:用於設定日誌檔案的目錄
        path.plugins:用於設定外掛存放的目錄
一般建議的目錄地址是:
        建立目錄:
             mkdir -p /var/log/elasticsearch
             mkdir -p /var/data/elasticsearch
             mkdir -p /var/plugin/elasticsearch
             mkdir -p /etc/elasticsearch

        指定目錄:
            path.logs: /var/log/elasticsearch
            path.data: /var/data/elasticsearch
            path.plugins: /var/plugin/elasticsearch
            config:/etc/elasticsearch
        1.在RAID 0的儲存級別下,每個磁碟上會儲存一部分資料,但是如果一個磁碟故障了,那麼可能導致這臺機器上的部分資料就丟失了。如果我們的es是有replica的,那麼在其他機器上還是會有一份副本的。
 如果data file指定了多個目錄,為了儘量減少資料丟失的風險,es會將某個shard的資料都分配到一個磁碟上去。這就意味著每個shard都僅僅會放在一個磁碟上。es不會將一個shard的資料條帶化儲存到多個磁碟上去,
 因為如果一個磁碟丟失了,就會導致整個shard資料丟失。
        2.但是這又引入了效能的問題,如果我們給一個機器新增更多的磁碟來提升單個索引的讀寫效能,是沒有效果的。因為這個索引在這個機器上的shard僅僅存在於一個磁碟上。因此data file指定多個目錄,僅僅對
於你的一臺機器上儲存了多個index的多個shard時,才會有效果的。因為不同index的shard可能就被儲存到不同的磁碟上去了,對多個index的shard讀寫可以走不同磁碟,提升了效能。
雖然multiple data path是一個很有用的功能,但是es畢竟不是一個專門的RAID軟體。如果我們要對RAID儲存策略進行更多的配置,提高儲存的健壯性以及靈活性,還是要用專門的RAID軟體來進行機器的磁碟資料儲存,
而不是用multiple data path策略。
       綜上所述,multiple data path功能在實際的生產環境中,其實是較少使用的。
(2)es的配置檔案(config目錄下):
            1.es有兩個配置檔案elasticsearch.yml,用於配置es,
            2.log4j.properties用來配置es日誌列印。這些檔案都被放在config目錄下,預設就是ES_HOME/config。可以通過下面的命令來重新設定:./bin/elasticsearch -Epath.conf=/path/to/my/config/。
配置檔案的格式是yaml格式的如下面這種格式:
          path:
            data: /var/lib/elasticsearch
            logs: /var/log/elasticsearch
4、日誌配置
es使用log4j2來記錄日誌,log4j2可以通過log4j2.properties檔案來進行配置。比如下面的這份配置檔案:
       appender.rolling.type = RollingFile
       appender.rolling.name = rolling
       appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log     es log的基礎路徑
       appender.rolling.layout.type = PatternLayout         配置了rollover發生的條件,是基於IfLastModified
       appender.rolling.layout.pattern = [%d{ISO8601}][%-5p][%-25c] %.10000m%n   保留的天數,這裡是7天
       appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}.log   配置了一個刪除檔案的格式,這樣就只是刪除過期日誌檔案,但是不要刪除慢查詢日誌
       appender.rolling.policies.type = Policies
       appender.rolling.policies.time.type = TimeBasedTriggeringPolicy
       appender.rolling.policies.time.interval = 1
       appender.rolling.policies.time.modulate = true
       appender.rolling.type = RollingFile       就配置了appender型別是RollingFile
       appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log,      就配置了日誌路徑是/var/log/elasticsearch/production.log
       appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}.log,就配置了將日誌每天寫一份到/var/log/elasticsearch/production-2017-01-01.log檔案中
       appender.rolling.policies.time.type = TimeBasedTriggeringPolic,這裡配置了用基於時間的roll策略
       appender.rolling.policies.time.interval = 1,這個設定了每天一份日誌檔案
       appender.rolling.policies.time.modulate = true,這個設定了根據自然天來劃分檔案,而不是24小時
       還可以配置將日誌檔案保留一段時間內,同時刪除之前的日誌檔案
       appender.rolling.strategy.type = DefaultRolloverStrategy
       appender.rolling.strategy.action.type = Delete
       appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
       appender.rolling.strategy.action.condition.type = IfLastModified
       appender.rolling.strategy.action.condition.age = 7D
       appender.rolling.strategy.action.PathConditions.type = IfFileName
       appender.rolling.strategy.action.PathConditions.glob = ${sys:es.logs.cluster_name}-*