RH358学习笔记--8(使用HAProxy终止HTTPS流量和并进行负载均衡)

RH358学习

配置网络接口

在NetworkManager:
device设备是网络接口。
connection连接是可以为设备配置的设置集合。
对于任何一个设备,同一时间只有一个连接是活动的。可能存在多个连接,以供不同设备使用,或允许为同一设备更改配置。
每个连接都有一个标识它的名称或ID。
/etc/sysconfig/network-scripts/ifcfg-name文件存储连接的持久配置,其中name是连接的名称。当连接名中包含空格时,文件名中的空格将被替换为下划线。如果需要,这个文件可以手工编辑。
nmcli实用程序从shell提示符创建和编辑连接文件。

 [student@workstation ~]$ nmcli con show
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  bea96051-88cb-3074-b4bc-0be012513593  ethernet  eth0   
virbr0              7ad2adce-94c9-43aa-94f3-81270cfa44cf  bridge    virbr0

 
[student@workstation ~]$ nmcli con show --active
NAME                UUID                                  TYPE      DEVICE
Wired connection 1  bea96051-88cb-3074-b4bc-0be012513593  ethernet  eth0   
virbr0              7ad2adce-94c9-43aa-94f3-81270cfa44cf  bridge    virbr0
[student@workstation ~]$ ip addr show Wired connection 1
Error: either "dev" is duplicate, or "connection" is a garbage.

[student@workstation ~]$ ip addr show virbr0
3: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
    link/ether 52:54:00:98:7a:ff brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
       valid_lft forever preferred_lft forever


[student@workstation ~]$ ip addr show eth0

① 活动接口处于UP状态。
② 链路/以太线指定设备的硬件(MAC)地址。
③ inet行显示了IPv4地址、它的网络前缀长度和范围。
④ inet行显示了IPv6地址、它的网络前缀长度和范围。

(1)HAProxy描述

     HAProxy是一个负载均衡器,可以将其配置为一个HTTPS终止程序,以从后端web服务器卸载TLS处理。将HAProxy部署在这些web服务器的前面。而不是直接访问web服务器,web客户端联系HAProxy。代表这些客户端,HAProxy从后端web服务器检索并返回所请求的对象。

终止HTTPS连接
下面的模式说明了如何使用HAProxy作为web服务器前的HTTPS终止程序。

1. web 客户端使用 HTTPS 从 HAProxy 请求 web 文档。对于客户端,HAProxy 就像 web 服务器
2. HAProxy 使用其 TLS 证书和私钥来解密 HTTPS 流量
3. HAProxy 以纯文本形式将请求转发到后端 web 服务
4. 后端 web 服务将其回复发送到 HAProxy
5. HAProxy 使用其 TLS 证书和私钥来加密回复,发回到 web 客户端

负载均衡请求
下面的模式说明了HAProxy如何作为负载均衡器工作。

 维护会话
当与web应用程序交互时,应用程序通常使用某种HTTP会话抽象来维护用户状态,通常使用HTTP cookie。因为HAProxy可以将您的请求定向到任何web服务器,所以会话信息必须是全局可用的,而不仅仅是在到达的第一个服务器上。

HAProxy选择负载均衡算法

roundrobin(轮训)
该算法依次向每个web服务器发送请求。
当web交付静态内容时,或者当web应用程序运行在后端服务器上,将用户会话保存在全局存储中时,将使用它。

source
该算法使用客户端的IP地址来选择后端服务器。使用这种算法,HAProxy总是将客户端请求转发到同一台服务器。当运行在后端服务器上的web应用程序不能全局管理会话时,可以使用此算法。

(2)部署和配置 HAProxy

安装haproxy包。
[root@host ~]# yum install haproxy

启动haproxy systemd服务。
[root@host ~]# systemctl enable --now haproxy

global:global部分定义了与haproxy进程相关的参数,比如用于守护进程的Linux用户帐户。通常不需要改变这个部分的任何内容。
defaults:defaults节为其他节的参数设置默认值。可以在下面的部分中重写这些参数
frontend name:frontend部分配置HAProxy的面向客户端。在本节中,将指定监听传入请求的网络端口。这也是将HAProxy配置为HTTPS终止程序的地方。
backend name:backend部分列出了所有后端web服务器。在本节中,您将指定用于检查后端服务器健康状况的负载均衡算法和机制。
listen name:listen部分允许以更紧凑的方式定义前端和后端配置。当设置很简单时,可以使用单个侦听部分,而不是前端和后端部分。

--------------------------展示了frontend和backend部分-----------------------------

 listen 来配置更精简版本。

listen my-clients-and-web-farm
bind *:80
balance roundrobin
server web1 192.168.0.101:80 check inter 1s
server web2 192.168.0.102:80 check inter 1s
server web3 192.168.0.103:80 check inter 1s

配置HAProxy为HTTPS终结程序

在将HAProxy配置为HTTPS终止程序之前,请先获取服务器的TLS证书和私钥。HAProxy希望将证书和密钥放在一个文件中,因此可能必须创建该文件。因为该文件包含私钥,请将其存储在一个安全的目录中:

 [root@yuan ~]# mkdir /etc/pki/haproxy/
[root@yuan ~]# chmod 700 /etc/pki/haproxy/
[root@yuan~]# cat www.example.com.crt www.example.com.key > /etc/pki/haproxy/haproxy.pem

在 /etc/haproxy/haproxy.cfg配置文件中,在front一节中定义了HTTPS终止程序的配置。

 HAProxy配置SELinux
SELinux允许HAProxy绑定并连接到http_cache_port_t和http_port_t端口类型。可以使用semanage port -l命令列出相关联的端口号。

[root@yuan ~]# semanage port -l | grep -w -e http_cache_port_t -e http_port_t | grep tcp

 要让HAProxy监听或连接到任何其他端口,可将haproxy_connect_any SELinux布尔值设置为on
[root@yuan ~]# setsebool -P haproxy_connect_any on

(3)在Varnish前面配置HAProxy

HAProxy和Varnish一起使用是典型的配置。在这种设置中,HAProxy终止HTTPS连接,然后将流量以纯文本的形式转发给Varnish。Varnish将请求转发到后端web服务器,缓存响应,然后将它们发送回HAProxy以交付给web客户端。

 

HAProxy和Varnish都将X-Forwarded-For HTTP报头插入到请求中,而且Varnish将HAProxy视为一个web客户端,所以正确配置报头是很复杂的。为了简化设置,HAProxy开发人员创建了HTTP PROXY协议。

 配置代理协议的HAProxy
在backend部分,设置send-proxy-v2选项以使用Varnish激活HTTP PROXY协议。

backend my-varnish
server varnish 192.168.0.42:6081 send-proxy-v2 check inter 1s

为代理协议配置Varnish

对于Varnish,在varnishd命令的-a选项的末尾添加PROXY关键字。为此,通过创建一个drop-in目录重新配置varnish systemd服务

[root@yuan ~]# mkdir /etc/systemd/system/varnish.service.d/
[root@yuan ~]# vim /etc/systemd/system/varnish.service.d/httpport.conf

[Service]
ExecStart=
ExecStart=/usr/sbin/varnishd -a :6081,PROXY -f /etc/varnish/default.vcl -s malloc,256m

[root@yuan ~]# systemctl daemon-reload
[root@yuan ~]# systemctl restart varnish

(4)监控和管理HAProxy

HAProxy提供了一个HTML统计报表页面。在该页面中,可以检查和监视安装的行为。

/etc/haproxy/haproxy.cfg 配置文件在 global 部分下定义UNIX socket。若要激活 admin 模式,将 level admin 选项添加到 stats socket 指令中。 

原文地址:https://www.cnblogs.com/yyuuee/p/15151354.html