HAProxy基础配置-基于http的反向代理

         HAProxy基础配置-基于七层(http)的反向代理案例实战

                                   作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

 

 

一.安装apache httpd服务器

1>.试验架构说明

node102.yinzhengjie.org.cn:
  Haproxy服务器

node105.yinzhengjie.org.cn:
  测试服务器,模拟客户端
node106.yinzhengjie.org.cn:   Apache httpd服务器

node107.yinzhengjie.org.cn:
  Apache httpd服务器

2>.虚拟机配置

[[email protected] ~]# uname -r
3.10.0-957.el7.x86_64
[[email protected] ~]# 
[[email protected] ~]# uname -m
x86_64
[[email protected] ~]# 
[[email protected] ~]# cat /etc/redhat-release 
CentOS Linux release 7.6.1810 (Core) 
[[email protected] ~]# 
[[email protected] ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.8G         81M        1.6G        8.5M        122M        1.6G
Swap:          2.0G          0B        2.0G
[[email protected] ~]# 
[[email protected] ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

172.30.1.101 node101.yinzhengjie.org.cn node101.yinzhengjie.com
172.30.1.102 node102.yinzhengjie.org.cn
172.30.1.103 node103.yinzhengjie.org.cn
172.30.1.104 node104.yinzhengjie.org.cn
172.30.1.105 node105.yinzhengjie.org.cn
172.30.1.106 node106.yinzhengjie.org.cn
172.30.1.107 node107.yinzhengjie.org.cn
172.30.1.108 node108.yinzhengjie.org.cn
[[email protected] ~]# 
[[email protected] ~]# 

3>.安装httpd服务

[[email protected] ~]# yum -y install httpd
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirror.bit.edu.cn
 * extras: mirror.bit.edu.cn
 * updates: mirror.bit.edu.cn
base                                                                                | 3.6 kB  00:00:00     
extras                                                                              | 2.9 kB  00:00:00     
updates                                                                             | 2.9 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                       | 165 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                                   | 153 kB  00:00:00     
(3/4): base/7/x86_64/primary_db                                                     | 6.0 MB  00:00:01     
(4/4): updates/7/x86_64/primary_db                                                  | 5.9 MB  00:00:02     
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-90.el7.centos for package: httpd-2.4.6-90.el7.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-90.el7.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-90.el7.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-5.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

===========================================================================================================
 Package                   Arch                 Version                           Repository          Size
===========================================================================================================
Installing:
 httpd                     x86_64               2.4.6-90.el7.centos               base               2.7 M
Installing for dependencies:
 apr                       x86_64               1.4.8-5.el7                       base               103 k
 apr-util                  x86_64               1.5.2-6.el7                       base                92 k
 httpd-tools               x86_64               2.4.6-90.el7.centos               base                91 k

Transaction Summary
===========================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 3.0 M
Installed size: 9.9 M
Downloading packages:
(1/4): apr-1.4.8-5.el7.x86_64.rpm                                                   | 103 kB  00:00:00     
(2/4): apr-util-1.5.2-6.el7.x86_64.rpm                                              |  92 kB  00:00:00     
(3/4): httpd-tools-2.4.6-90.el7.centos.x86_64.rpm                                   |  91 kB  00:00:00     
(4/4): httpd-2.4.6-90.el7.centos.x86_64.rpm                                         | 2.7 MB  00:00:00     
-----------------------------------------------------------------------------------------------------------
Total                                                                      3.7 MB/s | 3.0 MB  00:00:00     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-5.el7.x86_64                                                                  1/4 
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                                         2/4 
  Installing : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                              3/4 
  Installing : httpd-2.4.6-90.el7.centos.x86_64                                                                                    4/4 
  Verifying  : apr-1.4.8-5.el7.x86_64                                                                                              1/4 
  Verifying  : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                              2/4 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                                         3/4 
  Verifying  : httpd-2.4.6-90.el7.centos.x86_64                                                                                    4/4 

Installed:
  httpd.x86_64 0:2.4.6-90.el7.centos                                                                                                   

Dependency Installed:
  apr.x86_64 0:1.4.8-5.el7             apr-util.x86_64 0:1.5.2-6.el7             httpd-tools.x86_64 0:2.4.6-90.el7.centos            

Complete!
[[email protected] ~]# 
[[email protected] ~]# yum -y install httpd
[[email protected] ~]# yum -y install httpd
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: mirrors.aliyun.com
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: mirrors.aliyun.com
base                                                                                                                                                 | 3.6 kB  00:00:00     
extras                                                                                                                                               | 2.9 kB  00:00:00     
updates                                                                                                                                              | 2.9 kB  00:00:00     
(1/4): base/7/x86_64/group_gz                                                                                                                        | 165 kB  00:00:00     
(2/4): extras/7/x86_64/primary_db                                                                                                                    | 153 kB  00:00:00     
(3/4): updates/7/x86_64/primary_db                                                                                                                   | 5.9 MB  00:00:01     
base/7/x86_64/primary_db       FAILED                                          ==================================                         ]  224 B/s | 7.3 MB  06:26:13 ETA 
http://mirrors.nju.edu.cn/centos/7.7.1908/os/x86_64/repodata/04efe80d41ea3d94d36294f7107709d1c8f70db11e152d6ef562da344748581a-primary.sqlite.bz2: [Errno 12] Timeout on http
://mirrors.nju.edu.cn/centos/7.7.1908/os/x86_64/repodata/04efe80d41ea3d94d36294f7107709d1c8f70db11e152d6ef562da344748581a-primary.sqlite.bz2: (28, 'Operation too slow. Less than 1000 bytes/sec transferred the last 30 seconds')Trying other mirror.
(4/4): base/7/x86_64/primary_db                                                                                                                      | 6.0 MB  00:00:00     
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed
--> Processing Dependency: httpd-tools = 2.4.6-90.el7.centos for package: httpd-2.4.6-90.el7.centos.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-90.el7.centos.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-90.el7.centos.x86_64
--> Running transaction check
---> Package apr.x86_64 0:1.4.8-5.el7 will be installed
---> Package apr-util.x86_64 0:1.5.2-6.el7 will be installed
---> Package httpd-tools.x86_64 0:2.4.6-90.el7.centos will be installed
--> Finished Dependency Resolution

Dependencies Resolved

============================================================================================================================================================================
 Package                                   Arch                                 Version                                            Repository                          Size
============================================================================================================================================================================
Installing:
 httpd                                     x86_64                               2.4.6-90.el7.centos                                base                               2.7 M
Installing for dependencies:
 apr                                       x86_64                               1.4.8-5.el7                                        base                               103 k
 apr-util                                  x86_64                               1.5.2-6.el7                                        base                                92 k
 httpd-tools                               x86_64                               2.4.6-90.el7.centos                                base                                91 k

Transaction Summary
============================================================================================================================================================================
Install  1 Package (+3 Dependent packages)

Total download size: 3.0 M
Installed size: 9.9 M
Downloading packages:
(1/4): apr-1.4.8-5.el7.x86_64.rpm                                                                                                                    | 103 kB  00:00:00     
(2/4): apr-util-1.5.2-6.el7.x86_64.rpm                                                                                                               |  92 kB  00:00:00     
(3/4): httpd-tools-2.4.6-90.el7.centos.x86_64.rpm                                                                                                    |  91 kB  00:00:00     
(4/4): httpd-2.4.6-90.el7.centos.x86_64.rpm                                                                                                          | 2.7 MB  00:00:01     
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Total                                                                                                                                       1.8 MB/s | 3.0 MB  00:00:01     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : apr-1.4.8-5.el7.x86_64                                                                                                                                   1/4 
  Installing : apr-util-1.5.2-6.el7.x86_64                                                                                                                              2/4 
  Installing : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                                                                   3/4 
  Installing : httpd-2.4.6-90.el7.centos.x86_64                                                                                                                         4/4 
  Verifying  : apr-1.4.8-5.el7.x86_64                                                                                                                                   1/4 
  Verifying  : httpd-tools-2.4.6-90.el7.centos.x86_64                                                                                                                   2/4 
  Verifying  : apr-util-1.5.2-6.el7.x86_64                                                                                                                              3/4 
  Verifying  : httpd-2.4.6-90.el7.centos.x86_64                                                                                                                         4/4 

Installed:
  httpd.x86_64 0:2.4.6-90.el7.centos                                                                                                                                        

Dependency Installed:
  apr.x86_64 0:1.4.8-5.el7                          apr-util.x86_64 0:1.5.2-6.el7                          httpd-tools.x86_64 0:2.4.6-90.el7.centos                         

Complete!
[[email protected] ~]# 
[[email protected] ~]# yum -y install httpd

4>.准备测试数据

[[email protected] ~]# ll /var/www/html/
total 0
[[email protected] ~]# 
[[email protected] ~]# echo "

node106.yinzhengjie.org.cn

" > /var/www/html/index.html [[email protected] ~]# [[email protected] ~]# mkdir /var/www/html/{app01,app02} [[email protected] ~]# [[email protected] ~]# echo "172.30.1.106 app01" > /var/www/html/app01/index.html [[email protected] ~]# [[email protected] ~]# echo "172.30.1.106 app02" > /var/www/html/app02/index.html [[email protected] ~]# [[email protected] ~]# ll /var/www/html/ -R /var/www/html/: total 4 drwxr-xr-x 2 root root 24 Jan 1 18:04 app01 drwxr-xr-x 2 root root 24 Jan 1 18:05 app02 -rw-r--r-- 1 root root 36 Jan 1 18:03 index.html /var/www/html/app01: total 4 -rw-r--r-- 1 root root 19 Jan 1 18:04 index.html /var/www/html/app02: total 4 -rw-r--r-- 1 root root 19 Jan 1 18:05 index.html [[email protected] ~]#
[[email protected] ~]# ll /var/www/html/
total 0
[[email protected] ~]# 
[[email protected] ~]# echo "

node107.yinzhengjie.org.cn

" > /var/www/html/index.html [[email protected] ~]# [[email protected] ~]# mkdir /var/www/html/{app01,app02} [[email protected] ~]# [[email protected] ~]# echo "172.30.1.107 app01" > /var/www/html/app01/index.html [[email protected] ~]# [[email protected] ~]# echo "172.30.1.107 app02" > /var/www/html/app02/index.html [[email protected] ~]# [[email protected] ~]# ll /var/www/html/ -R /var/www/html/: total 4 drwxr-xr-x 2 root root 24 Jan 2 06:57 app01 drwxr-xr-x 2 root root 24 Jan 2 06:59 app02 -rw-r--r-- 1 root root 36 Jan 2 06:56 index.html /var/www/html/app01: total 4 -rw-r--r-- 1 root root 19 Jan 2 06:57 index.html /var/www/html/app02: total 4 -rw-r--r-- 1 root root 19 Jan 2 06:59 index.html [[email protected] ~]#
[[email protected] ~]# ll /var/www/html/ -R

5>.启动httpd服务

[[email protected] ~]# ss -ntl
State       Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN      0      128                                     *:22                                                  *:*                  
LISTEN      0      128                                    :::22                                                 :::*                  
[[email protected] ~]# 
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# 
[[email protected] ~]# ss -ntl
State       Recv-Q Send-Q                      Local Address:Port                                     Peer Address:Port              
LISTEN      0      128                                     *:80                                                  *:*                  
LISTEN      0      128                                     *:22                                                  *:*                  
LISTEN      0      128                                    :::22                                                 :::*                  
[[email protected] ~]# 
[[email protected] ~]# ss -ntl
State      Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port              
LISTEN     0      128                                      *:22                                                   *:*                  
LISTEN     0      128                                     :::22                                                  :::*                  
[[email protected] ~]# 
[[email protected] ~]# systemctl start httpd
[[email protected] ~]# 
[[email protected] ~]# ss -ntl
State      Recv-Q Send-Q                       Local Address:Port                                      Peer Address:Port              
LISTEN     0      128                                      *:80                                                   *:*                  
LISTEN     0      128                                      *:22                                                   *:*                  
LISTEN     0      128                                     :::22                                                  :::*                  
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# systemctl start httpd

6>.模拟客户端访问node106.yinzhengjie.org.cn的服务

[[email protected] ~]# curl http://node106.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node106.yinzhengjie.org.cn/app01/index.html 172.30.1.106 app01 [[email protected] ~]# [[email protected] ~]# curl http://node106.yinzhengjie.org.cn/app02/index.html 172.30.1.106 app02 [[email protected] ~]# [[email protected] ~]# curl http://node107.yinzhengjie.org.cn

node107.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node107.yinzhengjie.org.cn/app01/index.html 172.30.1.107 app01 [[email protected] ~]# [[email protected] ~]# curl http://node107.yinzhengjie.org.cn/app02/index.html 172.30.1.107 app02 [[email protected] ~]# [[email protected] ~]#

 

二.在haproxy节点上配置反向代理

1>.基于源码方式安装haproxy服务器

博主推荐阅读:
  https://www.cnblogs.com/yinzhengjie/p/12113144.html

2>.编辑haproxy服务的配置文件

[[email protected] ~]# cat /etc/haproxy/haproxy.cfg 
global
maxconn 100000
chroot /yinzhengjie/softwares/haproxy
#stats socket /var/lib/haproxy/haproxy.sock mode 600 level admin
user haproxy
group haproxy
daemon
nbproc 4
cpu-map 1 0
cpu-map 2 1
cpu-map 3 2
cpu-map 4 3
nbthread 2
pidfile /yinzhengjie/softwares/haproxy/haproxy.pid
log 127.0.0.1 local5 info

defaults
option http-keep-alive
option  forwardfor
option redispatch
option abortonclose
maxconn 100000
mode http
timeout connect 300000ms
timeout client  300000ms
timeout server  300000ms

listen stats
 mode http
 bind 0.0.0.0:9999
 stats enable
 log global
 stats uri     /haproxy-status
 stats auth    haadmin:q1w2e3r4ys

#frontend web
# bind 172.30.1.102:80
# use_backend myweb

#backend myweb
# server web01 172.30.1.106:80 weight 10 check inter 3s fall 3 rise 5
# server web02 172.30.1.107:80 weight  5 check inter 3s fall 3 rise 5

#可以使用listen指令来代替frontend和backend的配置部分
listen myweb
 bind 172.30.1.102:80
 server web01 172.30.1.106:80 weight 10 check inter 3s fall 3 rise 5
 server web02 172.30.1.107:80 weight  5 check inter 3s fall 3 rise 5
[[email protected] ~]# 
[[email protected] ~]# 

3>.启动haproxy服务

[[email protected] ~]# netstat -untalp | grep haproxy
[[email protected] ~]# 
[[email protected] ~]# systemctl start haproxy
[[email protected] ~]# 
[[email protected] ~]# netstat -untalp | grep haproxy
tcp        0      0 0.0.0.0:9999            0.0.0.0:*               LISTEN      20913/haproxy       
tcp        0      0 172.30.1.102:80         0.0.0.0:*               LISTEN      20913/haproxy       
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20913/haproxy       
udp        0      0 0.0.0.0:56745           0.0.0.0:*                           20911/haproxy       
[[email protected] ~]# 
[[email protected] ~]# 

 

三.访问haproxy服务器

1>.访问"http://node102.yinzhengjie.org.cn"同一个URL10次,由于权重的问题,因此我们会发现node106.yinzhengjie.org.cn节点响应次数较多。

[[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node107.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node106.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node107.yinzhengjie.org.cn

[[email protected] ~]# [[email protected] ~]# curl http://node102.yinzhengjie.org.cn

node107.yinzhengjie.org.cn

[[email protected] ~]#

2>.访问"http://node102.yinzhengjie.org.cn/app01/index.html"同一个URL10次,由于权重的问题,因此我们会发现node106.yinzhengjie.org.cn节点响应次数较多。

[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.107 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.107 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app01/index.html
172.30.1.106 app01
[[email protected] ~]# 

3>.访问"http://node102.yinzhengjie.org.cn/app02/index.html"同一个URL10次,由于权重的问题,因此我们会发现node106.yinzhengjie.org.cn节点响应次数较多。

[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.107 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.107 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.107 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.107 app02
[[email protected] ~]# 
[[email protected] ~]# curl http://node102.yinzhengjie.org.cn/app02/index.html
172.30.1.106 app02
[[email protected] ~]# 

 

你可能感兴趣的:(HAProxy基础配置-基于http的反向代理)