systemd 服務和多個 haproxy 實例

systemd 服務和多個 haproxy 實例

我需要運行幾個 haproxy 實例,並且需要更新 haproxy.service 檔案以新增第二個命令/實例。 Google 引導我在同一個 ExecStart= 選項上新增第二個命令,並用分號分隔,但這不起作用。

以下內容讓我認為我可以使用額外的命令添加第二個 ExecStart= ,但這也不起作用。http://www.freedesktop.org/software/systemd/man/systemd.service.html

如何透過 systemd 服務運行兩個 haproxy 實例?

原始命令

ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid

新指令

ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid; ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid

第二次嘗試

ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid

更新:這是我從服務 haproxy 狀態得到的資訊:

[root@lb01 ~]# service haproxy status
Redirecting to /bin/systemctl status  haproxy.service
haproxy.service - HAProxy Load Balancer
   Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
   Active: inactive (dead) since Fri 2015-10-30 16:35:44 GMT; 6s ago
  Process: 3221 ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy.conf -p /var/run/haproxy.pid; /usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy2.conf -p /var/run/haproxy2.pid (code=exited, status=0/SUCCESS)
 Main PID: 3221 (code=exited, status=0/SUCCESS)
Oct 30 16:48:01 lb01 systemd: Started HAProxy Load Balancer.
Oct 30 16:48:01 lb01 haproxy-systemd-wrapper: Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ]
Oct 30 16:48:01 lb01 haproxy-systemd-wrapper: [ -p <pidfile> ] [ -m <max megs> ] [ -C <dir> ]

看起來 haproxy 可能正在讀取分號和額外的命令作為參數?

答案1

如果不同的 haproxy 實例不相關,迄今為止最簡單的解決方案是按原樣使用現有單元,然後為您需要的附加服務建立第二個單元。

複製單元檔案並編輯ExecStart選項以指向第二個設定檔。

如果您預計要啟動更多此類服務,您可能需要使用systemd的模板函數

建立一個單元作為現有單元的副本,並使用說明符指向相關的設定文件/etc/systemd/system/[email protected]%i

類似的東西(不完整,因為我不知道 haproxy:

[Unit]
Description=haproxy %i

[Service]
ExecStart=/usr/local/sbin/haproxy-systemd-wrapper -f /etc/haproxy%i.conf -p /var/run/haproxy%i.pid

然後你可以啟用任何 haproxy 實例

systemctl enable haproxy@X

其中X是實例的編號(以及符合的設定檔)。

如果實例相關,您可以查看我的問題和答案:如何與自訂服務一起啟動和停止偵聽器服務

相關內容