Haproxy 多虚拟主机安装和配置

一,Haproxy 安装和

# cd /usr/local/src
# wget http://mirrors.elenet.me/eleme/yanming.zhang/haproxy-1.5.12.tar.gz
# tar xvzf haproxy-1.5.12.tar.gz
# cd haproxy-1.5.12
# yum -y install gcc
# make TARGET=linux2628 PREFIX=/opt/haproxy
# make install PREFIX=/opt/haproxy
  
# cd /opt
# mv haproxy haproxy-1.5.12
# ln -s haproxy-1.5.12 haproxy
# mkdir haproxy/etc

# 七层多虚拟主机模式配置
# vi /opt/haproxy/etc/haproxy.cfg

global
    log 127.0.0.1 local0
    maxconn 32768
    chroot /usr/local/haproxy
    uid haproxy
    gid haproxy
    daemon
    nbproc 8
    pidfile /var/run/haproxy.pid
    spread-checks 4
                                                                  
defaults
    log global
    mode http
    retries 3
    option httplog
    option httpclose
    option dontlognull
    option forwardfor
    option redispatch
    option abortonclose
    log 127.0.0.1 local3
    balance roundrobin
    maxconn 20480
    contimeout 5000
    clitimeout 50000
    srvtimeout 50000
    timeout check 2000
                                                                  
    stats enable
    stats admin if TRUE
    stats refresh 30s
    stats uri /server_health_status
    stats realm Haproxy\ statistics
    stats hide-version
    stats auth admin:admin2590159HAHA
                                                                  
frontend MY_PROXY_SERVER
    bind 0.0.0.0:80
    appsession JSESSIONID len 52 timeout 3h
    cookie SRV insert indirect nocache
    mode http
    log global
                                                                  
    capture request header Host len 40
    capture request header Content-Length len 10
    capture request header Referer len 200
    capture response header Server len 40
    capture response header Content-Length len 10
    capture response header Cache-Control len 8
                                                                  
    acl WEB_SERVER_POLICY1 hdr_dom(host) -i mytest.baidi.com
    use_backend BEHIND_APACHE_SERVER1 if WEB_SERVER_POLICY1
                                                                  
    acl SITE_DEAD nbsrv(BEHIND_APACHE_SERVER1) lt 1
   
    monitor fail if SITE_DEAD
                                                                  
    default_backend BEHIND_APACHE_SERVER1
    
    
    
    
    acl WEB_SERVER_POLICY2 hdr_dom(host) -i mytest.baidi2.com
    use_backend BEHIND_APACHE_SERVER2 if WEB_SERVER_POLICY2
                                                                  
    
    acl SITE_DEAD nbsrv(BEHIND_APACHE_SERVER2) lt 1
    monitor fail if SITE_DEAD
                                                                  

    
    
                                                                  
backend BEHIND_APACHE_SERVER1
    mode http
    balance roundrobin
    cookie SERVERID
    option httpchk HEAD /index.html HTTP/1.0
    server WEBSRV1 192.168.10.101:80 maxconn 1500 cookie SRV1 check inter 2000 rise 2 fall 3 weight 1
    server WEBSRV2 192.168.10.102:80 maxconn 1500 cookie SRV2 check inter 2000 rise 2 fall 3 weight 1
                                                                  
backend BEHIND_APACHE_SERVER2
    mode http
    balance roundrobin
    cookie SERVERID
    option httpchk HEAD /index.html HTTP/1.0
    server WEBSRV1 192.168.11.201:80 maxconn 1500 cookie SRV1 check inter 2000 rise 2 fall 3 weight 1
    server WEBSRV2 192.168.11.202:80 maxconn 1500 cookie SRV2 check inter 2000 rise 2 fall 3 weight 1
    server WEBSRV3 192.168.11.203:80 maxconn 1500 cookie SRV3 check inter 2000 rise 2 fall 3 weight 1
    
    
 HAProxy日志记录配置
 # vim /etc/syslog-ng/syslog-ng.conf
 source src_haproxy {
    udp(ip("0.0.0.0") port(514));
};
                                                         
filter f_local03 {
    facility(local0,local3);
};
                                                         
filter custom {
    program("haproxy");
};
                                                         
destination dst_haproxy {
    file("/data/logs/haproxy/haproxy.log");
};
                                                         
log {
    source(src_haproxy);
    filter(f_local03);
    destination(dst_haproxy);
};
                                                         
log {
    source(src_haproxy);
    filter(custom);
    destination(dst_haproxy);
};

vim /etc/syslog.conf
local3.*        /data/logs/haproxy/haproxy.log
local0.*        /data/logs/haproxy/haproxy.log

vim /etc/sysconfig/syslog

SYSLOGD_OPTIONS="-r -m 0"

#HAProxy命令启动及启动脚本
#/usr/local/haproxy/sbin/haproxy -f /usr/local/haproxy/etc/haproxy.conf

# vim /etc/init.d/haproxy

#!/bin/sh
#
# haproxy - this script start and stop the haproxy daemon
#
# chkconfig 35 on
# description: HAProxy is a TCP/HTTP reverse proxy.
# processname: haproxy
# config: /usr/local/haproxy/etc/haproxy.conf
# pidfile: /var/run/haproxy.pid
#
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
                                               
BINFILE="/usr/local/haproxy/sbin/haproxy"
CFGFILE="/usr/local/haproxy/etc/haproxy.conf"
PIDFILE="/var/run/haproxy.pid"
LOCKFILE="/var/lock/haproxy.lock"
                                               
RETVAL=0
                                               
start() {
    [[ -x $BINFILE ]] || exit 5
    [[ -f $CFGFILE ]] || exit 6
                                                  
    $BINFILE -c -q -f $CFGFILE
    [[ $? -ne 0 ]] && echo "The HAProxy configure has error." && return 1
                                                  
    echo -n "Starting HAProxy......"
    $BINFILE -f $CFGFILE -p $PIDFILE
                                                  
    RETVAL=$?
    echo
    [[ $RETVAL -eq 0 ]] && touch $LOCKFILE
                                                  
    return $RETVAL
}
                                               
stop() {
    echo -n "Shutting down HAProxy......"
                                                  
    while true
    do
        /sbin/killproc -TERM $BINFILE
        [[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && break
    done
                                                  
    RETVAL=$?
    echo
    [[ $RETVAL -eq 0 ]] && rm -f $LOCKFILE $PIDFILE
                                                  
    return $RETVAL
}
                                               
restart() {
    stop
    sleep 1
    start
}
                                               
reload() {
    [[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && echo "The HAProxy is not running." && return 1
    echo -n $"Reloading HAProxy......"
                                                  
    if [[ -f $PIDFILE ]]; then
        $BINFILE -f $CFGFILE -st `cat $PIDFILE`
    else
        $BINFILE -f $CFGFILE -st `ps aux | grep sbin/haproxy | grep -v grep | awk ‘{print $2}‘`
    fi
                                                  
    RETVAL=$?
    echo
                                                  
    return $RETVAL
}
                                               
case "$1" in
start)
    start
    ;;
                                                  
stop)
    stop
    ;;
                                                  
restart)
    restart
    ;;
                                                  
reload)
    reload
    ;;
                                                  
condrestart)
    [[ -e $LOCKFILE ]] && restart || :
    ;;
                                                  
check)
    $BINFILE -c -q -V -f $CFGFILE
    ;;
                                                  
*)
    echo "Usage: service haproxy {start|stop|restart|reload|condrestart|check}"
    RETVAL=1
esac
                                               
exit $RETVAL

 chmod +x /etc/init.d/haproxy
 service haproxy start
 
 
 二、日志切割脚本
 #vim /usr/local/haproxy/sbin/cut_haproxy_log.sh
 #!/bin/bash
# This script run at 00:00
                                         
# The haproxy log path
LOGPATH="/data/logs/haproxy"
                                         
[[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && exit 1
mv ${LOGPATH}/haproxy.log ${LOGPATH}/haproxy_$(date -d "yesterday" +"%Y-%m-%d").log
/sbin/service syslog restart

# chmod +x /usr/local/haproxy/sbin/cut_haproxy_log.sh

# crontab -e
00 00 * * * /usr/local/haproxy/sbin/cut_haproxy_log.sh >/dev/null 2>&1

三、日志清理脚本
# vim /usr/local/haproxy/sbin/clean_haproxy_log.sh
#!/bin/bash
# This script run at 00:30
                                    
# The haproxy log path
LOGPATH="/data/logs/haproxy"
                                    
[[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && exit 1
rm -f ${LOGPATH}/haproxy_$(date -d "10 days ago" +"%Y-%m-%d").log

# chmod +x /usr/local/haproxy/sbin/clean_haproxy_log.sh

# crontab -e
30 00 * * * /usr/local/haproxy/sbin/clean_haproxy_log.sh >/dev/null 2>&1

四,HAProxy自身健康检查
 #vim /usr/local/haproxy/sbin/check_haproxy.sh
 #!/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/usr/local/sbin
                            
[[ -e "/usr/local/haproxy/sbin" ]] || exit 1
[[ -z `ps aux | grep sbin/haproxy | grep -v grep` ]] && /sbin/service haproxy start && exit 1
                            
ETH1_ADDR=`/sbin/ifconfig eth1 | awk -F ‘:‘ ‘/inet addr/{print $2}‘ | sed ‘s/[a-zA-Z ]//g‘`
[[ -z `curl -I -s "http://${ETH1_ADDR}" | grep "200 OK"` ]] && /sbin/service haproxy restart

# chmod +x /usr/local/haproxy/sbin/check_haproxy.sh

# crontab -e
*/5 * * * * /usr/local/haproxy/sbin/check_haproxy.sh >/dev/null 2>&1
时间: 2024-11-04 18:34:33

Haproxy 多虚拟主机安装和配置的相关文章

虚拟主机(多站点配置)的实现--centos上的实现

Apache中配置多主机多站点,可以通过两种方式实现 将同一个域名的不同端口映射到不同的站点(虚拟主机) 将同一个端口映射成不同的域名,不同的域名映射到不同的站点 两种方法可以同时存在,局域网通过  ip:端口的配置方法跟统一域名不同端口的配置方法一样 我们只需要修改相应的配置文件即可. 一.准备工作 1.修改系统 hosts文件 centos中hosts的文件路径: /etc/hosts 在这个文件中我们加入如下两行代码: 在     127.0.0.1后面添加 www.liuyazhuang

如何给虚拟主机安装phpMyAdmin

很多虚拟主机没有phpMyAdmin,例如阿里云的云虚拟主机默认的数据库管理工具是DMS,这样好多朋友管理数据库时会觉得不方便.phpMyAdmin是比较大众和常用的Mysql数据库管理软件,我们可以给虚拟主机安装phpMyAdmin,方便管理和备份Mysql数据库. 步骤如下: 1.下载phpMyAdmin https://www.phpmyadmin.net/downloads/  到官网下载合适版本的phpMyAdmin,要注意并不是版本越高就越高,版本高意味着对应的PHP版本也要高,要根

apache虚拟主机三种配置方式

直奔主题!!! 使用虚拟主机必须要注释掉httpd的主机模块,即修改httd.conf的主配置文件,找到<DirectoryROOT " XXXXXX">,将这段内容注释掉就可以了. apche的虚拟主机配置一共有三种,即基于IP.基于port.以及基于域名的.为了后面试验,需要配置两个IP地址(我主机现在的IP地址是10.10.50.100),命令如下: #ip addr add 10.10.50.101/16 dev eth0 #ip addr add 10.10.50

配置Tomcat监听80端口、配置Tomcat的虚拟主机、日志配置

配置Tomcat监听80端口 编辑配置文件vim /usr/local/tomcat/bin/startup.sh 搜索关键字:Connector port ,将8080修改为80 更改完后保存退出,并且重启服务/usr/local/tomcat/bin/shutdown.sh/usr/local/tomcat/bin/startup.sh 这是可以查看tomcat监听的端口是否为80netstat -lntp |grep java 配置Tomcat的虚拟主机 编辑配置文件vim /usr/lo

Apache虚拟主机及别名配置

Apache虚拟主机配置 增加监听端口(修改conf/httpd.conf文件) Listen 127.0.0.1:8092 修改主站点权限(修改conf/httpd.conf文件) <Directory /> AllowOverride none # Require all denied </Directory> 允许虚拟主机配置(修改conf/httpd.conf文件) # Virtual hosts Include conf/extra/httpd-vhosts.conf 增

apache 虚拟主机和 rewrite 配置及 rewrite规则解释

如何使用rewrite步骤: 1.     配置apache,启用rewrite机制,修改httpd.conf 在httpd.conf中启用rewrite LoadModule rewrite_module modules/mod_rewrite.so      #如果没有这一行则在配置文件中添加这一行 2.     配置虚拟主机 修改 hosts文件添加你的 ip 和域名对应,如下事例 127.0.0.1       www.yaf.com 在 http.conf 文件中启用虚拟主机 # Vi

linux上nginx上配置虚拟主机的相关配置

1.配置主配置: nginx/conf/nginx.conf 2.虚拟主机配置:nginx/conf/extra/learn.weixin.com.conf 配置完后,重启服务器!

Linux centos6.8与7.2在虚拟机上安装后配置成实验环境命令及变化对比

要点:1.在虚拟机上安装Linux系统的步骤,主要要注意在选择Linux系统32位就选择该系统,如果是64          位系统一定要选择64位的系统,否则网卡识别不了,只能识别环回接口: 2.在网卡配置完重启命令也是有区别的 在安装Linux系统centos6.8的时候,选择最小安装包,进入系统我们要配置网卡的地址和DNS地址要求能够联网.那么首先查看下地址 # ip addr  查看系统的当前连接的网卡情况 # vi /etc/sysconfig/network-scripts/ifcf

虚拟主机多站点配置

1.在apache配置文件(httpd.conf)中开启多站点配置,那么多站点配置文件httpd-vhosts.conf所在位置一目了然. 注意:一旦进行多站点配置(httpd-vhosts.conf),那么原来的配置文件(httpd.conf)就失效了. 2.多站点配置 <VirtualHost>指令: 包含仅作用于指定主机或IP地址的指令,其中包含IP地址.端口号等信息,本机Apache默认端口为8080 ServerName指令:用来标识虚拟主机的名称和端口号 ServerAlias指令