无法使用分配给我的机器的浮动 IP 地址访问 Web 服务

无法使用分配给我的机器的浮动 IP 地址访问 Web 服务

我有一台机器,我为其分配了一个浮动 IP 地址。该机器也是我的负载均衡器。我可以使用负载均衡器的 IP 地址轻松访问我的服务。

但是,我无法使用分配给我的负载均衡器机器的浮动 IP 地址访问它。

sudo nano /etc/haproxy/haproxy.cfg

defaults
        log     global
        mode    http
        option  httplog
        option  dontlognull
        timeout connect 5000
        timeout client  50000
        timeout server  50000
        errorfile 400 /etc/haproxy/errors/400.http
        errorfile 403 /etc/haproxy/errors/403.http
        errorfile 408 /etc/haproxy/errors/408.http
        errorfile 500 /etc/haproxy/errors/500.http
        errorfile 502 /etc/haproxy/errors/502.http
        errorfile 503 /etc/haproxy/errors/503.http
        errorfile 504 /etc/haproxy/errors/504.http

#HAProxy for web servers
frontend web-frontend
  bind IPADDRESSOFLOADBALANCER:80
  mode http
  default_backend web-backend

backend web-backend
  balance roundrobin
  server web-server1 IPADD1:80 check
  server web-server2 IPADD2:80 check
  server web-server3 IPADD3:80 check
  server web-server4 IPADD4:80 check

除了分配浮动 IP 地址外,我还需要做什么吗?我无法使用浮动 IP 地址访问服务。

在此处输入图片描述

答案1

我认为您不能,大多数人只绑定到一个 IP 地址或所有 IP 地址。您必须为每个使用相同后端的 IP 地址使用单独的前端。但每个人都只使用 *,这样就很好了。

答案2

我使用 Digtal Ocean 平台创建了我的 droplet。从此页面为其分配了一个浮动 IP。

https://cloud.digitalocean.com/networking/floating_ips?i=0eb956

现在我需要使用以下命令获取我的 droplet 的私有 IPip a

root@ubuntu-s-1vcpu-1gb-blr1-01:~# ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:a0:A:B:C:D brd ff:ff:ff:ff:ff:ff
inet PUBLICIP/20 brd E.F.G.H scope global eth0
valid_lft forever preferred_lft forever
inet *PRIVATEIP(X.X.X.X)*/16 brd X.X.I.J scope global eth0
valid_lft forever preferred_lft forever
inet6 2400:6180:ZZ:ZZ::ZZ:ZZZZ/64 scope global
valid_lft forever preferred_lft forever
inet6 fe80::50a0:9fff:fe54:add2/64 scope link
valid_lft forever preferred_lft forever
3: eth1: mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 9a:4b:a5:ZZ:ZZ:ZZ brd ff:ff:ff:ff:ff:ff
inet K.L.M.N/20 brd O.P.Q.R scope global eth1
valid_lft forever preferred_lft forever
inet6 fe80::984b:SSSS:TTTT:UUUU/64 scope link
valid_lft forever preferred_lft forever

我得到了浮动 IP,即 FLOATINGIPADDRESS

浮动 IP 通过 eth0 接口上的锚 IP 工作。我们可以使用相同的私有 IP,因为通过浮动 IP 发送的任何流量都将仅发送到此私有 IP,即inet *X.X.X.X*/16 brd

现在我需要 HAProxy 在我的 HAProxy cfg 文件中绑定到这个私有 IP。

sudo nano /etc/haproxy/haproxy.cfg

#HAProxy for web servers
frontend web-frontend
  bind PRIVATEIP(X.X.X.X):80
  bind LOADBALNCERIP:80
  mode http
  default_backend web-backend

backend web-backend

  http-request set-header X-Forwarded-Proto https if { ssl_fc } # For Proto
  http-request add-header X-Real-Ip %[src] # Custom header with src IP
  option forwardfor # X-forwarded-for

  balance roundrobin
  server web-server1 IP1:80 check
  server web-server2 IP2:80 check
  server web-server3 IP3:80 check
  server web-server4 IP4:80 check

listen stats
bind PRIVATEIP(X.X.X.X):8080
bind LOADBALNCERIP:8080
mode http
option forwardfor
option httpclose
stats enable
stats show-legends
stats refresh 5s
stats uri /stats
stats realm Haproxy\ Statistics
stats auth root:password            #Login User and Password for the monitoring
stats admin if TRUE
default_backend web-backend

相关内容