使用Systemd管理ES服務進程

Centos中的Systemd介紹


CentOS 中的 Systemd 詳細介紹

Systemd 是 Linux 系統的初始化系統和服務管理器,自 CentOS 7 起取代了傳統的 SysVinit,成為默認的初始化工具。它負責系統啟動、服務管理、日志記錄等核心功能,顯著提升了系統的啟動速度和資源管理效率。


1. Systemd 的核心作用

? 服務管理:啟動、停止、重啟服務,管理服務依賴關系。
? 系統初始化:并行化啟動進程,加速系統啟動。
? 資源監控:跟蹤進程狀態、資源占用(CPU、內存等)。
? 日志管理:通過 journald 統一收集和存儲系統及服務日志。
? 掛載點管理:自動掛載文件系統(替代 /etc/fstab 的部分功能)。


2. Systemd 的核心組件
組件功能
systemd主進程,負責初始化系統和管理其他組件。
systemctl用于管理服務的命令行工具(如啟動、停止、重啟服務)。
journald日志服務,記錄系統、內核及所有服務的日志。
unit系統資源單元(如服務、掛載點、設備等),通過 .service.target 等文件定義。

3. 常用 Systemd 命令
(1) 服務管理
# 啟動服務
sudo systemctl start nginx.service# 停止服務
sudo systemctl stop nginx# 重啟服務
sudo systemctl restart nginx# 查看服務狀態
sudo systemctl status nginx# 設置開機自啟
sudo systemctl enable nginx# 禁用開機自啟
sudo systemctl disable nginx# 查看所有已啟動的服務
systemctl list-units --type=service
(2) 日志管理(journald)
# 查看所有日志(默認顯示當前啟動的日志)
journalctl# 查看指定服務的日志
journalctl -u nginx.service# 按時間過濾(例如最近1小時)
journalctl --since "1 hour ago"# 實時跟蹤日志
journalctl -f# 查看內核日志
journalctl -k
(3) 系統狀態與維護
# 查看系統啟動時間
systemd-analyze# 分析各服務的啟動耗時
systemd-analyze blame# 重新加載修改的 unit 文件
sudo systemctl daemon-reload# 重啟 systemd 管理器(僅在緊急情況下使用)
sudo systemctl daemon-reexec

4. Systemd Unit 文件

Systemd 通過 Unit 文件(單元文件)定義系統資源,常見類型包括:
? .service:服務單元(如 Nginx、MySQL)。
? .target:目標單元(類似 SysVinit 的運行級別,如 multi-user.target)。
? .mount:掛載點單元(替代 /etc/fstab)。
? .socket:套接字單元(管理網絡或 IPC 套接字)。

Unit 文件路徑

? 系統默認配置/usr/lib/systemd/system/
? 用戶自定義配置/etc/systemd/system/

示例:自定義 Service 文件

創建 /etc/systemd/system/myapp.service

[Unit]
Description=My Custom Application
After=network.target[Service]
Type=simple
ExecStart=/usr/bin/python3 /opt/myapp/app.py
Restart=on-failure
User=myuser
Group=mygroup[Install]
WantedBy=multi-user.target
關鍵字段解釋

? [Unit]:定義依賴關系和元數據(如 After 表示啟動順序)。
? [Service]:配置服務行為(如啟動命令、重啟策略)。
? [Install]:定義如何啟用服務(如 WantedBy 指定關聯的目標)。


5. Systemd 的日志持久化

默認情況下,journald 的日志存儲在內存中(/run/log/journal/),重啟后丟失。若需持久化日志:

  1. 創建日志目錄:
sudo mkdir -p /var/log/journal
sudo systemd-tmpfiles --create --prefix /var/log/journal
  1. 重啟 journald
sudo systemctl restart systemd-journald

6. Systemd 與 SysVinit 的對比
特性SystemdSysVinit
啟動速度并行啟動,速度更快串行啟動,速度較慢
服務管理支持依賴關系、按需啟動依賴腳本順序
日志系統統一日志(journald分散在 /var/log/
配置方式通過 Unit 文件定義通過 /etc/init.d/ 腳本管理
兼容性兼容 SysVinit 腳本(但不推薦)僅支持傳統腳本

7. 注意事項與最佳實踐
  1. 避免直接修改系統默認 Unit 文件
    如需覆蓋配置,在 /etc/systemd/system/ 中創建同名文件或使用 systemctl edit

  2. 使用 systemctl enable 而非手動創建符號鏈接
    確保依賴關系正確處理。

  3. 調試服務啟動失敗
    ? 使用 systemctl status <service> 查看詳細錯誤。
    ? 結合 journalctl -u <service> 分析日志。

  4. 定期清理日志

# 保留最近7天的日志
journalctl --vacuum-time=7d

8. 典型問題解決

? 服務啟動超時
在 Unit 文件中增加 TimeoutStartSec=300(單位:秒)。

? 依賴服務未就緒
使用 AfterRequires 字段明確依賴關系。

? 自定義環境變量
在 Unit 文件的 [Service] 段添加 Environment="KEY=value"


Systemd 是 CentOS 系統管理的核心工具,熟練掌握其用法可以顯著提升運維效率。理解 Unit 文件的設計和日志管理機制,是優化服務穩定性和排查問題的關鍵!

自建Es進程通過Systemd管理


1. 創建 Elasticsearch 系統用戶

# 創建 elasticsearch 用戶及用戶組(禁止登錄)
sudo groupadd es
sudo useradd -g es -s /sbin/nologin elasticsearch# 賦予用戶對 ES 安裝目錄、數據目錄、日志目錄的權限
sudo chown -R es:elasticsearch /opt/elasticsearch/
sudo chown -R elasticsearch:elasticsearch /var/data/elasticsearch/
sudo chown -R elasticsearch:elasticsearch /var/log/elasticsearch/

2. 編寫 Systemd Unit 文件

創建文件 /etc/systemd/system/elasticsearch.service,內容如下:

[Unit]
Description=Elasticsearch 7.x Service
Documentation=https://www.elastic.co/guide/en/elasticsearch/reference/7.x/index.html
After=network.target[Service]
User=es
Group=es
Environment="ES_HOME=/opt/elasticsearch"
Environment="ES_PATH_CONF=/etc/elasticsearch"# 限制資源使用(按需調整)
LimitNOFILE=65536
LimitMEMLOCK=infinityExecStart=/opt/elasticsearch/bin/elasticsearch
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=30s# 內存限制(建議根據服務器配置調整)
Environment="ES_JAVA_OPTS=-Xms4g -Xmx4g"# 安全配置(若啟用 xpack)
# Environment="ES_SECURITY_TYPE=trial"[Install]
WantedBy=multi-user.target

3. 加載并啟動服務

# 重新加載 Systemd 配置
sudo systemctl daemon-reload# 啟動 Elasticsearch
sudo systemctl start elasticsearch# 設置開機自啟
sudo systemctl enable elasticsearch# 查看服務狀態
systemctl status elasticsearch# 查看實時日志
journalctl -u elasticsearch -f

5. 驗證 Elasticsearch 運行

# 檢查 ES 是否監聽端口 9200
curl http://localhost:9200# 輸出示例:
{"name" : "node-1","cluster_name" : "my-es-cluster","cluster_uuid" : "abc123","version" : {"number" : "7.17.3","build_flavor" : "default","build_type" : "tar","build_hash" : "abc123","build_date" : "2023-01-01","build_snapshot" : false,"lucene_version" : "8.11.1","minimum_wire_compatibility_version" : "6.8.0","minimum_index_compatibility_version" : "6.0.0"},"tagline" : "You Know, for Search"
}

6. 常見問題與解決

(1) 啟動失敗:權限不足
# 檢查目錄權限
sudo chown -R elasticsearch:elasticsearch /opt/elasticsearch
sudo chown -R elasticsearch:elasticsearch /var/data/elasticsearch# 查看詳細錯誤日志
journalctl -u elasticsearch --no-pager -n 50
(2) 內存分配失敗

/etc/sysconfig/elasticsearch 中調整 JVM 參數:

# 減少堆內存(例如 2GB)
ES_JAVA_OPTS="-Xms2g -Xmx2g"
(3) 最大文件描述符限制
# 臨時生效
ulimit -n 65536# 永久生效(編輯 /etc/security/limits.conf)
echo "elasticsearch - nofile 65536" | sudo tee -a /etc/security/limits.conf

7. 安全配置(可選)

若啟用了 Elasticsearch 安全功能(如 xpack),需在 elasticsearch.yml 中添加配置:

# 編輯配置文件 /etc/elasticsearch/elasticsearch.yml
xpack.security.enabled: true
xpack.security.transport.ssl.enabled: true

生成密碼并保存:

# 進入 ES 安裝目錄的 bin 文件夾
cd /opt/elasticsearch/bin# 交互式生成所有內置用戶密碼
./elasticsearch-setup-passwords interactive

8. 完整配置示例

配置示例

/etc/elasticsearch/elasticsearch.yml

cluster.name: my-es-cluster
node.name: node-1
path.data: /var/data/elasticsearch
path.logs: /var/log/elasticsearch
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["node-1", "node-2"]
cluster.initial_master_nodes: ["node-1"]

通過以上步驟,Elasticsearch 7.x 將被 Systemd 托管,實現開機自啟、服務監控和日志統一管理。遇到問題時,優先通過 journalctl 分析日志定位原因。

拓展

  • 1、查看當前用戶的group
id

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/73015.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/73015.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/73015.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【一維前綴和與二維前綴和(簡單版dp)】

1.前綴和模板 一維前綴和模板 1.暴力解法 要求哪段區間&#xff0c;我就直接遍歷那段區間求和。 時間復雜度O(n*q) 2.前綴和 ------ 快速求出數組中某一個連續區間的和。 1&#xff09;預處理一個前綴和數組 這個前綴和數組設定為dp&#xff0c;dp[i]表示&#xff1a;表示…

在Windows和Linux系統上的Docker環境中使用的鏡像是否相同

在Windows和Linux系統上的Docker環境中使用的鏡像是否相同&#xff0c;取決于具體的運行模式和目標平臺&#xff1a; 1. Linux容器模式&#xff08;默認/常見場景&#xff09; Windows系統&#xff1a; 當Windows上的Docker以Linux容器模式運行時&#xff08;默認方式&#xf…

植物來源藥用天然產物的合成生物學研究進展-文獻精讀121

植物來源藥用天然產物的合成生物學研究進展 摘要 大多數藥用天然產物在植物中含量低微&#xff0c;提取分離困難&#xff1b;而且這些化合物一般結構復雜&#xff0c;化學合成難度大&#xff0c;還容易造成環境污染。基于合成生物學技術獲得藥用天然產物具有綠色環保和可持續發…

JavaScript |(五)DOM簡介 | 尚硅谷JavaScript基礎實戰

學習來源&#xff1a;尚硅谷JavaScript基礎&實戰丨JS入門到精通全套完整版 筆記來源&#xff1a;在這位大佬的基礎上添加了一些東西&#xff0c;歡迎大家支持原創&#xff0c;大佬太棒了&#xff1a;JavaScript |&#xff08;五&#xff09;DOM簡介 | 尚硅谷JavaScript基礎…

瀏覽器工作原理深度解析(階段二):HTML 解析與 DOM 樹構建

一、引言 在階段一中&#xff0c;我們了解了瀏覽器通過 HTTP/HTTPS 協議獲取頁面資源的過程。本階段將聚焦于瀏覽器如何解析 HTML 代碼并構建 DOM 樹&#xff0c;這是渲染引擎的核心功能之一。該過程可分為兩個關鍵步驟&#xff1a;詞法分析&#xff08;Token 化&#xff09;和…

The Illustrated Stable Diffusion

The Illustrated Stable Diffusion 1. The components of Stable Diffusion1.1. Image information creator1.2. Image Decoder 2. What is Diffusion anyway?2.1. How does Diffusion work?2.2. Painting images by removing noise 3. Speed Boost: Diffusion on compressed…

yarn 裝包時 package里包含sqlite3@5.0.2報錯

yarn 裝包時 package里包含sqlite35.0.2報錯 解決方案&#xff1a; 第一步&#xff1a; 刪除package.json里的sqlite35.0.2 第二步&#xff1a; 裝包&#xff0c;或者增加其他的npm包 第三步&#xff1a; 在package.json里增加sqlite35.0.2&#xff0c;并運行yarn裝包 此…

一個免費 好用的pdf在線處理工具

pdf24 doc2x 相比上面能更好的支持數學公式。但是收費

buu-bjdctf_2020_babystack2-好久不見51

整數溢出漏洞 將nbytes設置為-1就會回繞&#xff0c;變成超大整數 從而實現棧溢出漏洞 環境有問題 from pwn import *# 連接到遠程服務器 p remote("node5.buuoj.cn", 28526)# 定義后門地址 backdoor 0x400726# 發送初始輸入 p.sendlineafter(b"your name…

DHCP 配置

? 最近發現&#xff0c;自己使用虛擬機建立的集群&#xff0c;在斷電關機或者關機一段時間后&#xff0c;集群之間的鏈接散了&#xff0c;并且節點自身的 IP 也發生了變化&#xff0c;發現是 DHCP 的問題&#xff0c;這里記錄一下。 DHCP ? DHCP&#xff08;Dynamic Host C…

股指期貨合約的命名規則是怎樣的?

股指期貨合約的命名規則其實很簡單&#xff0c;主要由兩部分組成&#xff1a;合約代碼和到期月份。 股指期貨合約4個字母數字背后的秘密 股指期貨合約一般來說都是由字母和數字來組合的&#xff0c;包含了品種代碼和到期的時間&#xff0c;下面我們具體來看看。 咱們以“IF23…

OSPF 協議詳解:從概念原理到配置實踐的全網互通實現

什么是OSPF OSPF&#xff08;開放最短路徑優先&#xff09;是由IETF開發的基于鏈路狀態的自治系統內部路由協議&#xff0c;用來代替存在一些問題的RIP協議。與距離矢量協議不同&#xff0c;鏈路狀態路由協議關心網絡中鏈路活接口的狀態&#xff08;包括UP、DOWN、IP地址、掩碼…

深入探究 JVM 堆的垃圾回收機制(二)— 回收

GC Roots 枚舉需要遍歷整個應用程序的上下文&#xff0c;而在進行可達性分析或者垃圾回收時&#xff0c;如果我們還是進行全堆掃描及收集&#xff0c;那么會非常耗時。JVM 將堆分為新生代及老生代&#xff0c;它們的回收頻率及算法不一樣。 1 回收算法 在進行可達性分析時&am…

藍橋杯 之 數論

文章目錄 習題質數找素數 數論&#xff0c;就是一些數學問題&#xff0c;藍橋杯十分喜歡考察&#xff0c;常見的數論的問題有&#xff1a;取模&#xff0c;同余&#xff0c;大整數分解&#xff0c;素數&#xff0c;質因數&#xff0c;最大公約數&#xff0c;最小公倍數等等 素…

Unity Shader編程】之渲染流程之深度及pass詳解

關于透明物體的渲染&#xff0c;首先需要了解以下部分 深度緩沖區深度寫入深度測試pass渲染和深度測試的過程深度測試和顏色混合過程 ** 一&#xff0c;深度緩沖區 ** 深度即物體距離相機的距離&#xff0c;深度寫入即是把物體的距離相機信息記錄下來&#xff0c;寫入一個名…

csv文件格式和excel數據格式有什么區別

CSV&#xff08;Comma-Separated Values&#xff09;和Excel&#xff08;XLS/XLSX&#xff09;數據格式的主要區別如下&#xff1a; 1. 文件格式 CSV&#xff1a;純文本格式&#xff0c;每一行表示一條記錄&#xff0c;字段之間用逗號&#xff08;,&#xff09;或其他分隔符&…

Beans模塊之工廠模塊注解模塊@Qualifier

博主介紹&#xff1a;?全網粉絲5W&#xff0c;全棧開發工程師&#xff0c;從事多年軟件開發&#xff0c;在大廠呆過。持有軟件中級、六級等證書。可提供微服務項目搭建與畢業項目實戰&#xff0c;博主也曾寫過優秀論文&#xff0c;查重率極低&#xff0c;在這方面有豐富的經驗…

C# HTTP 文件上傳、下載服務器

程序需要管理員權限&#xff0c;vs需要管理員打開 首次運行需要執行以下命令注冊URL&#xff08;管理員命令行&#xff09; netsh advfirewall firewall add rule name"FileShare" dirin actionallow protocolTCP localport8000 ipconfig | findstr "IPv4&quo…

基于 TRIZ 理論的筏式養殖吊籠清洗裝備設計研究

基于 TRIZ 理論的筏式養殖吊籠清洗裝備設計研究 一、引言 筏式養殖在水產養殖業中占據重要地位&#xff0c;吊籠作為養殖貝類、藻類等生物的關鍵器具&#xff0c;其清潔程度直接影響養殖生物的健康與產量。傳統的吊籠清洗方式多依賴人工&#xff0c;效率低下、勞動強度大且清洗…

QA:備份產品的存儲架構采用集中式和分布式的優劣?

分布式和集中式各有優劣&#xff0c;且這兩者下面的存儲類型也都不盡相同&#xff0c;從備份與恢復的數據層面來看&#xff0c;這兩者存儲相結合才是優解。 眾所周知&#xff0c;備份數據只存一份還只放在一個存儲里是不現實的。假設把備份數據訪問頻率、生命周期等參數分為三個…