GCE:如何创建从外部端口80到内部端口5555的转发规则 [英] GCE: How do you create a forwarding rule from port 80 external to port 5555 internal

查看:128
本文介绍了GCE:如何创建从外部端口80到内部端口5555的转发规则的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是第一次使用Google计算引擎.我想设置一个网络负载平衡器(带有静态ip),该端口在端口80上侦听,但转发到在端口5555上侦听的后端服务器.我发现的所有示例均显示将80转发至80,这对我的情况.

Im using google compute engine for the first time. I would like to set up a network loadbalancer (with static ip) that listens on port 80, but forwards to a backend server listening on port 5555. All the examples I've found show forwarding 80 to 80, which isn't helpful in my case.

ref: https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules

谢谢

推荐答案

经过大量的阅读和测试,我找到了一个解决方案,该解决方案允许GCE将请求代理到另一个端口上的内部端口.要转发到其他端口,我必须设置代理,ServerPools,UrlMaps等,因此设置要比基本的网络转发复杂得多.

after a lot of reading and testing, I found a solution that allows GCE to proxy a request to an internal port on a different port. To forward to a different port, I had to setup Proxies, ServerPools, UrlMaps, etc, so the setup is much more complex than just a basic network forward.

##############################
# 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...

这篇关于GCE:如何创建从外部端口80到内部端口5555的转发规则的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆