
基于HAProxy的Web负载均衡集群实验方案实验规划环境规划在实验环境下,保持防火墙和selinux均关闭,配置阿里云和epel镜像源实验步骤部署nginx后端web服务器(19.16.2.162 19.16.2.163)安装nginxyum-yinstallnginx配置web页面创建测试页面echoWelcome to Nginx-1 (19.16.2.163)/usr/share/nginx/html/index.htmlechoWelcome to Nginx-2 (19.16.2.162)/usr/share/nginx/html/index.html启动服务systemctl start nginxsystemctlenablenginx查看进程ss-tulanp|grepnginxpsaux|grepnginx部署HAProxy调度器19.16.2.164(资源随文上传)安装前置依赖yum-yinstallgcc gcc-c glibc glibc-devel pcre pcre-devel openssl openssl-devel systemd-devel zlib-devel readline-devellua环境安装mkdir-pv/usr/local/srccd/usr/local/srctar-zxvflua-5.3.6.tar.gz-C/usr/srccd/usr/src/lua-5.3.6/makelinux;echo$?makeinstallINSTALL_TOP/usr/local/lua;echo$?安装haproxy编译安装cd/usr/local/src/tar-zxvfhaproxy-2.2.14.tar.gz-C/usr/srccd/usr/src/haproxy-2.2.14/make-j$(nproc)TARGETlinux-glibcUSE_OPENSSL1USE_ZLIB1USE_LUA1LUA_LIB/usr/local/lua/lib/LUA_INC/usr/local/lua/include/USE_PCRE1USE_SYSTEMD1;echo$?makeinstallPREFIX/usr/local/haproxy;echo$?创建服务脚本cd/usr/local/haproxy/cp-av/usr/src/haproxy-2.2.14/examples/haproxy.init /etc/init.d/haproxychmodx /etc/init.d/haproxy优化执行文件路径cp/usr/local/haproxy/sbin/haproxy /usr/sbin/创建用户可用于运行haproxyuseraddhaproxy-s/sbin/nologinhaproxy配置文件新版本中默认不存在需要创建mkdir-pv/etc/haproxy/vim/etc/haproxy/haproxy.cfg# 标准化生产环境中需要查看haproxy的uid和gid,然后在配置文件中做修改.本文是基于虚拟机的实验环境,所以此处未作出修改id-uhaproxy以下配置文件内容直接复制即可global log127.0.0.1 local0 info maxconn256#chroot /usr/local/haproxyuid99gid99daemon defaults mode httptimeoutconnect 5000mstimeoutclient 50000mstimeoutserver 50000ms option httpclose option dontlognull option forwardfor option redispatch option abortonclose frontend http-inbind*:80 default_backend servers backend servers option httpchk GET /index.html balance roundrobin server server119.16.2.163:80 check inter2000rise2fall5server server219.16.2.162:80 check inter2000rise2fall5启动haproxychkconfig--add/etc/init.d/haproxyservicehaproxy start#或haproxy-f/usr/local/haproxy/haproxy.cfg开启haproxy的统计页面在proxy配置文件中添加以下内容listen stats mode httpbind0.0.0.0:9999 statsenablelog global stats uri /status stats auth haadmin:fanzc配置文件内容全文注释globallog 127.0.0.1 local0 info #日志输出配置,所有日志都记录在本机,通过local0输出maxconn 256 #连接最大数chroot /usr/local/haproxy #haproxy安装路径,一般需将此行注释掉uid 99 #所属运行的用户uidgid 99 #所属运行的用户组daemon #后台运行defaultsmode http #模式为httptimeout connect 5000ms #连接超时时间timeout client 50000ms #客户端超时时间timeout server 50000ms #服务器超时时间option httpclose #每次请求完毕后主动关闭http通道option dontlognull #不记录健康检查的日志信息option forwardfor #如果后端服务器需要获得客户端真实ip需要配置的参数可以从Http Header中获得客户端ipoption redispatch #serverId对应的服务器挂掉后,强制定向到其他健康的服务器option abortonclose #当服务器负载很高的时候自动结束掉当前队列处理比较久的连接listen stats #配置haproxy web监控查看统计信息mode http #模式为httpbind 0.0.0.0:9999 #前端浏览器中查看统计的WEB界面地址stats enable #开启状态log globalstats uri /status #设置haproxy监控地址为http://localhost:9999/statusstats auth haadmin:fanzc #设置查看统计的账号密码,格式为’账号:密码’frontend http-in #定义一个名为http-in的应用bind *:80default_backend servers #用户请求转发到名称为servers的后端模块处理backend serversoption httpchk GET /index.html #检查服务器的index.html文件balance roundrobin #负载均衡调度算法 轮询roundrobin最小连接数leastconn来源访问调度sourceserver server1 19.16.2.163:80 check inter 2000 rise 2 fall 5server server2 19.16.2.162:80 check inter 2000 rise 2 fall 5#check inter 2000 #表示haproxy服务器和节点之间的一个心跳频率#rise 2 #表示两次正确证明服务器可用#fall 3 #表示连续三次检测不到心跳频率则认为该节点失效重启服务servicehaproxy restart测试http://19.16.2.164你的HAproxy服务器ip:9999/status输入用户名密码haadmin:fanzchaproxy日志配置HAProxy可以基于rsyslog记录日志到指定的设备修改haproxy配置文件vim/etc/haproxy/haproxy.cfg log127.0.0.1 local3 info#在全局配置段中配置定义日志记录级别修改syslog的配置文件vim/etc/rsyslog.conf...#Provides UDP syslog reception$ModLoadimudp#日志传输基于udp所以需要开启$UDPServerRun514#这里两项local3.* /var/log/haproxy.log#添加...重启haproxy和rsyslog服务systemctl restart rsyslogservicehaproxy restart通过浏览器访问http://19.16.2.164:9999/status后查看日志tail-f/var/log/haproxy.log验证浏览器访问http://19.16.2.164/并F5或者ctrlF5刷新可以看到轮询两台nginx服务器的首页或者在CMD中curl 19.16.2.164输出如下