我需要运行几个 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
是实例的编号(以及匹配的配置文件)。
如果实例相关,您可以查看我的问题和答案:如何与自定义服务一起启动和停止侦听器服务