操做环境:
一台haproxy主机地址为:192.168.80.100
两台web服务器地址分别为:192.168.80.102
192.168.80.103html
192.168.80.100:
安装haproxy:前端
源码编译安装haproxy,须要软件包。linux
yum install -y \ pcre-devel \ bzip2-devel \ gcc \ gcc-c++ \ make tar xzvf haproxy-1.5.15.tar.gz -C /opt --解压软件包的 /opt/下 cd /opt/haproxy-1.5.15 make TARGET=linux26 PREFIX=/usr/local/haproxy //标识64为系统 make install PREFIX=/usr/local/haproxy --安装路径 mkdir /etc/haproxy --建立配置文件目录 useradd -s /sbin/nologin -M haproxy --建立一个不可登陆系统,且没有家目录的用户
————————到此安装c++
haproxy完成——————web
——redis
HAProxy配置文件详解
其配置文件主要由五个部分组成,分别为global部分,defaults部分,frontend部分,backend部分,liste部分。
1)global部分
用于设置全局配置参数
2) defaults部分
默认参数的配置部分。
3) frontend部分
用于设置接收用户请求的前端虚拟节点。frontend能够根据ACL规则直接指定要使用的后端backend。
4) backend部分
用于设置集群后端服务集群的配置,也就是添加一组真实服务器,以处理前端用户的请求。后端5) listen部分此部分是frontend和backend部分的结合体。配置此部分不须要在配置浏览器
cp /opt/haproxy-1.5.15/examples/haproxy.cfg /etc/haproxy/
服务器
vi /etc/haproxy/haproxy.cfg --------------全局配置---------------- global log 127.0.0.1 local0 notice #配置全局日志记录,local0为日志设备,notice为输出的日志级别,表示使用本地(127.0.0.1)机器上的rsyslog服务中的local0设备记录日志等级为notice的日志。 #log loghost local0 info #定义haproxy 日志级别 maxconn 20480 #能够接收的最大并发链接数 #chroot /usr/local/haproxy-1.5.15 #工做目录 pidfile /var/run/haproxy.pid #haproxy 进程PID文件 maxconn 4000 //最大链接数 user haproxy #运行的程序用户 group haproxy #运行的程序用户组 daemon //建立1个进程进入deamon模式运行,之后台形式运行harpoxy #--------------------------------------------------------------------- #common defaults that all the 'listen' and 'backend' sections will #use if not designated in their block #--------------------------------------------------------------------- defaults mode http //所处理的类别,tcp是四层,http是七层,health只会返回OK,如果混合模式则mode不须要设置 log global //定义日志,采用全局定义 option dontlognull //不记录健康检查的日志信息 option httpclose //每次请求完毕后主动关闭http通道 option httplog //日志类别为http日志格式;若是是混合模式,此处还须要加上tcpclog #option forwardfor //后端服务器能够从Http Header中得到客户端ip option redispatch //serverId对应的服务器挂掉后,强制定向到其余健康的服务器 balance roundrobin #设置默认负载均衡方式,轮询方式 timeout connect 10s //链接超时 timeout client 10s //客户端链接超时 timeout server 10s //服务器链接超时 timeout check 10s //健康检测的超时时间 maxconn 60000 //最大链接数 retries 3 //3次链接失败就认为服务不可用 --------------统计页面配置------------------ listen admin_stats #为haproxy访问状态监控页面配置,取名为admin_stats bind 0.0.0.0:8089 //监听端口 stats enable //启用监听端口 mode http #http的7层模式 log global # 继承global中log的定义 stats uri /stats #监控页面的url访问路径,即http://ip/stats访问监控页面 stats realm Haproxy\ Statistics #监控页面的密码框提示信息 stats auth admin:admin #监控页面的用户和密码admin,能够设置多个用户名 #stats hide-version //隐藏统计页面上HAProxy的版本信息 stats admin if TRUE //当经过认证才可管理 stats refresh 30s //页面自动刷新时间30s ---------------web设置----------------------- listen webcluster #定义webcluster服务器组。 bind 0.0.0.0:80 #定义haproxy前端部分监听的端口。 mode http #http的7层模式 option httpchk GET /index.html #心跳检测 log global #继承global中log的定义 maxconn 3000 #server进程可接受的最大并发链接数 balance roundrobin #负载均衡的方式:轮询 server web01 192.168.80.102:80 check inter 2000 fall 5 server web02 192.168.80.103:80 check inter 2000 fall 5
注:并发
后端服务器 web1 和 web2 ,IP 地址分别为 192.168.80.102 和 192.168.80.103
check:对当前server作健康状态检测cp examples/haproxy.init /etc/init.d/haproxy
chmod 755 /etc/init.d/haproxy
chkconfig --add haproxy
inter <delay>:检测之间的时间间隔,默认为2000ms
fall <count>:连续多少次检测结果为“失败”才标记为不可用;默认为3
rise <count>:连续多少次检测结果为“成功”才标记为可用;默认为2cp examples/haproxy.init /etc/init.d/haproxy chmod 755 /etc/init.d/haproxy chkconfig --add haproxy
ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy
service haproxy start service firewalld stop
访问统计页面
在浏览器地址栏:192.168.80.100:8089/stats
192.168.80.102:
配置第一台web服务器
systemctl stop firewalld setenforce 0 mount /dev/cdrom /mnt yum install httpd -y vi /etc/httpd/conf/httpd.conf cd /var/www/html/ ls echo "<h1>SERVER AA</h1>" > index.html vi index.html systemctl start httpd netstat -anpt | grep httpd
192.168.80.103:
配置第二台web服务器
systemctl stop firewalld setenforce 0 mount /dev/cdrom /mnt yum install httpd -y vi /etc/httpd/conf/httpd.conf cd /var/www/html/ ls echo "<h1>SERVER BB</h1>" > index.html vi index.html systemctl start httpd netstat -anpt | grep httpd
测试haproxy
在浏览器地址栏输入:192.168.80.100:8089/stats
在浏览器地址栏输入:192.168.80.100