实验环境
主机名 | IP | 服务 |
---|---|---|
虚拟机server1 | 172.25.6.1 | haproxy,httpd,服务端 |
虚拟机server2 | 172.25.6.2 | httpd,php,客户端 |
虚拟机server3 | 172.25.6.3 | httpd,php,客户端 |
物理机 | 172.25.6.250 | 测试端 |
一、HApronxy实现负载均衡的配置过程
1.从官网获得一个HAproxy的安装包,解压安装包
2.将源码包打包成一个rpm包
(1)查找.spec文件 (有这个文件才能把一个源码包打成rpm包)
find . -name *.spec
(2)安装编译工具rpm-build gcc pcre-devel
yum install -y rpm-build gcc pcre-devel
(3)编译安装包
rpmbuild -tb haproxy-1.7.3.tar.gz
编译完成之后会出现一个rpmbuild目录,rpm安装包在这个目录中
3.安装rpm包
rpm -ivh haproxy-1.7.3-1.x86_64.rpm
4.编辑haproxy的配置文件
(1)haproxy的配置文件在源码包中
content-sw-sample.cfg 是haproxy的默认配置文件
(2)将这个文件复制到/etc/haproxy目录下
(3)编辑配置文件
vim haproxy.cfg
global
maxconn 10000 ##最大连接数
stats socket /var/run/haproxy.stat mode 600 level admin
log 127.0.0.1 local0
uid 200 ##haproxy用户的uid
gid 200 ##haproxy用户的gid
chroot /var/empty
daemon
defaults
mode http ##默认使用http的7层模式 tcp:4层
log global
option httplog
option dontlognull
monitor-uri /monitoruri
maxconn 8000
timeout client 30s
option prefer-last-server
retries 2
option redispatch
timeout connect 5s
timeout server 5s
stats uri /admin/stats
# The public 'www' address in the DMZ
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 dynamic ##默认使用dynamic后端服务器集群
# the application servers go here
backend dynamic
balance roundrobin ##负载均衡算法rr(轮循)
server web1 172.25.6.2:80 check inter 1000 ##后端服务器server2
server web2 172.25.6.3:80 check inter 1000 ##后端服务器server3
5.server2和server3安装httpd,编辑测试页,开启服务
(1)server2
yum install -y httpd
vim /var/www/html/index.html
/etc/init.d/httpd start
(2)server3
yum install -y httpd
vim /var/www/html/index.html
/etc/init.d/httpd start
6.server1开启haproxy服务
/etc/init.d/haproxy start
7.物理机测试:访问server1出现轮循调度
8.物理机上浏览器访问http://172.25.6.1/admin/stats出现监控页面,f5可以刷新,f12可以进入控制台
【F12】
(1)关闭server2的httpd服务,f5刷新,可以看到监控发生变化
【web1显示DOWN】
(2)再次打开server2的httpd服务,刷新后监控恢复正常
【web1显示ON】
9.物理机上浏览器访问http://172.25.6.1/monitoruri出现200 OK 说明haproxy服务正常