elasticsearch叢集檔案及路徑設定
阿新 • • 發佈:2018-12-25
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}-*