2015-02-13 9 views
6

आईएम से अग्रेषण नियम कैसे बनाते हैं। मैं एक पोर्ट लोडबैंसर (स्थिर आईपी के साथ) स्थापित करना चाहता हूं जो पोर्ट 80 पर सुनता है, लेकिन पोर्ट 5555 पर सुनने वाले बैकएंड सर्वर पर आगे बढ़ता है। मैंने पाया है कि सभी उदाहरण 80 से 80 को अग्रेषित करते हैं, जो सहायक नहीं है मेरा मामला।जीसीई: आप पहली बार Google कंप्यूट इंजन का उपयोग कर पोर्ट 80 बाहरी से पोर्ट 5555 आंतरिक

रेफरी: https://cloud.google.com/compute/docs/load-balancing/network/forwarding-rules

धन्यवाद

+0

BTW इम अग्रेषण HTTP – eSniff

+0

जानकारी के लिए: के बाद से मैं इस सवाल का बनाया/जवाब देने GCE HTTP/HTTPS जारी की स्थिति के लिए बीटा के लिए अल्फा से प्रॉक्सी ले जाया गया। मुझे यह जांचने की ज़रूरत है कि क्या उन्होंने तब से सेटअप प्रक्रिया को साफ़ किया है ... – eSniff

उत्तर

5

बहुत सारे पढ़ने और परीक्षण के बाद, मुझे एक समाधान मिला जो जीसीई को एक अलग बंदरगाह पर एक आंतरिक बंदरगाह के अनुरोध को प्रॉक्सी करने की अनुमति देता है। एक अलग बंदरगाह को अग्रेषित करने के लिए, मुझे प्रॉक्सी, सर्वरपूल, यूआरएलमैप्स इत्यादि सेट करना पड़ा, इसलिए सेटअप सिर्फ मूल नेटवर्क से कहीं अधिक जटिल है।

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

वर्तमान में, पोर्ट अग्रेषण एक GCE लोड संतुलन नहीं है (एलबीएस) सुविधा: एलबीएस आगे नए आने वाले अनुरोधों पूल (टीपीएस) है, जो अपनी उदाहरणों के बीच वितरित लक्षित करने के लिए। कोई आईपी या पोर्ट मैपिंग नहीं किया जाता है, क्योंकि केवल आने वाले अनुरोध को अग्रेषित किया जाता है। एलबी बंदरगाहों के रूप में खुलासा करते हैं। तो, एकाधिक बंदरगाहों के लिए, आप एक पोर्ट रेंज, या प्रत्येक के लिए एक अलग एलबी परिभाषित कर सकते हैं।

इस तरह कुछ हासिल करने के लिए, आप उदाहरण के स्तर पर IPTables के साथ एचएपीआरएक्सी, एनएटी के साथ पोर्ट अग्रेषण सेटअप का उपयोग कर सकते हैं या क्लाइंट स्तर पर पोर्ट 80 से पोर्ट 5555 तक ग्राहकों को रीडायरेक्ट कर सकते हैं।

कुबर्नेट्स के साथ, आप सेवाओं का उपयोग करके आसानी से पोर्ट अग्रेषण प्राप्त कर सकते हैं। सेवाएं एक प्रॉक्सी परिभाषित करती हैं जो पोर्ट अग्रेषण के लिए स्वचालित रूप से सभी आवश्यक iptables जादू करेगा। उम्मीद है की यह मदद करेगा।

+1

मैं पोर्ट अग्रेषण करता हूं क्योंकि मैं बैकएंड सर्वर पर कई सेवाएं चलाता हूं। हमारे पास कुबर्नेट्स होस्ट्स का समूह भी है जो कई डॉकर कंटेनर चला सकता है, प्रत्येक अलग-अलग बंदरगाहों पर। – eSniff

संबंधित मुद्दे