HAProxy四层负载
针对除HTTP以外的TCP协议应用服务访问的应用场景
MySQL Redis Memcached RabbitMQ
四层负载示例
注意:如果使用frontend和backend,一定在前端和后台段中都指定mode tcp
[root@ubuntu2004 ~]#vim /etc/haproxy/conf.d/ssh.cfg
listen ssh
bind 192.168.10.100:2222
mode tcp
server ssh1 10.0.0.101:22 check
server ssh2 10.0.0.102:22 check
[root@ubuntu2004 ~]#systemctl restart haproxy.service
[root@ubuntu2004 ~]#ssh -p 2222 192.168.10.100 连接上看ip 为101
退出再次连接查看ip为102
HAProxy Https实现
haproxy支持https,基于性能考虑,证书是在后端服务器比如nginx上实现,即用户到haproxy利用tcp模式 再到后端服务器
Haproxy 可以实现 Https 的证书安全,即从用户到haproxy为https,从haproxy到后端服务器用http通信
第一步:证书制作(脚本)
[root@ubuntu2004 ~]#mkdir /etc/haproxy/certs
#!/bin/bash
#
CA_SUBJECT="/O=meng/CN=ca.meng.com"
SUBJECT="/C=CN/ST=henan/L=zhengzhou/O=meng/CN=www.meng.com"
SERIAL=34
EXPIRE=202002
FILE=www.meng.com
openssl req -x509 -newkey rsa:2048 -subj $CA_SUBJECT -keyout ca.key -nodes -days 202002 -out ca.crt
openssl req -newkey rsa:2048 -nodes -keyout ${FILE}.key -subj $SUBJECT -out ${FILE}.crt
openssl x509 -req -in ${FILE}.crt -CA ca.crt -CAkey ca.key -set_serial $SERIAL -days $EXPIRE -out ${FILE}.crt
chmod 600 ${FILE}.key ca.key
把脚本拉入certs生成证书并把 meng.org.crt meng.org.key合成pem文件
[root@ubuntu2004 certs]#cat meng.org.key meng.org.crt > meng.org.pem
[root@ubuntu2004 certs]#ls
ca.crt ca.key 'cer_(2).sh' meng.org.crt meng.org.key meng.org.pem
第二步:配置haproxy的derver文件
frontend www.meng.com
bind 192.168.10.100:80
bind 192.168.10.100:443 ssl crt /etc/haproxy/certs/meng.org.pem
acl meng.org_domain hdr_dom(host) -i www.meng.org
redirect scheme https if !{ ssl_fc } meng.org_domain
use_backend www.meng.org if meng.org_domain
default_backend www.meng.com
backend www.meng.org
server web1 10.0.0.101:80 weight 1 check
backend www.meng.com
server web2 10.0.0.102:80 weight 1 check
[root@ubuntu2004 certs]#systemctl restart haproxy.service
去windos解析访问 www.meng.org
192.168.10.100 www.meng.org www.meng.com