
我需要運行幾個 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
是實例的編號(以及符合的設定檔)。
如果實例相關,您可以查看我的問題和答案:如何與自訂服務一起啟動和停止偵聽器服務