GCE:如何创建从外部端口 80 到内部端口 5555 的转发规则
GCE: How do you create a forwarding rule from port 80 external to port 5555 internal
我是第一次使用 google 计算引擎。我想设置一个侦听端口 80 的网络负载均衡器(具有静态 ip),但转发到侦听端口 5555 的后端服务器。我发现的所有示例都显示转发 80 到 80,这对我的情况。
参考:https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules
谢谢
目前,端口转发不是 GCE 负载均衡器 (LB) 的功能:LB 将新传入的请求转发到目标池 (TP),这些请求在其实例之间分配。不执行 IP 或端口映射,因为仅转发传入请求。 LB 按原样公开端口。因此,对于多个端口,您可以定义一个端口范围,或者为每个端口定义一个不同的 LB。
要实现这样的目标,您可以使用 HAProxy 端口转发设置,实例级别的 NAT IPTables,或在软件级别将客户端从端口 80 重定向到端口 5555。
通过Kubernetes,您可以通过服务轻松实现端口转发。服务定义了一个代理,它将自动为端口转发执行所有必要的 iptables 魔法。希望这有帮助。
经过大量阅读和测试,我找到了一个解决方案,允许 GCE 将请求代理到不同端口上的内部端口。要转发到不同的端口,我必须设置 Proxies、ServerPools、UrlMaps 等,因此设置比基本的网络转发要复杂得多。
##############################
# Setting up API port forwarding from external 80 to internal 5555
export INTERNAL_PORT=5555 #The port number that api is running on.
export EXTERNAL_PORT=80 #The port number that will be exposed externally by the proxy
export ZONE=us-central1-b
export NETWORK=mynetwork
export INSTANCE_GRP="api-us"
export HEALTH_CHECK="api-basic-check"
export HEALTH_CHECK_CHECKPATH="/isok"
export BK_SRV_SERVICE="api-srv"
export PROXY_NAME="api-proxy"
export URLMAP_NAME="api-urlmap"
export HTTP_FW_NAME="api-http-fw-rule"
export ADDRESS_NAME="api-external-ip"
export BACKEND_SRV01="apiserver01"
gcloud preview instance-groups --zone $ZONE create $INSTANCE_GRP --network $NETWORK
gcloud preview instance-groups --zone $ZONE instances \
--group $INSTANCE_GRP add $BACKEND_SRV01
#The load balancing service by default looks for a service with a key of http.
gcloud preview instance-groups --zone $ZONE add-service $INSTANCE_GRP \
--port $INTERNAL_PORT --service http
gcloud compute http-health-checks create $HEALTH_CHECK \
--check-interval 5s --healthy-threshold 2 \
--port $INTERNAL_PORT --timeout 3s --unhealthy-threshold 4 \
--request-path $HEALTH_CHECK_CHECKPATH
gcloud compute backend-services create $BK_SRV_SERVICE \
--http-health-check $HEALTH_CHECK
gcloud compute backend-services add-backend $BK_SRV_SERVICE \
--group $INSTANCE_GRP --zone $ZONE
gcloud compute url-maps create $URLMAP_NAME --default-service $BK_SRV_SERVICE
gcloud compute target-http-proxies create $PROXY_NAME --url-map $URLMAP_NAME
#create a static address to expose externally so that we can keep it if we remove the proxy.
gcloud compute addresses create $ADDRESS_NAME --global
export IP=`gcloud compute addresses describe $ADDRESS_NAME --global --format json | jq --raw-output '.address'`
gcloud compute forwarding-rules create $HTTP_FW_NAME --global \
--target-http-proxy $PROXY_NAME --port-range $EXTERNAL_PORT --address $IP
echo $IP # This is the IP to use for DNS etc...
我是第一次使用 google 计算引擎。我想设置一个侦听端口 80 的网络负载均衡器(具有静态 ip),但转发到侦听端口 5555 的后端服务器。我发现的所有示例都显示转发 80 到 80,这对我的情况。
参考:https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules
谢谢
目前,端口转发不是 GCE 负载均衡器 (LB) 的功能:LB 将新传入的请求转发到目标池 (TP),这些请求在其实例之间分配。不执行 IP 或端口映射,因为仅转发传入请求。 LB 按原样公开端口。因此,对于多个端口,您可以定义一个端口范围,或者为每个端口定义一个不同的 LB。
要实现这样的目标,您可以使用 HAProxy 端口转发设置,实例级别的 NAT IPTables,或在软件级别将客户端从端口 80 重定向到端口 5555。
通过Kubernetes,您可以通过服务轻松实现端口转发。服务定义了一个代理,它将自动为端口转发执行所有必要的 iptables 魔法。希望这有帮助。
经过大量阅读和测试,我找到了一个解决方案,允许 GCE 将请求代理到不同端口上的内部端口。要转发到不同的端口,我必须设置 Proxies、ServerPools、UrlMaps 等,因此设置比基本的网络转发要复杂得多。
##############################
# Setting up API port forwarding from external 80 to internal 5555
export INTERNAL_PORT=5555 #The port number that api is running on.
export EXTERNAL_PORT=80 #The port number that will be exposed externally by the proxy
export ZONE=us-central1-b
export NETWORK=mynetwork
export INSTANCE_GRP="api-us"
export HEALTH_CHECK="api-basic-check"
export HEALTH_CHECK_CHECKPATH="/isok"
export BK_SRV_SERVICE="api-srv"
export PROXY_NAME="api-proxy"
export URLMAP_NAME="api-urlmap"
export HTTP_FW_NAME="api-http-fw-rule"
export ADDRESS_NAME="api-external-ip"
export BACKEND_SRV01="apiserver01"
gcloud preview instance-groups --zone $ZONE create $INSTANCE_GRP --network $NETWORK
gcloud preview instance-groups --zone $ZONE instances \
--group $INSTANCE_GRP add $BACKEND_SRV01
#The load balancing service by default looks for a service with a key of http.
gcloud preview instance-groups --zone $ZONE add-service $INSTANCE_GRP \
--port $INTERNAL_PORT --service http
gcloud compute http-health-checks create $HEALTH_CHECK \
--check-interval 5s --healthy-threshold 2 \
--port $INTERNAL_PORT --timeout 3s --unhealthy-threshold 4 \
--request-path $HEALTH_CHECK_CHECKPATH
gcloud compute backend-services create $BK_SRV_SERVICE \
--http-health-check $HEALTH_CHECK
gcloud compute backend-services add-backend $BK_SRV_SERVICE \
--group $INSTANCE_GRP --zone $ZONE
gcloud compute url-maps create $URLMAP_NAME --default-service $BK_SRV_SERVICE
gcloud compute target-http-proxies create $PROXY_NAME --url-map $URLMAP_NAME
#create a static address to expose externally so that we can keep it if we remove the proxy.
gcloud compute addresses create $ADDRESS_NAME --global
export IP=`gcloud compute addresses describe $ADDRESS_NAME --global --format json | jq --raw-output '.address'`
gcloud compute forwarding-rules create $HTTP_FW_NAME --global \
--target-http-proxy $PROXY_NAME --port-range $EXTERNAL_PORT --address $IP
echo $IP # This is the IP to use for DNS etc...