haproxy详解

haproxy    负载均衡服务

4台主机   同网段   能ping通

yum

负载均衡

四层负载    lvs   haproxy

四层负载是基于ip和端口实现的     速度比较快   但是不安全

原理:

调度器接收到客户端的报文,只是会解析到传输层,就可以对报文进行负载,调度器不把报文进行详细解析,直接转发给后端的服务节点,服务节点于客户端建立tcp连接进行数据的响应

 

                            四层负载

七层负载   haproxy

七层负载会对客户端的请求包进行解析  并且能够根据url解析出客户端需要的数据,会把客户端的请求交给到能够处理请求的主机    速度比较慢    但是安全

原理:

调度器收到客户端的请求报文后,需要将数据的报文解析到应用层,那么调度器和客户端建立一次tcp连接,根据客户端请求的数据进行调度,调度器将请求的报文转发给后端服务节点后,服务节点也需要和客户端建立tcp连接进行数据响应

 

                               七层负载

 

                              两者区别

haproxy七层  ---四层

服务如果支持七层负载  那么也支持四层负载    如果只支持四层服务  肯定不能实现七层负载

优点:

1.可以对后端主机进行健康检查    剔除后端宕机不健康的主机

2.单进程的工作模式

3.支持拒绝连接    防止ddos攻击

4.支持透明代理   反向代理

haproxy的调度算法

roundrobin   动态轮询      weight     不需要重启haproxy  生效

static-rr   静态轮询       weight   需要重启haproxy  才能生效

leastconnect  最小连接

source   源地址散列

(七层负载)

 

                       haproxy负载这个写的tomcat可以看成apache

haproxy负载web

client    192.168.2.10

haproxy  192.168.2.20

web1   192.168.2.60

web2   192.168.2.70

web1

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# echo 1111 > /var/www/html/index.html

[root@localhost ~]# systemctl restart httpd

[root@localhost ~]# curl 192.168.2.60

1111

web2

[root@localhost ~]# yum -y install httpd

[root@localhost ~]# echo 2222 > /var/www/html/index.html

[root@localhost ~]# systemctl restart httpd

[root@localhost ~]# curl 192.168.2.70

2222

haproxy

[root@localhost ~]# yum -y install pcre-devel bzip2-devel

[root@localhost ~]# tar -zxf haproxy-1.4.24.tar.gz

[root@localhost ~]# cd haproxy-1.4.24/

[root@localhost haproxy-1.4.24]# uname -r

3.10.0-862.el7.x86_64

[root@localhost haproxy-1.4.24]# make TARGET=linux310 PREFIX=/usr/local/haproxy && make install PREFIX=/usr/local/haproxy

#启动时需要的文件   软连接必须放在/usr/sbin/下

[root@localhost haproxy-1.4.24]# ln -s /usr/local/haproxy/sbin/haproxy /usr/sbin/haproxy

#配置文件

[root@localhost haproxy-1.4.24]# mkdir /etc/haproxy

[root@localhost haproxy-1.4.24]# cp examples/haproxy.cfg /etc/haproxy/

#脚本文件

[root@localhost haproxy-1.4.24]# cp examples/haproxy.init /etc/rc.d/init.d/haproxy

[root@localhost haproxy-1.4.24]# chmod a+x /etc/rc.d/init.d/haproxy

[root@localhost haproxy-1.4.24]# chkconfig --add haproxy

负载web

[root@localhost haproxy-1.4.24]# cd /etc/haproxy/

[root@localhost haproxy]# vim haproxy.cfg

 8         #chroot /usr/share/haproxy    #工作目录

26 listen webservers 0.0.0.0:80   #集群的名称  随便起  0.0.0.0:80监听的ip和端口

 27         balance roundrobin    #采用动态轮询

 28         option httpchk GET /index.html  #健康检查的方式  用get访问后端页面

 29         server web_one 192.168.2.60:80 check inter 2000    rise 3 fall 3

 30         server web_two 192.168.2.70:80 check inter 2000     rise 3 fall 3

server   添加后端真实的节点

web_one    #后端节点的名称  随便起

后端的ip

check    使用健康检查

inter   2000   2000毫秒检查一次

 rise 3    #3次成功   服务器正常

fall 3   #3次失败   服务器不正常

[root@localhost haproxy]# systemctl restart haproxy

[root@localhost haproxy]# netstat -anput | grep haproxy

tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      60719/haproxy   client:

访问haproxy的ip

[root@localhost ~]# curl 192.168.2.20

11111

[root@localhost ~]# curl 192.168.2.20

22222

haproxy代理mariadb

使用四层负载

client   192.168.2.10

haproxy    192.168.2.20

mariadb    192.168.2.60   web

mariadb    192.168.2.70   web

mariadb两台

[root@localhost ~]# yum -y install mariadb*

[root@localhost ~]# systemctl start mariadb

[root@localhost ~]# mysql -uroot -p

MariaDB [(none)]> grant all on *.* to "root"@"192.168.2.%" identified by "123.com";

MariaDB [(none)]> flush privileges;

mariadb1:

MariaDB [(none)]> create database one;

Query OK, 1 row affected (0.00 sec)

mariadb2:

MariaDB [(none)]> create database two;

Query OK, 1 row affected (0.01 sec)

haproxy

[root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg

 17         mode    tcp    #四层负载

 18         option  tcplog

 26 listen dbservers 0.0.0.0:3306

 27         balance roundrobin

 28         server db_one 192.168.2.60:3306 check port 3306  maxconn 1000

 29         server db_two 192.168.2.70:3306 check port 3306  maxconn 1000

[root@localhost haproxy]# systemctl restart haproxy

[root@localhost haproxy]# netstat -anput | grep haproxy

tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      63512/haproxy       

client:

[root@localhost ~]# yum -y install mariadb-server

[root@localhost ~]# mysql -uroot -p123.com -P3306 -h 192.168.2.20

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| one                |

| performance_schema |

| test               |

+--------------------+

[root@localhost ~]# mysql -uroot -p123.com -P3306 -h 192.168.2.20

MariaDB [(none)]> show databases;

+--------------------+

| Database           |

+--------------------+

| information_schema |

| mysql              |

| performance_schema |

| test               |

| two                |

+--------------------+

haproxy的图形界面

能够快速的检索出那个主机有问题

[root@localhost haproxy]# vim /etc/haproxy/haproxy.cfg

添加

listen admin_status   #添加其图形界面的配置

        bind 0.0.0.0:8080    #监听的端口

        mode http    #使用的协议

        option httplog

        stats  enable   #开启图形界面

        stats  refresh 30s    #刷新时间

        stats  uri /stats    #访问的路径

        stats  auth admin:123456    #登录图形界面的用户名和密码

        stats  realm welcome haproxy    #登录图形界面的提示信息

        stats  admin if TRUE    #只有认证成功  才可以看到图形界面

[root@localhost haproxy]# systemctl restart haproxy

[root@localhost haproxy]# firefox 192.168.2.20:8080/stats

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值