Centos 编译安装 haproxy
时间:2015-12-16 12:45 来源:linux.it.net.cn 作者:IT
wget -c http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz
haproxy_install.sh
#!/bin/bash
#install haproxy
#20111207 by dongnan
#variables
dir=/usr/local
ha_dir=${dir}/haproxy
ha_cfg=${ha_dir}/haproxy.cfg
kernel=`uname -r | grep '2.6'`
pcre=$(rpm -qa | grep 'pcre' | wc -l)
echo "$dir, $ha_dir, $ha_cfg, $kernel, $pcre"
#check
if [ ! "$kernel" -o "$pcre" -lt "2" ];then
echo -e "the script need linux 2.6 kernel and pcre pcre-devel \nyou can usage 'yum install pcre pcre-devel' or 'rpm -ivh pcre-devel-6.6-2.el5_1.7.x86_64.rpm'"
exit 1
fi
#function
install_ha_cfg (){
#configure haproxy.cfg
#default configure file for test,but need your change the frontend server and backend server ip address,
#good luck!
echo '
global
log 127.0.0.1 local0
maxconn 4096 #最大连接数
chroot /usr/local/haproxy #安装目录
uid 99 #用户haproxy
gid 99 #组haproxy
daemon #守护进程运行
nbproc 1 #进程数量
pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid
defaults
log global
mode http #7层 http;4层tcp
option httplog #http 日志格式
option httpclose #主动关闭http通道
option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器
option dontlognull
maxconn 2000 #最大连接数
contimeout 5000 #连接超时(毫秒)
clitimeout 50000 #客户端超时(毫秒)
srvtimeout 50000 #服务器超时(毫秒)
frontend haproxy_test #定义前端服务器(haproxy)
bind 10.0.1.251:80 #监听地址
default_backend server_pool #指定后端服务器群
#errorfile 502 /usr/local/haproxy/html/maintain.html
#errorfile 503 /usr/local/haproxy/html/maintain.html
#errorfile 504 /usr/local/haproxy/html/maintain.html
backend server_pool #定义后端服务器群(web server/apache/nginx/iis..)
mode http
option forwardfor #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP
#balance roundrobin #负载均衡的方式,轮询方式
balance leastconn #负载均衡的方式,最小连接
cookie SERVERID #插入serverid到cookie中,serverid后面可以定义
option httpchk HEAD /check.html #用来做健康检查html文档
server server1 10.0.1.252:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3
server server2 10.0.1.253:80 cookie server2 check inter 2000 rise 3 fall 3 maxconn 120 weight 3
server server3 10.0.1.254:80 cookie server3 check maxconn 90 rise 2 fall 3 weight 3
#服务器定义:
#cookie server1表示serverid为server1;
#check inter 2000 是检测心跳频率(check 默认 );
#rise 3 表示 3次正确认为服务器可用;
#fall 3 表示 3次失败认为服务器不可用;
#weight 表示权重。
listen admin_stat #status
bind *:8080 #监听端口
mode http #http的7层模式
stats refresh 30s #统计页面自动刷新时间
stats uri /haproxy-stats #统计页面URL
stats realm Haproxy\ Statistics #统计页面密码框上提示文本
stats auth admin:admin #统计页面用户名和密码设置
stats hide-version #隐藏统计页面上HAProxy的版本信息
stats admin if TRUE #手工启用/禁用,后端服务器
' > "$ha_cfg" && sed -i '1 d' "$ha_cfg"
}
#install
if [ ! -e "$ha_dir" ];then
tar zxf haproxy*.tar.gz
cd haproxy*/
make TARGET=linux26 USE_STATIC_PCRE=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && mkdir /usr/local/haproxy/{html,logs}
cd ../
#
if [ ! -e "$ha_dir" ];then
echo "error! can't install haproxy please check ! Will now out of the script !"
exit 1
else
! grep 'haproxy' /etc/syslog.conf && echo 'local1.* /var/log/haproxy.log' >> /etc/syslog.conf
sed -ir 's/SYSLOGD_OPTIONS="-m 0"/SYSLOGD_OPTIONS="-r -m 0"/g' /etc/sysconfig/syslog && /etc/init.d/syslog restart
install_ha_cfg
rm -rf haproxy*/
fi
else
echo "haproxy is already exists!"
fi
haproxy.sh
# cat /usr/local/sbin/haproxy.sh
#!/bin/bash
#haproxy command
#ver:0.1bate
#20111129 by dongnan
#/usr/local/haproxy/sbin/haproxy
#HA-Proxy version 1.4.18 2011/09/16
#Copyright 2000-2011 Willy Tarreau <w@1wt.eu>
#
#Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ]
# [ -p <pidfile> ] [ -m <max megs> ]
# -v displays version ; -vv shows known build options.
# -d enters debug mode ; -db only disables background mode.
# -V enters verbose mode (disables quiet mode)
# -D goes daemon
# -q quiet mode : don't display messages
# -c check mode : only check config files and exit
# -n sets the maximum total # of connections (2000)
# -m limits the usable amount of memory (in MB)
# -N sets the default, per-proxy maximum # of connections (2000)
# -p writes pids of all children to this file
# -de disables epoll() usage even when available
# -ds disables speculative epoll() usage even when available
# -dp disables poll() usage even when available
# -sf/-st [pid ]* finishes/terminates old pids. Must be last arguments.
#variables
haproxy_dir=/usr/local/haproxy/
haproxy_conf=${haproxy_dir}haproxy.cfg
haproxy_pid=${haproxy_dir}logs/haproxy.pid
haproxy_cmd=${haproxy_dir}sbin/haproxy
#test variables
#file $haproxy_dir; file $haproxy_conf; file $haproxy_cmd; file $haproxy_pid
if [ "$#" -eq "0" ];then
echo "usage: $0 {start|stop|restart}"
exit 1
fi
if [ "$1" = "start" ];then
#echo $1
$haproxy_cmd -f $haproxy_conf
elif [ "$1" = "stop" ];then
#echo $1
kill `cat $haproxy_pid`
elif [ "$1" = "restart" ];then
#echo $1
$haproxy_cmd -f $haproxy_conf -st `cat $haproxy_pid`
else
echo "usage: $0 arguments only start and stop or restart !"
fi
(责任编辑:IT)
wget -c http://haproxy.1wt.eu/download/1.4/src/haproxy-1.4.23.tar.gz haproxy_install.sh #!/bin/bash #install haproxy #20111207 by dongnan #variables dir=/usr/local ha_dir=${dir}/haproxy ha_cfg=${ha_dir}/haproxy.cfg kernel=`uname -r | grep '2.6'` pcre=$(rpm -qa | grep 'pcre' | wc -l) echo "$dir, $ha_dir, $ha_cfg, $kernel, $pcre" #check if [ ! "$kernel" -o "$pcre" -lt "2" ];then echo -e "the script need linux 2.6 kernel and pcre pcre-devel \nyou can usage 'yum install pcre pcre-devel' or 'rpm -ivh pcre-devel-6.6-2.el5_1.7.x86_64.rpm'" exit 1 fi #function install_ha_cfg (){ #configure haproxy.cfg #default configure file for test,but need your change the frontend server and backend server ip address, #good luck! echo ' global log 127.0.0.1 local0 maxconn 4096 #最大连接数 chroot /usr/local/haproxy #安装目录 uid 99 #用户haproxy gid 99 #组haproxy daemon #守护进程运行 nbproc 1 #进程数量 pidfile /usr/local/haproxy/logs/haproxy.pid #haproxy pid defaults log global mode http #7层 http;4层tcp option httplog #http 日志格式 option httpclose #主动关闭http通道 option redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器 option dontlognull maxconn 2000 #最大连接数 contimeout 5000 #连接超时(毫秒) clitimeout 50000 #客户端超时(毫秒) srvtimeout 50000 #服务器超时(毫秒) frontend haproxy_test #定义前端服务器(haproxy) bind 10.0.1.251:80 #监听地址 default_backend server_pool #指定后端服务器群 #errorfile 502 /usr/local/haproxy/html/maintain.html #errorfile 503 /usr/local/haproxy/html/maintain.html #errorfile 504 /usr/local/haproxy/html/maintain.html backend server_pool #定义后端服务器群(web server/apache/nginx/iis..) mode http option forwardfor #后端服务器(apache/nginx/iis/*),从Http Header中获得客户端IP #balance roundrobin #负载均衡的方式,轮询方式 balance leastconn #负载均衡的方式,最小连接 cookie SERVERID #插入serverid到cookie中,serverid后面可以定义 option httpchk HEAD /check.html #用来做健康检查html文档 server server1 10.0.1.252:80 cookie server1 check inter 2000 rise 3 fall 3 weight 3 server server2 10.0.1.253:80 cookie server2 check inter 2000 rise 3 fall 3 maxconn 120 weight 3 server server3 10.0.1.254:80 cookie server3 check maxconn 90 rise 2 fall 3 weight 3 #服务器定义: #cookie server1表示serverid为server1; #check inter 2000 是检测心跳频率(check 默认 ); #rise 3 表示 3次正确认为服务器可用; #fall 3 表示 3次失败认为服务器不可用; #weight 表示权重。 listen admin_stat #status bind *:8080 #监听端口 mode http #http的7层模式 stats refresh 30s #统计页面自动刷新时间 stats uri /haproxy-stats #统计页面URL stats realm Haproxy\ Statistics #统计页面密码框上提示文本 stats auth admin:admin #统计页面用户名和密码设置 stats hide-version #隐藏统计页面上HAProxy的版本信息 stats admin if TRUE #手工启用/禁用,后端服务器 ' > "$ha_cfg" && sed -i '1 d' "$ha_cfg" } #install if [ ! -e "$ha_dir" ];then tar zxf haproxy*.tar.gz cd haproxy*/ make TARGET=linux26 USE_STATIC_PCRE=1 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy && mkdir /usr/local/haproxy/{html,logs} cd ../ # if [ ! -e "$ha_dir" ];then echo "error! can't install haproxy please check ! Will now out of the script !" exit 1 else ! grep 'haproxy' /etc/syslog.conf && echo 'local1.* /var/log/haproxy.log' >> /etc/syslog.conf sed -ir 's/SYSLOGD_OPTIONS="-m 0"/SYSLOGD_OPTIONS="-r -m 0"/g' /etc/sysconfig/syslog && /etc/init.d/syslog restart install_ha_cfg rm -rf haproxy*/ fi else echo "haproxy is already exists!" fi haproxy.sh # cat /usr/local/sbin/haproxy.sh #!/bin/bash #haproxy command #ver:0.1bate #20111129 by dongnan #/usr/local/haproxy/sbin/haproxy #HA-Proxy version 1.4.18 2011/09/16 #Copyright 2000-2011 Willy Tarreau <w@1wt.eu> # #Usage : haproxy [-f <cfgfile>]* [ -vdVD ] [ -n <maxconn> ] [ -N <maxpconn> ] # [ -p <pidfile> ] [ -m <max megs> ] # -v displays version ; -vv shows known build options. # -d enters debug mode ; -db only disables background mode. # -V enters verbose mode (disables quiet mode) # -D goes daemon # -q quiet mode : don't display messages # -c check mode : only check config files and exit # -n sets the maximum total # of connections (2000) # -m limits the usable amount of memory (in MB) # -N sets the default, per-proxy maximum # of connections (2000) # -p writes pids of all children to this file # -de disables epoll() usage even when available # -ds disables speculative epoll() usage even when available # -dp disables poll() usage even when available # -sf/-st [pid ]* finishes/terminates old pids. Must be last arguments. #variables haproxy_dir=/usr/local/haproxy/ haproxy_conf=${haproxy_dir}haproxy.cfg haproxy_pid=${haproxy_dir}logs/haproxy.pid haproxy_cmd=${haproxy_dir}sbin/haproxy #test variables #file $haproxy_dir; file $haproxy_conf; file $haproxy_cmd; file $haproxy_pid if [ "$#" -eq "0" ];then echo "usage: $0 {start|stop|restart}" exit 1 fi if [ "$1" = "start" ];then #echo $1 $haproxy_cmd -f $haproxy_conf elif [ "$1" = "stop" ];then #echo $1 kill `cat $haproxy_pid` elif [ "$1" = "restart" ];then #echo $1 $haproxy_cmd -f $haproxy_conf -st `cat $haproxy_pid` else echo "usage: $0 arguments only start and stop or restart !" fi (责任编辑:IT) |