标签:连接数 声明 事物 刷新 route 服务器密码 add 网站 调用
HAProxy集群(LB负载均衡)
工作模式:
Mode http
客户端请求被深度分析后再发往服务器
Mode tcp
客户端与服务器之间会话,不检查第七层信息
Mode health
仅做健康状态检查
HTTP协议是事物驱动的每个请求(Request)仅对应一个响应(Response)
常见模型:
1.HTTP close
2.HTTP-alive
3.Pipelinig
HTTP close
客户端向服务器建议一个TCP连接
客户端发送请给服务器
服务器响应客户端请求后即断开连接
如果客户端到服务器的请求不止一个,那么就要不断的去建立连接
TCP三次握手消耗相对较大的系统资源,同时延迟较大
HTTP-alive
一次连接可以传输多个请求
客户端需要知道传输内容的长度,以避免无限期的等待传输结果
降低两个HTTP事物间的延迟
需要相对较少的服务资源
Pipelining
任然使用Keep-alive
在发送后续请求前,不用等前面的请求已经得到回应
适用于有大量的图片页面
降低了多次请求之间的网络延迟
HAProxy配置参数来源
命令行:总是具有最高优先级
global部分:全局设置进程级别参数
代理声明部分:default、listen、frontend、backend
配置文件的构成:
default:为后续的其他部分设置缺省参数
缺省参数可以被后续部分重置
listen:把frontend和backend结合在一起的完整声明
frontend:描述接收客户端侦听套接字(socket)集
backend:描述转发链接的服务器集
搭建LAMP环境
yum -y install php-mysql mysql-server mysql php httpd
起服务:service httpd start
chkconfig httpd on
service mysqld start
chkconfig mysqld on
配置分发器(192.168.4.50) ,web1(192.168.4.53),web2(192.168.4.54)
1 装包
yum list |grep -i haproxy 在yum源里查看有没有haproxy软件包
rpm -ivh haproxy-1.5.4-2.el6.x86_64.rpm
rpm -qc haproxy 查看配置文件
2 修改配置
cp /etc/haproxy/haproxy.cfg /root/
vim /etc/haproxy/haproxy.cfg
.....
global
log 127.0.0.1 local2
chroot /usr/local/haproxy
pidfile /var/run/haproxy.pid ##haproxy的pid存放路径
maxconn 4000 ##最大连接数,默认4000
user haproxy ##默认用户
group haproxy ##默认用户组
daemon ##创建1个进程进入deamon模式运行
.....
defaults
mode http ##默认的模式mode{tcp|http|health}log global 采用全局定义的日志
option dontlognull ##不记录健康检查的日志信息
option httpclose ##每次请求完毕后主动关闭http通道
option httplog ##日志类别http日志格式
option forwardfor ##后端服务器可以从http header中国的客户端ip
option redispatch ##serverid服务器挂掉后强制定向到其他健康服务器
timeout connect 10000 ##如果backend没有指定,默认为10s
timeout client 300000 ##客户端连接超时
timeout server 300000 ##服务器连接超时
maxconn 60000 ##最大连接数
retries 3 ##3次连接失败就认为服务不可用,也可以通过后面设置
#listen stats
# bind 0.0.0.0:1080 ##监听端口
# stats refresh 30s ##统计页面自动刷新时间
# stats uri /stats ##统计页面URL
#stats realm Haproxy Manager ##统计页面密码框上提示文本
# stats auth admin:admin ##统计页面用户名和密码设置
#stats hide-version ##显示统计页面上HProxy的版本信息
stats uri /admin
listen weblb 0.0.0.0:80
cookie SERVERID rewrite
balance roundrobin
server web1 192.168.4.53:80 cookie app1inst1 check inter 2000 rise 2 fall 5
server web2 192.168.4.54:80 cookie app1inst1 check inter 2000 rise 2 fall 5
mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.back
vim /etc/haproxy/haproxy.cfg
........
defaults
.......
stats uri /admin (定义控制板)
frontend weblb *:80
acl url_static path_beg (匹配开头) -i (不区分大小写)
acl urlhtml (名字) path_end (匹配结尾) -i .html
acl urlphp path_end -i .php
use_backend htmlgrp (名字) if urlhtml (调用acl)
use_backend phpgrp if urlphp
default_backend htmlgrp (默认backend)
backend htmlgrp (定义转发连接的服务器)
balance roundrobin (rr调度算法)
server web51 192.168.4.51:80 check
server web52 192.168.4.52:80 check
backend phpgrp
balance roundrobin
server web53 192.168.4.53:80 check
server web54 192.168.4.54:80 check
service haproxy start
chkconfig haproxy on
chkconfig --list haproxy
http://www.baidu.com/abc URL
abc uri
=====================================================================
=====================================================================
keepalived(HA)任意单故障节点的高可用集群
1 在高可用集群主机上分别安装keepalived软件
2 分别修改服务的配置文件
3 分别启动keepalived服务
4 在高可用集群主机上分别是否获取VIP地址
5 254客户端访问
1 在高可用集群主机上分别安装keepalived软件
yum list |grep -i keepalived
yum -y install keepalived
rpm -qc keepalived
2 分别修改服务的配置文件
主:
vim /etc/kepalived/kepalived.conf
global_defs {
notification_email {
abc@localhost 设置报警邮件人邮箱
}
notification_email_from Alexandre.Cassen@firewall.loc 设置发件人
smtp_server 192.168.200.1 定义邮件服务器
smtp_connect_timeout 30
router_id LVS_DEVEL 设置路由ID号
}
vrrp_instance webha {
state MASTER 主服务器为MASTER,辅助为SLAVE或BACKUP
interface eth0 定义网卡接口
virtual_router_id 51 主辅VRID号必须一致
priority 150 服务器优先级,越大优先级越高
advert_int 1
authentication {
auth_type PASS
auth_pass 123456 主辅服务器密码必须一致
}
virtual_ipaddress { 设置VIP
192.168.4.251 可用多个
}
}
辅:
vim /etc/kepalived/kepalived.conf
global_defs {
notification_email {
abc@localhost
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance webha {
state BACKUP
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.4.251
}
}
3 起服务(先起主服务)
ip add show |grep 192.168.4
service keepalived start
nginx分析
优点:
工作在7层协议,可以针对http做分流策略
正则表达式比HAProxy强大
安装,配置,测试简单,通过日志可以解决多数问题
并发量可以达到几万次
Nginx还可以作为web服务器使用
缺点:
仅支持http,https,mail协议,应用面小
监控检查仅通过端口,无法使用URL检查
LVS分析
优点:
负载能力强,工作在4层协议,对内存,CPU消耗低
配置性低,没有太多可配置性,减少人为错误
应用面广,几乎可以为所有应用提供负载均衡
缺点:
不支持正则表达式,不能实现动静分离
如果网站架构庞大,LVS-DR配置比较繁琐
HAProxy分析
优点:
支持session,cookie功能
可以通过url进行健康性检查
效率,负载均衡速度,高于Nginx,低于LVS
HAProxy支持TCP,可以对MySQL进行负载均衡
调度算法丰富
缺点:
正则弱与Nginx
日志依赖于syslogd,不支持apache日志
标签:连接数 声明 事物 刷新 route 服务器密码 add 网站 调用
原文地址:http://blog.51cto.com/13399294/2161032