一. Haproxy
HAProxy是可提供高可用性、负载均衡以及基于TCP和HTTP应用的代理,是免费、快速并且可靠的一种解决方案。HAProxy非常适用于并发大(并发达1w以上)web站点,这些站点通常又需要会话保持或七层处理。HAProxy的运行模式使得它可以很简单安全的整合至当前的架构中,同时可以保护web服务器不被暴露到网络上。
(6)url_param,表示根据请求的URl参数'balance url_param' requires an URL parameter name
(7)hdr(name),表示根据HTTP请求头来锁定每一次HTTP请求;
(8)rdp-cookie(name),表示根据cookie(name)来锁定并哈希每一次TCP请求。1.3 LVS、Nginx、HAproxy的区别
●LVS基于Linux操作系统内核实现软负载均衡,而HAProxy和Nginx是基于第三方应用实现的软负载均衡;
●LVS是可实现4层的IP负载均衡技术,无法实现基于目录、URL的转发。而HAProxy和Nginx都可以实现4层和7层技术,HAProxy可提供TCP和HTTP应用的负载均衡综合解决方案;md-fences md-end-block ty-contain-cm modeLoaded highlighter- arduino systemctl stop firewalld setenforce 02.1.2 内核配置(实验环境可有可无)
md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache vim /etc/sysctl.conf net.ipv4.tcp_tw_reuse = 1 #启用端口重用,允许一个服务器进程在进行完一个连接后立即再次使用相同的连接端口。 net.ipv4.ip_local_port_range = 1024 65023 #本地端口范围。指定可用于本地TCP/UDP端口的端口号范围。 net.ipv4.tcp_max_syn_backlog = 10240 #TCP半连接请求的最大长度,如果超过这个值,对方就会收到RST响应。 net.ipv4.tcp_max_tw_buckets = 400000 #系统中同时保持TIME_WAIT状态的最大数量,一般设置为TCP建立连接次数的2倍。 net.ipv4.tcp_max_orphans = 60000 #系统中允许存在的最大orphan连接数(没有对应的socket文件),这个数字越大,系统支持的TCP连接数也越多。 net.ipv4.tcp_synack_retries = 3 #尝试发送SYN+ACK应答报文的最大次数。 net.core.somaxconn = 10000 #服务器套接字排队长度的最大值
md-fences md-end-block ty-contain-cm modeLoaded highlighter- awk //编译安装 yum install -y pcre-devel bzip2-devel gcc gcc-c++ make tar zxvf haproxy-2.2.11.tar.gz cd haproxy-2.2.11/ make TARGET=linux31 PREFIX=/usr/local/haproxy make install PREFIX=/usr/local/haproxy ---------------------参数说明--------------------------------------------------------------------------- TARGET=linux26 #内核版本, #使用uname -r查看内核,如:2.6.18-371.el5,此时该参数用TARGET=linux26;kernel大于2.6.28的用TARGET=linux2628安装依赖环境
md-fences md-end-block ty-contain-cm modeLoaded highlighter- awk useradd -M -s /sbin/nologin haproxy mkdir -p /usr/local/haproxy/conf cd /usr/local/haproxy/confHAProxy 的配置文件共有 5 个域:
md-fences md-end-block ty-contain-cm modeLoaded highlighter- pgsql
●global:用于配置全局参数 ●default:用于配置所有frontend和backend的默认属性 ●frontend:用于配置前端服务(即HAProxy自身提供的服务)实例 ●backend:用于配置后端服务(即HAProxy后面接的服务)实例组 ●listen:frontend + backend的组合配置,可以理解成更简洁的配置方法,frontend域和backend域中所有的配置都可以配置在listen域下 md-fences md-end-block ty-contain-cm modeLoaded highlighter- smali global #全局配置,主要用于定义全局参数,属于进程级的配置,通常和操作系统配置有关 log 127.0.0.1 local1 warning daemon #让haproxy以守护进程的方式工作于后台 option dontlognull #不在日志中记录空连接 option abortonclose #当服务器负载很高的时候,自动结束掉当前队列处理比较久的链接 maxconn 20000 #最大连接数,“defaults”中的值不能超过“global”段中的定义 timeout queue 3s #默认客户端请求在队列中的最大时长 timeout connect 1s #默认haproxy和服务端建立连接的最大时长,新版本中替代contimeout,该参数向后兼容 frontend http-in bind *:80 acl url_jsp path_end -i .jsp use_backend tomcat_server if url_jsp default_backend nginx_server backend nginx_server balance roundrobin option httpchk GET /test.html server ngx01 192.168.1.101:80 check inter 2000 fall 3 rise 2 server ngx02 192.168.1.100:80 check inter 2000 fall 3 rise 2 backend tomcat_server balance roundrobin option http-server-close cookie HA_STICKY_dy insert indirect nocache server tomcat01 192.168.1.102:8080 cookie tomcat01 check inter 2000 fall 3 rise 2 server tomcat02 192.168.1.150:8080 cookie tomcat02 check inter 2000 fall 3 rise 2 listen stats bind *:1080 stats enable stats refresh 30s stats uri /stats stats realm HAProxy\ Stats stats auth admin:admin
2.1.4 添加为系统服务
md-fences md-end-block ty-contain-cm modeLoaded highlighter- apache chkconfig --add /etc/init.d/haproxy chkconfig --level 35 haproxy on chkconfig --level 35 haproxy on service haproxy start
md-fences md-end-block ty-contain-cm modeLoaded highlighter- awk systemctl stop firewalld setenforce 0 # 堆代码 duidaima.com yum install -y pcre-devel zlib-devel gcc gcc-c++ make useradd -M -s /sbin/nologin nginx cd /opt tar zxvf nginx-1.12.0.tar.gz -C /opt/ cd nginx-1.12.0/ ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx && make && make install make && make install --192.168.1.100--- echo "this is kgc web" > /usr/local/nginx/html/test.html --192.168.1.101--- echo "this is benet web" > /usr/local/nginx/html/test.html ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/ nginx #启动nginx 服务---Nginx 服务器1:192.168.1.100---