标签:roc you 虚拟主机 targe port 手动 日志记录 响应 模式
本次使用haproxy仅测试web端的高可用以及负载均衡,存在的问题是haproxy是单点,所以还需要借助keepalived对haproxy高可用,下次说明。
服务器:
*.*.*.*:haproxy
两台 http
需要掌握的是:
1.高可用和负载均衡;
2.系统日志rsyslog;
3.动静分离
一:haproxy简介:
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代 理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy的优点:
1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;
安装:
#wget http://fossies.org/linux/misc/haproxy-1.6.9.tar.gz (这个需要先登陆到网页查看haproxy版本,只有一个最新的版本)
#解压
#tar -zxvf haproxy-1.6.9.tar.gz
#cd haproxy-1.6.9
#安装
#make TARGET=linux3100 ARCH=x86_64 PREFIX=/root/haproxy #编译
#make install PREFIX=/root/haproxy
#参数说明
TARGET=linux3100 #内核版本,
ARCH=x86_64 #系统位数
PREFIX=/root/haprpxy #/root/haprpxy为haprpxy安装路径
#touch /root/haproxy/conf/haproxy.cfg(此配置文件需要自己手动创建)
补充:
在Unix类操作系统上,rsyslog广泛应用于系统日志。rsyslog日志消息既可以记录在本地文件中,也可以通过网络发送到接收syslog的服务器。接收syslog的服务器可以对多个设备的syslog消息进行统一的存储,或者解析其中的内容做相应的处理。常见的应用场景是网络管理工具、安全管理系统、日志审计系统。
先说haproxy的系统日志设置; (注意这是centos7上面的,centos6上的文件配置不在这里)
2. 开启rsyslog记录haproxy日志功能
编辑“/etc/rsyslog.conf”打开如下配置项:
# Provides UDP syslog reception $ModLoad imudp $UDPServerRun 514
添加如下内容:
# Save haproxy log local0.* /var/log/haproxy.log
3. 修改“/etc/sysconfig/rsyslog”文件,内容如下
# Options for rsyslogd # Syslogd options are deprecated since rsyslog v3. # If you want to use them, switch to compatibility mode 2 by "-c 2"# See rsyslogd(8) for more details SYSLOGD_OPTIONS="-r -m 0 "
相关解释说明:
-r:打开接受外来日志消息的功能,其监控514 UDP端口;
-x:关闭自动解析对方日志服务器的FQDN信息,这能避免DNS不完整所带来的麻烦;
-m:修改syslog的内部mark消息写入间隔时间(0为关闭),例如240为每隔240分钟写入一次"--MARK--"信息;
-h:默认情况下,syslog不会发送从远端接受过来的消息到其他主机,而使用该选项,则把该开关打开,所有
接受到的信息都可根据syslog.conf中定义的@主机转发过去
4. 配置haproxy
编辑haproxy配置文件,在全局变量中配置,也就是第二行;
log 127.0.0.1 local0
###重启服务 service restart rsyslog ###查看日志记录 tailf /var/log/haproxy.log
下来手写haproxy启动脚本:
#!/bin/bash #set -e export LANG='zh_CN.UTF-8' source /etc/init.d/functions #PATH=$PATH:/root/haproxy/sbin dir=/root/haproxy name=haproxy DAEMON=$dir/sbin/$name CONFIG=$dir/conf/$name.cfg #PIDFILE=$dir/conf/$name.pid #aa=`ps -ef | grep haproxy | grep -v grep | awk '{print $2}'` test -x $DAEMON || exit 0 start() { $DAEMON -f $CONFIG >/dev/null a=$? if [ $a -eq 0 ]; then action "haproxy服务启动正常" /bin/true fi } stop() { killall haproxy b=$? if [ $b -eq 0 ]; then action "haproxy服务关闭正常" /bin/true fi } restart() { [ ! -n $PIDFILE ] && start || stop start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo "正确的参数,start|stop|restart" esac
下来时创建haproxy的配置文件:
vim /root/haproxy/conf/haproxy.cfg
global log 127.0.0.1 local0 maxconn 65536 chroot /root/haproxy pidfile /root/haproxy/conf/haproxy.pid #log #user haproxy #group haproxy daemon defaults mode http #默认的模式mode { tcp|http|health },tcp是4层,http是7层,health只会返回OK log global option dontlognull #不记录健康检查日志信息 option httpclose #每次请求完毕后主动关闭http通道,haproxy不支持keep-alive,只能模拟这种模式的实现 retries 3 #三次连接失败就认为是服务器不可用,也可以通过后面设置 maxconn 65536 timeout connect 70000 timeout client 70000 timeout server 70000 listen stats #监控 bind 0.0.0.0:1080 # 端口 stats uri /admin-status # 监控的uri stats auth admin:admin #用户用:密码 mode http option httplog frontend main bind *:80 acl web hdr(host) -i www.abc.com #acl后面是规则名称,-i为忽略大小写,后面跟的是要访问的域名,如果访问www.abc.com这个域名,就触发web规则,。 acl img hdr(host) -i img.abc.com use_backend webserver if web #如果上面定义的web规则被触发,即访问www.abc.com,就将请求分发到webserver这个作用域 use_backend imgserver if img # default_backend dynamic #不满足则响应backend的默认页面 backend webserver mode http balance roundrobin server web1 192.168.116.135:80 check inter 2000 rise 2 fall 3 server web2 192.168.116.136:80 check inter 2000 rise 2 fall 3 #check inter 2000 是检测心跳频率 fall 3是3次失败认为服务器不可用,weight代表权重 backend imgserver mode http #option httpchk /index.php balance roundrobin server img01 192.168.116.136:80 check inter 2000 fall 3 server img02 192.168.116.136:80 check inter 2000 fall 3 #backend dynamic # balance roundrobin # server test1 10.0.0.152:80 check maxconn 2000 # server test2 10.0.0.155:80 check maxconn 2000
执行结果如下:
当关闭135或者137上面的httpd服务后,就会请求另一个httpd服务。
将服务加入到系统中:
编辑/etc/init.d/haproxy添加:
#chkconfig 2345 20 80
#service haproxy
然后在外面执行命令:
#chkconfig --add haproxy
#chkconfig --list haproxy
下来就可以使用命令执行启动和关闭了:
标签:roc you 虚拟主机 targe port 手动 日志记录 响应 模式
原文地址:http://blog.51cto.com/11726212/2071397