标签:haproxy
【haproxy初始化】haproxy_ctl.sh
#!/bin/bash
#
# modify dir path here
d_haproxy_log=‘/data/log/haproxy‘
[ -d ${d_haproxy_log} ] || mkdir -p ${d_haproxy_log}
# modify dir path here
d_haproxy_conf=‘/data/ops/conf/haproxy‘
[ -d ${d_haproxy_conf} ] || mkdir -p ${d_haproxy_conf}
# modify file path here
haproxy_bin=‘/usr/sbin/haproxy‘
init_log() {
d_logrotate=‘/etc/logrotate.d‘
d_rsyslog=‘/etc/rsyslog.d‘
[ -d ${d_logrotate} ] || mkdir -p ${d_logrotate}
[ -d ${d_rsyslog} ] || mkdir -p ${d_rsyslog}
f_haproxy_rsyslog="${d_rsyslog}/haproxy.conf"
f_haproxy_logrotate="${d_logrotate}/haproxy"
# add rsyslog conf
cat << _CONF >> /etc/rsyslog.conf
\$IncludeConfig ${d_rsyslog}/*.conf
_CONF
cat << _CONF > ${f_haproxy_rsyslog}
# Enable UDP port 514 to listen to incoming log messages from haproxy
\$ModLoad imudp
\$UDPServerRun 514
local0.=info -${d_haproxy_log}/haproxy.log
local0.notice -${d_haproxy_log}/haproxy.admin
# don‘t log anywhere else
local0.* ~
_CONF
service rsyslog restart
# add logrotate conf
cat << _CONF > ${f_haproxy_logrotate}
${d_haproxy_log}/haproxy.log
{
compress
copytruncate
daily
dateext
missingok
notifempty
rotate 2
}
_CONF
}
create_cfg() {
f_cfg_name="$1"
[ -z ${f_cfg_name} ] && f_cfg_name="`hostname`"
f_haproxy="${d_haproxy_conf}/${f_cfg_name}.cfg"
# add haproxy example conf
cat << _CONF >${f_haproxy}
#########################################################################
# HAProxy 配置文件(参考未知来源资料)
#########################################################################
global
# 使用系统的syslog记录日志(通过udp,默认端口号为514)
log 127.0.0.1 local0 # info [err warning info debug]
chroot ${d_haproxy_log}
#限制单个进程的最大连接数
maxconn 65535
# 让进程在后台运行,即作为守护进程运行,正式运行的时候开启,此处先禁止,等同于在命令行添加参数 -D
daemon
# 指定作为守护进程运行的时候,要创建多少个进程,默认只创建一个,需要daemon开启模式
nbproc 1
# 设置debug模式运行,与daemon模式只能互斥,等同于在命令行添加参数 -d
# debug
pidfile ${d_haproxy_log}/${f_cfg_name}.pid
defaults
# 在连接失败或断开的情况下,允许当前会话被重新分发
option redispatch
# 设置在一个服务器上链接失败后的重连次数
retries 100
# 设置服务器分配算法
balance roundrobin
# 不记录空连接
option dontlognull
# 设置等待连接到服务器成功的最大时间
timeout connect 30000ms
# 设置客户端的最大超时时间
timeout client 1800000ms
# 设置服务器端的最大超时时间
timeout server 1800000ms
# Enable the sending of TCP keepalive packets on both sides, clients and servers
# NOTE: 在服务器CPU强劲的情况下,最好不要开启保活,这样可减少资源消耗
option tcpka
option srvtcpka
option clitcpka
##############################统计页面配置##################################
listen admin_stat
# 监听端口
bind 127.0.0.1:12202
# http的7层模式
mode http
option httplog
log global
# 统计页面自动刷新时间
stats refresh 30s
# 统计页面URL
stats uri /status
# 统计页面密码框上提示文本
stats realm Haproxy\ Statistics
# 统计页面用户名和密码设置
stats auth admin:password
# 隐藏统计页面上HAProxy的版本信息
stats hide-version
###########################TCP连接的监听配置################################
# 后台服务器
# weight -- 调节服务器的负重
# check -- 允许对该服务器进行健康检查
# inter -- 设置连续的两次健康检查之间的时间,单位为毫秒(ms),默认值 2000(ms)
# rise -- 指定多少次连续成功的健康检查后,即可认定该服务器处于可操作状态,默认值 2
# fall -- 指定多少次不成功的健康检查后,认为服务器为当掉状态,默认值 3
# maxconn -- 指定可被发送到该服务器的最大并发连接数
## [80]
listen p80
bind 1.2.10.123:80
mode tcp
maxconn 10000
# 日志记录选项
option tcplog
log global
server ip20_234-p8080 3.4.20.234:8080 check inter 2000 rise 2 fall 3
#########################HTTP连接的监听配置################################
#listen http-in
#bind *:2212
#mode http
#option httplog
#log global
# 设置健康检查模式
#option httpchk OPTIONS * HTTP/1.1\r\nHost:\ www
#option smtpchk
# 后台服务器
#server localhost 0.0.0.0:2234 weight 3 check inter 2000 rise 2 fall 3
#server 192.168.1.100 192.168.1.100:2234 weight 3 check inter 2000 rise 2 fall 3
#server 192.168.1.101 192.168.1.101:2234 weight 3 check inter 2000 rise 2 fall 3
_CONF
}
haproxy_status() {
echo "[*] checking.."
echo "UID PID PPID C STIME TTY TIME CMD"
ps -ef |grep haproxy |grep -v grep |grep -v "$0"
echo " "
}
usage() {
cat <<_USAGE
Usage:
$0 initlog
$0 initcfg [config_file_name(optional)]
$0 start|stop|status
example:
$0 initlog
$0 initcfg
$0 initcfg ip1_2
$0 start
$0 status
$0 stop
_USAGE
}
case $1 in
initlog)
echo "[-] initialize rsyslog and logrotate.."
init_log
echo "[*] done."
;;
initcfg)
echo "[-] initialize cfg file.."
create_cfg $2
echo "[*] done."
;;
start)
echo "[-] starting.."
for i in `ls ${d_haproxy_conf}/*.cfg`
do
echo "[*] load config file: $i"
${haproxy_bin} -f $i
done
echo "[*] done."
;;
stop)
haproxy_status
echo "[-] stopping.."
killall haproxy
haproxy_status
echo "[*] done."
;;
status)
haproxy_status
;;
*)
usage
;;
esac标签:haproxy
原文地址:http://nosmoking.blog.51cto.com/3263888/1594657