把Web集群由HTTP转换为HTTPS(LVS+HAProxy+SSL)(4)

在这个配置中,我们需要在前端和后台配置中同时使用TCP模式而不是HTTP模式。HAProxy只会把连接当作信息流来转发到其他服务器,而不会使用在HTTP请求上才能使用的功能。

首先,我们调整一下前端配置:

1

2

3

4

5

6

 

frontend wzlinux_ssl

    bind *:80

    bind *:443

    option tcplog

    mode tcp

    default_backend wzlinux

 

这里依然同时绑定80和443端口,以保证正常的HTTP连接和SSL连接都能工作。

正如上述提到的,转发一个安全连接而服务器而不作任何解码,我们需要使用TCP模式(mode tcp)。这也意味着我们需要设置tcp日志而不是默认的http日志(option tcplog)。

接着,我们要调整后台end配置。注意,我们还要将这个更改成TCP模式,并删除一些directives以避免因为修改/增加HTTP报头功能所带来的冲突: 

1

2

3

4

5

6

7

8

9

10

11

 

backend wzlinux

    mode tcp

    balance roundrobin

    option ssl-hello-chk

    server      wzlinux01  10.0.0.9:8080 check inter 15000 rise 2 fall 4

    server      wzlinux02  10.0.0.9:8081 check inter 15000 rise 2 fall 4

    server      wzlinux03  10.0.0.9:8082 check inter 15000 rise 2 fall 4

    server      wzlinux04  10.0.0.9:8083 check inter 15000 rise 2 fall 4

    server      wzlinux05  10.0.0.9:8084 check inter 15000 rise 2 fall 4

    server      wzlinux06  10.0.0.9:8085 check inter 15000 rise 2 fall 4

    server      wzlinux07  10.0.0.9:8086 check inter 15000 rise 2 fall 4

 

正如你所看到的,这里设置成了mode tcp - 前端和后台配置都需要设置成这个模式。

我们还删除了option forwardfor和http-request选项 - 这些不能用于TCP模式,而且我们也不能向已加密的请求添加报头,还有一些前面的默认配置也删去关于http的配置,这里不再演示。

为了检查正确与否,我们可以使用ssl-hello-chk来检查连接及它处理SSL(特别是SSLv3)连接的能力。

在这个例子中,我虚构了两个接受SSL证书的后台服务器。如果你有阅读过edition SSL certificates,你会看到如何将它们集成到 Apache 或 Nginx 来创建一个网络服务器后台,以处理SSL通信。使用SSL 穿越,不需要给HAProxy创建或使用SSL证书。后台服务器都能够处理SSL连接,如同只有一台服务器且没有使用负载均衡器那样。 

在关于如何设定lvs分发这里不再进行设定演示,大家可以查看我有关LVS的文章。

相关阅读:

通过LVS实现WEB站点的MySQL高可用

LVS+Apache+PHP+MySQL读写分离

MySQL LVS负载均衡

企业Web高可用集群实战之LVS+Keepalived+MySQL HA

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/c85529a2b94eb045bfd718aa8dcfa222.html