新しいUbuntu 10.04サーバーをインストールし、ルートとしてログインして、apt-getを使用してhaproxyをインストールしました。
Haproxyをデーモンとして直接実行できますが、/etc/init.d/haproxy start
を実行しても何も起こりません。エラーメッセージすらありません。
netstat -a
は、haproxyとのバランスをとろうとしているhttpポートを使用していないことを示しています...
アイデア?
編集
apt-get install haproxy
が最後にこう言っていることに気付きました:
update-rc.d:警告:/etc/init.d/haproxy LSB情報がありませんupdate-rc.d:参照 http://wiki.debian.org/LSBInitScripts
/etc/default/haproxy
はENABLED=1
と言います
sh -xv /etc/init.d/haproxy start
のデバッグ出力
#!/bin/sh
#
# chkconfig: - 85 15
# description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \
# for high availability environments.
# processname: haproxy
# config: /etc/haproxy.cfg
# pidfile: /var/run/haproxy.pid
# Source function library.
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
Elif [ -f /etc/rc.d/init.d/functions ] ; then
. /etc/rc.d/init.d/functions
else
exit 0
fi
+ [ -f /etc/init.d/functions ]
+ [ -f /etc/rc.d/init.d/functions ]
+ exit 0
root@li267-63:~#
/etc/default/haproxy
を編集し、ENABLED=1
という行が含まれていることを確認します。
デフォルトはENABLED = 0です。これは、haproxyに適切なデフォルト設定がないため、最初に設定してから有効にする必要があるためです。
「テスト」行が常に失敗するため、ENABLEDを設定しても効果がないという同じ問題がありました。理由が見つかりました:initスクリプトの代わりに/etc/default/haproxy
を編集する必要があります。
私はこの1年前のスレッドを知っています。
/etc/init.d/haproxy reload
またはservice haproxy reload
を使用すると、正常にリロードされます。
最初にubuntuで管理されたパッケージをインストールし、(バージョンが必要な機能をサポートしていなかったことに気づいた後)haproxyの新しいバージョンをインストールした後、私はこの同じ問題に遭遇しました。実際に実行可能ファイルが/ usr/local/sbin/haproxyにあるときに、巻き上げたinit.dスクリプトは/ usr/sbin/haproxyを指していました。前述のデバッグ出力「sh -xv /etc/init.d/haproxy start」により、この問題はかなり明白になりました。
同様の問題があります。すでにENABLED = 1を設定していますが、デフォルトのupdate-rc.d構成では、K20(rc0 | 1 | 6.d)およびS20(rc2 | 3 | 4 | 5.d)にhaproxyを配置するようです。つまり、ネットワークの前に起動しようとするので、私の場合はboot.logでこれを取得します。
* haproxy haproxyの開始[ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [ALERT] 346/160552(927):プロキシhaproxyの開始:ソケットをバインドできません [アラート] 346/160552(927) :プロキシhaproxyの開始:ソケットをバインドできません [失敗]
スタートアップ番号を35に変更すると問題は解決するようですが、36の方が安全だと思います(ネットワークの古い番号は35だったので、その後で開始するのが最善です)。だから試してください:-
update-rc.d -f haproxy remove update-rc.d haproxy start 35 2 3 4 5。 20 0 1 6を停止します。
その後、再起動すると、ソートされます。パッケージメンテナーは本当にこのことを考えるべきでした。
ルートとして、またはsudoで起動しようとしましたか?あなたが私のようであれば、コマンドの前にSudoを追加するのを忘れることがあります。私はすべてのコマンドをSudoなしで試しましたが、説明どおりに失敗しました。ただし、インストールのデフォルトのhaproxy.cfg
ファイルを使用して、それらの前にSudoを配置すると、問題なく実行されます。正しい設定でも、私にとっては須藤なしでは行かないと指摘したいと思います。
Lucidのhaproxy init.dスクリプトで同じ問題が発生しました。 haproxyを開始できなかったので、調べてみると、/ etc/init.d/haproxyスクリプトのENABLED変数を変更する必要があることがわかりました。
ただし、この変数を変更してもまったく役に立ちませんでした。これが理由です。/etc/init.d/haproxyの数行下のENABLED変数は、スクリプトによって次の行でチェックされます。test "$ ENABLED"!= "0" || 0を終了します。このテストは、システムで常に失敗することに気付きました。したがって、残りのスクリプトは実行されません。
このテストラインが正常に機能しない理由が本当にわからないことを認めなければなりません。しかし、とにかくhaproxyを有効にしたいので、なぜわざわざチェックする必要があるのでしょうか?...
これが誰にも役立つことを願っています。
Debian vmを使用して、Azureで同じ問題に遭遇しました。非常にシンプルであることが判明しました。 haproxyのinitスクリプトは、実行時の依存関係を使用します。古いシステムではupdate-rc.dが道でしたが、新しいシステムではinsservが使用されます: https://wiki.debian.org/LSBInitScripts/DependencyBasedBoot
したがって、update-rc.dを使用して新しいシステムにhaproxyサービスを追加した場合は、次を実行する必要があります。
$ Sudo update-rc.d -f haproxy remove
$ sudo insserv haproxy
また、sciptをじっと見つめていましたが、init-script内でENABLED=1
が定義されていたにもかかわらず、なぜ動作しないのかわかりませんでした。
最終的に、少し下を見ると、テストが実行される直前に/etc/default/haproxy-file
がソースされていることがわかります。したがって、initスクリプト自体のset変数を上書きします。