keepalived+haproxy实现nginx与mysql负载均衡

实验环境:操作系统均为CentOS6.4_x86_64,keepalived,ansible,web以,mysql的安装配置,以及RealServer上的arp抑制等请看此前相关博文,这里不再赘述
http://blog.csdn.net/celeste7777/article/details/48678837
http://blog.csdn.net/celeste7777/article/details/47103785
http://blog.csdn.net/celeste7777/article/details/49096167
http://blog.csdn.net/celeste7777/article/details/47422431
这里写图片描述
一、haproxy概述
HAProxy提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费、快速并且可靠的一种解决方案。HAProxy特别适用于负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护web服务器不被暴露到网络上。

HAProxy实现了一种事件驱动、单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。因此必须要对它进行优化以使每个CPU时间片(Cycle)做更多的工作。
1.解压安装,将安装目录examples下的样例配置文件haproxy.cfg拷贝到/etc/haproxy/haproxy.cfg
这里写图片描述

[root@DQ ~]# ansible haproxy  -m copy  -a 'src=/root/instalhaproxy.sh dest=/root'
[root@DQ ~]# ansible haproxy  -m shell -a 'sh /root/instalhaproxy.sh'

这里写图片描述
二、配置文件说明:
HAProxy的配置处理3类来主要参数来源:

  • 最优先处理的命令行参数;
  • global配置段,用于设定全局配置参数;
  • proxy相关配置段,如“defaults”、“listen”、“frontend”和“backend”;

时间格式:一些参数的值表示时间,如超时时长。这些值一般以毫秒为单位,但也可以使用其它的时间单位后缀。

  • s: 秒(seconds);
  • m: 分钟(minutes);
  • h:小时(hours);
  • d: 天(days);
  • us: 微秒(microseconds),即1/1000000秒;
  • ms: 毫秒(milliseconds),即1/1000秒;

global配置中的参数为进程级别的参数,且通常与其运行的及安全OS相关。

  • chroot < dir >:可以提升haproxy的安全级别,不过需要注意的是要确保指定的目录为空目录且任何用户均不能有写权限;
  • daemon:等同于“-D”选项的功能,也可以在命令行中以“-db”选项将其禁用;
  • user:同uid,但使用的是用户名;
  • group < group name >:同gid,不过要指定组名;
  • uid:以指定的UID身份运行haproxy进程;
  • gid :以指定的GID运行haproxy,建议使用专用于运行haproxy的GID,以免因权限问题带来风险;
  • log < address > < facility > [max level [min level]]:定义全局的syslog服务器,最多可以定义两个;
  • log-send-hostname [< string >]:在syslog信息的首部添加当前主机名,可以为“string”指定的名称,也可以缺省使用当前主机名;
  • nbproc < number >:指定启动的haproxy进程个数,只能用于守护进程模式的haproxy;默认只启动一个进程,鉴于调试困难等多方面的原因,一般只在单进程仅能打开少数文件描述符的场景中才使用多进程模式;
  • ulimit-n:设定每进程所能够打开的最大文件描述符数目,默认情况下其会自动进行计算,因此不推荐修改此选项;
  • node:定义当前节点的名称,用于HA场景中多haproxy进程共享同一个IP地址时;
  • description:当前实例的描述信息;

代理段的定义
defaults < name >段用于为所有其它配置段提供默认参数,这配置默认配置参数可由下一个“defaults”所重新设定
frontend < name >段用于定义一系列监听的套接字,这些套接字可接受客户端请求并与之建立连接
backend < name >用于定义一系列“后端”服务器,代理将会将对应客户端的请求转发至这些服务器
listen < name >通过关联“前端”和“后端”定义了一个完整的代理,通常只对TCP流量有用
注意:所有代理的名称只能使用大写字母、小写字母、数字、-(中线)、_(下划线)、.(点号)和:(冒号)。此外,ACL名称会区分字母大小写。
配置文件中的关键字参考
balance:定义负载均衡算法,可用于“defaults”、“listen”和“backend”。
balance < algorithm > [ < arguments > ]
balance url_param [check_post [< max_wait >]]
< algorithm >用于在负载均衡场景中挑选一个server,其仅应用于持久信息不可用的条件下或需要将一个连接重新派发至另一个服务器时。
常用的3种算法:

  • roundrobin:基于权重进行轮叫,在服务器的处理时间保持均匀分布时,这是最平衡、最公平的算法。此算法是动态的,这表示其权重可以在运行时进行调整,不过,在设计上,每个后端服务器仅能最多接受4128个连接;
  • leastconn:新的连接请求被派发至具有最少连接数目的后端服务器;在有着较长时间会话的场景中推荐使用此算法,如LDAP、SQL等,其并不太适用于较短会话的应用层协议,如HTTP;此算法是动态的࿰
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值