天天看點

Haproxy的安裝以及啟動腳本的調試

1 )源代碼安裝haproxy

[root@mysql-slave src]# tar xf haproxy-1.6.4.tar.gz 

[root@mysql-slave src]# cd haproxy-1.6.4

[root@mysql-slave haproxy-1.6.4]# make TARGET=linux26 PREFIX=/usr/local/haproxy 

[root@mysql-slave haproxy-1.6.4]# echo $?

[root@mysql-slave haproxy-1.6.4]# make install PREFIX=/usr/local/haproxy

[root@mysql-slave haproxy-1.6.4]# mkdir  /usr/local/haproxy/conf

[root@mysql-slave haproxy-1.6.4]# ls

CHANGELOG  CONTRIBUTING  ebtree    haproxy                  include  MAINTAINERS  README   src      tests    VERSION

contrib    doc           examples  haproxy-systemd-wrapper  LICENSE  Makefile     ROADMAP  SUBVERS  VERDATE

[root@mysql-slave haproxy-1.6.4]# cp examples/option-http_proxy.cfg /usr/local/haproxy/conf/haproxy.cfg

2)haproxy的啟動腳本配置

由于我的安裝包是下載下傳在/usr/local/src下的,我們檢視下解壓後的haproxy的檔案

[root@mysql-slave examples]# pwd

/usr/local/src/haproxy-1.6.4/examples

[root@mysql-slave examples]# ls

acl-content-sw.cfg  check.conf             debug2html  haproxy.init  init.haproxy           ssl.cfg

auth.cfg            content-sw-sample.cfg  debugfind   haproxy.spec  option-http_proxy.cfg  stats_haproxy.sh

check               debug2ansi             errorfiles  haproxy.vim   seamless_reload.txt    transparent_proxy.cfg

如上,我們可以看到一個名為haproxy.init檔案

簡單檢視下haproxy.init的内容

[root@mysql-slave examples]# cat haproxy.init 

<code>#!/bin/sh</code>

<code>#</code>

<code># chkconfig: - 85 15</code>

<code># description: HA-Proxy is a TCP/HTTP reverse proxy which is particularly suited \</code>

<code>#              for high availability environments.</code>

<code># processname: haproxy</code>

<code># config: /etc/haproxy/haproxy.cfg</code>

<code># pidfile: /var/run/haproxy.pid</code>

<code># Script Author: Simon Matter &lt;[email protected]&gt;</code>

<code># Version: 2004060600</code>

<code># Source function library.</code>

<code>if</code> <code>[ -f </code><code>/etc/init</code><code>.d</code><code>/functions</code> <code>]; </code><code>then</code>

<code>  </code><code>. </code><code>/etc/init</code><code>.d</code><code>/functions</code>

<code>elif</code> <code>[ -f </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code> <code>] ; </code><code>then</code>

<code>  </code><code>. </code><code>/etc/rc</code><code>.d</code><code>/init</code><code>.d</code><code>/functions</code>

<code>else</code>

<code>  </code><code>exit</code> <code>0</code>

<code>fi</code>

<code># Source networking configuration.</code>

<code>. </code><code>/etc/sysconfig/network</code>

<code># Check that networking is up.</code>

<code>[ ${NETWORKING} = </code><code>"no"</code> <code>] &amp;&amp; </code><code>exit</code> <code>0</code>

<code># This is our service name</code>

<code>BASENAME=`</code><code>basename</code> <code>$0`</code>

<code>if</code> <code>[ -L $0 ]; </code><code>then</code>

<code>  </code><code>BASENAME=`</code><code>find</code> <code>$0 -name $BASENAME -</code><code>printf</code> <code>%l`</code>

<code>  </code><code>BASENAME=`</code><code>basename</code> <code>$BASENAME`</code>

<code>BIN=</code><code>/usr/sbin/</code><code>$BASENAME</code>

<code>CFG=</code><code>/etc/</code><code>$BASENAME/$BASENAME.cfg</code>

<code>[ -f $CFG ] || </code><code>exit</code> <code>1</code>

<code>PIDFILE=</code><code>/var/run/</code><code>$BASENAME.pid</code>

<code>LOCKFILE=</code><code>/var/lock/subsys/</code><code>$BASENAME</code>

<code>RETVAL=0</code>

<code>start() {</code>

<code>  </code><code>quiet_check</code>

<code>  </code><code>if</code> <code>[ $? -</code><code>ne</code> <code>0 ]; </code><code>then</code>

<code>    </code><code>echo</code> <code>"Errors found in configuration file, check it with '$BASENAME check'."</code>

<code>    </code><code>return</code> <code>1</code>

<code>  </code><code>fi</code>

<code>  </code><code>echo</code> <code>-n </code><code>"Starting $BASENAME: "</code>

<code>  </code><code>daemon $BIN -D -f $CFG -p $PIDFILE</code>

<code>  </code><code>RETVAL=$?</code>

<code>  </code><code>echo</code>

<code>  </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>touch</code> <code>$LOCKFILE</code>

<code>  </code><code>return</code> <code>$RETVAL</code>

<code>}</code>

<code>stop() {</code>

<code>  </code><code>echo</code> <code>-n </code><code>"Shutting down $BASENAME: "</code>

<code>  </code><code>killproc $BASENAME -USR1</code>

<code>  </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f $LOCKFILE</code>

<code>  </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f $PIDFILE</code>

<code>restart() {</code>

<code>  </code><code>stop</code>

<code>  </code><code>start</code>

<code>reload() {</code>

<code>  </code><code>if</code> <code>! [ -s $PIDFILE ]; </code><code>then</code>

<code>    </code><code>return</code> <code>0</code>

<code>  </code><code>$BIN -D -f $CFG -p $PIDFILE -sf $(</code><code>cat</code> <code>$PIDFILE)</code>

<code>check() {</code>

<code>  </code><code>$BIN -c -q -V -f $CFG</code>

<code>quiet_check() {</code>

<code>  </code><code>$BIN -c -q -f $CFG</code>

<code>rhstatus() {</code>

<code>  </code><code>status $BASENAME</code>

<code>condrestart() {</code>

<code>  </code><code>[ -e $LOCKFILE ] &amp;&amp; restart || :</code>

<code># See how we were called.</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>  </code><code>start)</code>

<code>    </code><code>start</code>

<code>    </code><code>;;</code>

<code>  </code><code>stop)</code>

<code>    </code><code>stop</code>

<code>  </code><code>restart)</code>

<code>    </code><code>restart</code>

<code>  </code><code>reload)</code>

<code>    </code><code>reload</code>

<code>  </code><code>condrestart)</code>

<code>    </code><code>condrestart</code>

<code>  </code><code>status)</code>

<code>    </code><code>rhstatus</code>

<code>  </code><code>check)</code>

<code>    </code><code>check</code>

<code>  </code><code>*)</code>

<code>    </code><code>echo</code> <code>$</code><code>"Usage: $BASENAME {start|stop|restart|reload|condrestart|status|check}"</code>

<code>    </code><code>exit</code> <code>1</code>

<code>esac</code>

<code> </code> 

<code>exit</code> <code>$?</code>

我們發現,稍微調整下,就是一個完整的haproxy的啟動腳本,是以偷下懶,直接修改兩個位置:

BIN=/usr/local/haproxy/sbin/haproxy

# haproxy指令所在的位置

CFG=/usr/local/haproxy/conf/haproxy.cfg

# haproxy.cfg為haproxy的配置檔案

修改完成後,将修改後的haproxy.init拷貝到/etc/init.d/目錄下

<code>[root@mysql-slave examples]</code><code># cp /usr/local/src/haproxy-1.6.4/examples/haproxy.init /etc/init.d/</code>

<code>[root@mysql-slave examples]</code><code># mv /etc/init.d/haproxy.init /etc/init.d/haproxy</code>

<code>[root@mysql-slave examples]</code><code># chmod +x /etc/init.d/haproxy</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy </code>

<code>Usage: haproxy {start|stop|restart|reload|condrestart|status|check}</code>

<code>簡單的測試下:</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy status</code>

<code>haproxy (pid  54309) 正在運作...</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy stop</code>

<code>Shutting down haproxy:                                     [确定]</code>

<code>haproxy 已停</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy start</code>

<code>Starting haproxy:                                          [确定]</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy reload</code>

<code>[root@mysql-slave examples]</code><code># echo $?</code>

<code>0</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy condrestart</code>

<code>[root@mysql-slave examples]</code><code># /etc/init.d/haproxy check</code>

<code>Configuration </code><code>file</code> <code>is valid</code>

<code>到此,haproxy的安裝與腳本的配置就已經完成</code>

<a href="http://down.51cto.com/data/2368319" target="_blank">附件:http://down.51cto.com/data/2368319</a>

本文轉自 冰凍vs西瓜 51CTO部落格,原文連結:http://blog.51cto.com/molewan/1866746,如需轉載請自行聯系原作者

繼續閱讀