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 <[email protected]></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>] && </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 ] && </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 ] && </code><code>rm</code> <code>-f $LOCKFILE</code>
<code> </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] && </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 ] && 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,如需轉載請自行聯系原作者