首页 > 代码库 > 【haproxy初始化】haproxy_ctl.sh
【haproxy初始化】haproxy_ctl.sh
【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初始化】haproxy_ctl.sh
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。