1、负载均衡
(1)四层负载均衡

(2)七层负载均衡

(3)四层七层区别
2、haproxy的安装和服务信息
A、haproxy实验环境部署
[root@haproxy ~]# dnf install haproxy -y



[root@server1 ~]# dnf install nginx -y
[root@server2 ~]# dnf install nginx -y



(1)、haproxy的基本配置信息
a.global:全局配置段 进程及安全配置相关的参数 性能调整相关参数 、Debug
b.proxies:代理配置段 defaults:为frontend, backend, listen提供默认配置 ,frontend:前端,相当于nginx中的server {} ,backend:后端,相当于nginx中的upstream {} ,listen:同时拥有前端和后端配置,配置简单,生产推荐使用。
B、haproxy的基本部署方法以及负载均衡的实现
修改配置文件
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg

#重启服务
[root@haproxy ~]# systemctl restart haproxy.service
测试:curl 172.25.254.100
C、haproxy的全局配置参数以及日志分离
设定多线程
[root@haproxy ~]# vim /etc/haproxy/haproxy.cfg








D、haproxy中的常用配置参数
[root@haproxy ~]# systemctl restart haproxy.service

[root@haproxy ~]# dnf install httpd -y
[root@haproxy ~]# vim /etc/httpd/conf/httpd.conf
backup ---sorryserver的端口\


3、算法
(1)、静态算法
(2)、动态算法
e.一致性hash,当服务器的总权重发生变化时,对调度结果影响是局部的,不会引起大的变动hash(o)mod n 该hash算法是动态的,支持使用 socat等工具进行在线权重调整,支持慢启动
f.uri 基于对用户请求的URI的左半部分或整个uri做hash,再将hash结果对总权重进行取模后 根据最终结果将请求转发到后端指定服务器适用于后端是缓存服务器场景 默认是静态算法,也可以通过hash-type指定map-based和consistent,来定义使用取模法还是一致性 hash
g、url_param对用户请求的url中的 params 部分中的一个参数key对应的value值作hash计算,并由服务器 总权重相除以后派发至某挑出的服务器,后端搜索同一个数据会被调度到同一个服务器,多用与电商 通常用于追踪用户,以确保来自同一个用户的请求始终发往同一个real server 如果无没key,将按roundrobin算法
h、hdr 针对用户每个http头部(header)请求中的指定信息做hash,此处由 name 指定的http首部将会被取出并做hash计算, 然后由服务器总权重取模以后派发至某挑出的服务器,如果无有效值,则会使用默认的轮询调度。








E、haproxy的热更新方法
# turn on stats unix socket
stats socket/var/lib/haproxy/stats mode 600 level admin
# utilize system-wide crypto-policiesssl-default-bind-cipherS PROFILE=SYSTEMssl-default-server-cipherS PROFILE=SYSTEM
[root@haproxy ~l# dnf install socat -y

[root@haproxy ~]# echo "help" | socat stdio /var/lib/haproxy/stats
url_param一致性hash配置
hdr一致性hash配置
F、haproxy的状态页面监控


4、基于cookie的会话保持
(1)配置选项
G、基于cookie的会话保持
修改配置文件并重启haproxy服务
测试
修改配置文件并重启haproxy服务
测试
(2)IP透传
H、IP透传
a、七层IP透传
如果把这行注释掉
测试访问
webserver1查看日志
去掉注释再次测试
server1停止nginx服务安装httpd服务
测试
查看日志
[root@server1 ~]# vim /etc/httpd/conf/httpd.conf


b、四层IP透传

nginx服务下的ip透传
[root@server2 ~]# cat /var/log/nginx/access.log



[root@server2 ~]# vim /etc/nginx/nginx.conf
IP未透传
修改nginx.conf配置文件
[root@server2 ~]# cat /var/log/nginx/access.log
apache服务下的ip透传
5、ACL
(1)、ACL配置选项
(2)、ACL-Name 名称
(3)、ACL-flags 匹配模式
(4)ACL-operator 具体操作符
I、ACL的常用参数
数据报文
J、ACL的应用实例
a、域名匹配
b、基于网段
frontend webcluster
bind *:80
mode http
acl test src 172.25.254.1 172.25.254.20 192.168.0.0/24
use_backend webcluster-host if test
default_backend default-host
backend wwebcluster-host
mode http
server webl 172.25.254.10:80 check inter 2 fall 2 rise 5
backend default-host
mode http
server web2 172.25.254.20:80 check inter 2 fall 2 rise 5
测试结果
[root@server1]# curl 172.25.254.100
default web server node10
[root@rs1 ~]# curl 192.168.0.101
RS1 192.168.0.101
[root@node1 ~]# curl 172.25.254.100
<html><body><h1>403 Forbidden</h1>
Request forbidden by administrative rules.
</body></html>
c、基于文件后缀名实现动静分离
frontend testacl
bind :80
mode http
acl url_static path_end -i .jpg .png .css .js .html
acl url_php path_end -i .php
use_backend static_host if url_static
use_backend php_host if url_php
default_backend default_webserver
backend static_host
mode http
server web1 172.25.254.10:80 check weight 1 inter 2 fall 3 rise 5
backend php_host
mode http
server web2 172.25.254.20:80 check weight 1 inter 2 fall 3 rise 5
backend default_webserver
mode http
server web1 172.25.254.10:80 check weight 1 inter 2 fall 3 rise 5
[root@server1 ~]# echo css 172.25.254.10 > /usr/share/nginx/html/index.css
[root@server2 ~]# echo php 172.25.254.20 > /var/www/html/index.php
[root@node1 ~]# curl 172.25.254.100/index.php
php 172.25.254.20
[root@node1 ~]# curl 172.25.254.100/index.css
css 172.25.254.10
K、自定义HAProxy 错误界面
[root@server1 ~]# systemctl stop httpd
[root@server2 ~]# systemctl stop nginx
浏览器访问172.25.254.100
错误页面重定向
L、Haproxy四层负载
[root@server1 ~]# dnf install mariadb-server -y
[root@server1 ~]# vim /etc/my.cnf.d/mariadb-server.cnf
[root@server2 ~]# dnf install mariadb-server -y
[root@haproxy ~]# mysql -ull -p -h 172.25.254.100
M、haproxy的https加密访问
全站加密
子配置文件