1.haproxy
haproxy简介
HAProxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
HAProxy特别适用于那些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在当前的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全的整合进您当前的架构中, 同时可以保护你的web服务器不被暴露到网络上。
HAProxy实现了一种事件驱动, 单一进程模型,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制 、系统调度器限制以及无处不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户空间(User-Space) 实现所有这些任务,所以没有这些问题。此模型的弊端是,在多核系统上,这些程序通常扩展性较差。这就是为什么他们必须进行优化以 使每个CPU时间片(Cycle)做更多的工作
haproxy主机:server2—>172.25.25.2
后端服务器:server1 —>172.25.25.1
server4 —>172.25.25.4
1)安装haproxy
在Server2上安装haproxy
关闭多余的进程
# 安装
[root@server2 ~]# yum install -y rpm-build-4.8.0-37.el6.x86_64
[root@server2 ~]# rpmbuild -tb haproxy-1.6.11.tar.gz
[root@server2 ~]# cd rpmbuild/RPMS/
[root@server2 RPMS]# ls
x86_64
[root@server2 RPMS]# cd x86_64/
[root@server2 x86_64]# rpm -qpl haproxy-1.6.11-1.x86_64.rpm
[root@server2 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm
Preparing... ########################################### [100%]
1:haproxy ########################################### [100%]
[root@server2 x86_64]# cd
[root@server2 ~]# tar zxf haproxy-1.6.11.tar.gz
[root@server2 ~]# cd haproxy-1.6.11
[root@server2 haproxy-1.6.11]# cd examples/
[root@server2 examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
[root@server2 examples]# cd /etc/haproxy/
[root@server2 haproxy]# ls
haproxy.cfg haproxy.cfg.rpmsave
2)配置haproxy
[root@server2 haproxy]# id haproxy
uid=188(haproxy) gid=188(haproxy) groups=188(haproxy)
[root@server2 haproxy]# vim haproxy.cfg
global
maxconn 10000
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 188 #haproxy的组id
gid 188 #haproxy的用户id,没有的话,需要创建
chroot /var/empty
daemon
defaults #默认
mode http
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
stats uri /admin/stats
option prefer-last-server
retries 2
option redispatch
timeout connect 5s
timeout server 5s
frontend public
bind *:80 name clear
#bind 192.168.1.10:443 ssl crt /etc/haproxy/haproxy.pem
#use_backend static if { hdr_beg(host) -i img }
#use_backend static if { path_beg /img /css }
default_backend static
# The static backend backend for 'Host: i