Linux:Haproxy的负载均衡

一·Haproxy

HAProxy 是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件。也是是一种高效、可靠、免费的高可用及负载均衡解决方案,非常适合于高负载站点的七层数据请求。客户端通过HAProxy代理服务器获得站点页面,而代理服务器收到客户请求后根据负载均衡的规则将请求数据转发给后端真实服务器。
同一客户端访问服务器,HAProxy保持回话的三种方案:
1 HAProxy将客户端ip进行Hash计算并保存,由此确保相同IP访问时被转发到同一真实服务器上。
2 HAProxy依靠真实服务器发送给客户端的cookie信息进行回话保持。
3 HAProxy保存真实服务器的session及服务器标识,实现会话保持功能。

安装包:

haproxy-1.6.11.tar.gz

实验环境:

server1 server2 是集群节点
server3 server4是服务后端

如果是新的环境
需要下载gcc,openssl-devel
[root@server1 ~]# yum install rpm-build-4.8.0-37.el6.x86_64 -y
[root@server1 ~]# yum install pcre-devel -y
[root@server1 ~]# rpmbuild -tb haproxy-1.6.11.tar.gz 
[root@server1 ~]# cd rpmbuild/RPMS/
[root@server1 RPMS]# ls
[root@server1 RPMS]# cd x86_64/
[root@server1 x86_64]# rpm -qpl haproxy-1.6.11-1.x86_64.rpm 
[root@server1 x86_64]# ls
haproxy-1.6.11-1.x86_64.rpm
[root@server1 x86_64]# rpm -ivh haproxy-1.6.11-1.x86_64.rpm 
[root@server1 x86_64]# ls
haproxy-1.6.11-1.x86_64.rpm
[root@server1 x86_64]# cd
[root@server1 ~]# ls
[root@server1 ~]# tar zxf haproxy-1.6.11.tar.gz 
[root@server1 ~]# ls
[root@server1 ~]# cd haproxy-1.6.11
[root@server1 haproxy-1.6.11]# ls
[root@server1 haproxy-1.6.11]# cd examples/
[root@server1 examples]# ls
[root@server1 examples]# cd /etc/haproxy/
[root@server1 examples]# cp content-sw-sample.cfg /etc/haproxy/haproxy.cfg
[root@server1 haproxy]# ls
haproxy.cfg
[root@server1 haproxy]# grep 200 /etc/haproxy/     
[root@server1 haproxy]# groupadd -g 200 haproxy   ##建立组
[root@server1 haproxy]# useradd -u 200 -g 200 -M haproxy    ##建立用户
[root@server1 haproxy]# id haproxy
uid=200(haproxy) gid=200(haproxy) groups=200(haproxy)
[root@server1 haproxy]# vim /etc/security/limits.conf 
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy start

这里写图片描述
Linux:Haproxy的负载均衡_第1张图片

测试网页访问:
https://172.25.41.1Linux:Haproxy的负载均衡_第2张图片
http://172.25.41.1/monitoruriLinux:Haproxy的负载均衡_第3张图片
http://172.25.41.1/admin/stats
Linux:Haproxy的负载均衡_第4张图片
如果将后端服务器server2和server3中httpd关闭
Linux:Haproxy的负载均衡_第5张图片

算法

[root@server1 haproxy]# cd /etc/haproxy/
[root@server1 haproxy]# vim /etc/rsyslog.conf   ##第一次修改
[root@server1 haproxy]# /etc/init.d/rsyslog restart
Shutting down system logger:                               [  OK  ]
Starting system logger:                                    [  OK  ]
[root@server1 haproxy]# cd /var/log/
[root@server1 log]# cat haproxy.log    ##查看日至
网页访问后日志就有了
[root@server1 log]# cat haproxy.log    ##再次查看日志
Aug  4 03:01:09 localhost haproxy[1883]: 172.25.41.250:36726 [04/Aug/2018:03:01:09.483] public public/ 0/0/0/0/0 200 14899 - - LR-- 1/1/0/0/0 0/0 "GET /admin/stats HTTP/1.1"
[root@server1 log]# cd /etc/haproxy/
[root@server1 haproxy]# vim haproxy.cfg   ##第二次修改
[root@server1 haproxy]# /etc/init.d/haproxy reload
网页测试:只有server2的内容

在 /etc/rsyslog.conf 文件中:
这里写图片描述
这里写图片描述
这里写图片描述
在haproxy.cfg文件中第一次更改:
Linux:Haproxy的负载均衡_第6张图片
在haproxy.cfg文件中第二次更改:
Linux:Haproxy的负载均衡_第7张图片
测试:
网页访问只有server2内容
Linux:Haproxy的负载均衡_第8张图片

1.动静php

在server3中下载php

[root@server3 ~]# yum install php -y
[root@server3 ~]# vim /var/www/html/index.php
[root@server3 ~]# /etc/init.d/httpd restart
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload

Linux:Haproxy的负载均衡_第9张图片
Linux:Haproxy的负载均衡_第10张图片

网页测试:
Linux:Haproxy的负载均衡_第11张图片
动静状态:
Linux:Haproxy的负载均衡_第12张图片
Linux:Haproxy的负载均衡_第13张图片

2.重定向

[root@server1 haproxy]# vim haproxy.cfg   ##修改内容
[root@server1 haproxy]# /etc/init.d/haproxy reload
[root@server1 haproxy]# yum install -y httpd
[root@server1 haproxy]# vim /etc/httpd/conf/httpd.conf   ##更改端口
[root@server1 haproxy]# /etc/init.d/httpd start
[root@server1 haproxy]# vim /var/www/html/index.html
[root@server1 haproxy]# cat /var/www/html/index.html
网站正在维护.....
[root@server1 haproxy]# /etc/init.d/haproxy reload

修改haproxy.cfg 文件:
Linux:Haproxy的负载均衡_第14张图片
更改端口:
这里写图片描述

测试:
Linux:Haproxy的负载均衡_第15张图片

[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload
[root@server4 ~]# curl 172.25.41.1    ##可以看到内容

配置文件:
Linux:Haproxy的负载均衡_第16张图片
测试:
Linux:Haproxy的负载均衡_第17张图片

[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload
[root@server4 ~]# curl 172.25.41.1  ##看不到内容

配置文件:
Linux:Haproxy的负载均衡_第18张图片
测试:
Linux:Haproxy的负载均衡_第19张图片

[root@server1 haproxy]# vim haproxy.cfg   
[root@server1 haproxy]# /etc/init.d/haproxy reload

配置文件:
Linux:Haproxy的负载均衡_第20张图片
测试:
输入server1的ip会跳转到百度界面
Linux:Haproxy的负载均衡_第21张图片

3.读写分离

需要上传一张图片(物理机到server2)
[root@server1 haproxy]# vim haproxy.cfg 
[root@server1 haproxy]# /etc/init.d/haproxy reload
[root@server2 ~]# cd /var/www/html
[root@server2 html]# mkdir images
[root@server2 html]# cd 
[root@server2 ~]# mv redhat.jpg /var/www/html/images/

配置文件:
Linux:Haproxy的负载均衡_第22张图片
测试:
Linux:Haproxy的负载均衡_第23张图片

4.上传

[root@foundation41 Desktop]# scp -r  upload/ [email protected]:/root
[root@foundation41 Desktop]# scp -r  upload/ [email protected]:/root
[root@server2 ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  upload
[root@server2 ~]# cd upload/
[root@server2 upload]# mv * /var/www/html/
[root@server2 upload]# cd ..
[root@server2 ~]# mv upload/  /var/www/html/
[root@server2 ~]# cd /var/www/html/
[root@server2 html]# vim upload_file.php 
[root@server2 html]# /etc/init.d/httpd restart
server2和server3同样的做法

配置文件:
Linux:Haproxy的负载均衡_第24张图片
在 upload_file.php 文件
Linux:Haproxy的负载均衡_第25张图片
测试:
Linux:Haproxy的负载均衡_第26张图片
Linux:Haproxy的负载均衡_第27张图片
Linux:Haproxy的负载均衡_第28张图片

你可能感兴趣的:(Linux:Haproxy的负载均衡)