我有一台机器,我为其分配了一个浮动 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