用haporxy端口转发给kvm虚拟机,实现一个公网IP对多个kvm虚拟机的访问
分类:运用配置
69
HAProxy 是一款高性能的负载均衡器和代理服务器,可以用于端口转发和负载均衡。按照以下步骤操作:
安装 HAProxy:
bind *:[公网端口]
mode tcp
default_backend [后端名称]
backend [后端名称]
mode tcp
balance roundrobin
systemctl enable haproxy
d.如果有防火墙,则需要放行新端口
frontend gt3_frontend
bind *:443
mode tcp
default_backend back3
backend back3
mode tcp
balance roundrobin
server my_server 192.168.122.81:443 check send-proxy
frontend gt4_frontend
bind *:80
mode tcp
default_backend back4
backend back4
mode tcp
balance roundrobin
listen 80 proxy_protocol;
listen 443 ssl proxy_protocol;
其它场景,如ssh则默认配置即可,如果不需要真实IP。
frontend gt1_frontend
bind *:8122
mode tcp
default_backend back1
backend back1
mode tcp
balance roundrobin
server my_server 192.168.122.81:22 check
安装 HAProxy:
yum install haproxy
编辑 /etc/haproxy/haproxy.cfg 文件,为每个 KVM 虚拟机配置端口转发规则。在文件末尾添加如下内容:
bind *:[公网端口]
mode tcp
default_backend [后端名称]
backend [后端名称]
mode tcp
balance roundrobin
server [服务器名称] [虚拟机IP:虚拟机端口] check
启动并使 HAProxy 开机自启:
systemctl enable haproxy
d.如果有防火墙,则需要放行新端口
firewall-cmd --zone=public --add-port=443/tcp --permanent
firewall-cmd --reload
如果在nginx http上,要从kvm获取真实IP,即日志的remote_addr是真实IP而不是现在的haproxy网关IP,需要加send-proxy
frontend gt3_frontend
bind *:443
mode tcp
default_backend back3
backend back3
mode tcp
balance roundrobin
server my_server 192.168.122.81:443 check send-proxy
frontend gt4_frontend
bind *:80
mode tcp
default_backend back4
backend back4
mode tcp
balance roundrobin
server my_server 192.168.122.81:80 check send-proxy
listen 80 proxy_protocol;
listen 443 ssl proxy_protocol;
set_real_ip_from 192.168.122.1;
real_ip_header proxy_protocol;
原来可能只是listen,现在要在Listen后边加 proxy_protocol并加两行header设置,nginx日志格式则不需要变动,remote_addr会变成真实IP。其它场景,如ssh则默认配置即可,如果不需要真实IP。
frontend gt1_frontend
bind *:8122
mode tcp
default_backend back1
backend back1
mode tcp
balance roundrobin
server my_server 192.168.122.81:22 check