閱讀707 返回首頁    go 財經資訊


正向代理__ECS設置_操作指南_高性能計算-阿裏雲

阿裏雲GPU物理機本身不能訪問外網,隻能通過ECS正向代理訪問。本文檔將指導用戶如何設置代理服務器。

1. 確定IP地址

用戶應首先確認這幾個IP地址: ECS外網IP(不便於透露,本文用XXX.XXX.XXX.XXX表示)和內網IP(實驗用10.10.10.10); GPU物理機內網IP(實驗用10.239.23.4);

2. 登錄ECS跳板機

用戶可以用PUTTY工具(Windows環境)或SSH命令(Linux環境)登錄ECS,注意應使用ECS外網IP登入。

ssh -l login_name XXX.XXX.XXX.XXX(ECS外網IP)

登錄成功後,可以在ECS跳板機上用SSH命令登錄GPU物理機:

ssh -l root 10.239.23.4(GPU物理機內網IP)

3. ECS跳板機上部署代理服務器

這裏選擇Tengine,它是在NGINX的基礎上由淘寶網發起的開源Web服務器項目。用戶應注意,NGINX做正向代理服務器是不支持HTTPS連接的,所以客戶端隻能訪問HTTP服務。如果用戶需要在物理機上訪問HTTPS服務可以選擇其他Web服務器做代理。

3.1 安裝Tengine

重新開一個終端,登錄到ECS跳板機。 獲取Tengine源碼:

wget https://tengine.taobao.org/download/tengine-2.1.1.tar.gz

解壓:

tar zxvf tengine-2.1.1.tar.gz
cd tengine-2.1.1/

配置和編譯:

./configure
make
sudo make install

默認情況下安裝位置在 /usr/local/nginx/

3.2 編輯Tengine配置文件

用root權限打開 /usr/local/nginx/conf/nginx.conf 文件,在http{}語句塊內增加如下內容:("//”後麵為注釋,真正的conf文件中應刪除)

server {
resolver 8.8.8.8; 
//  設置DNS的IP,可以根據實際情況修改
resolver_timeout 5s; 
//  DNS連接超時設置 
listen 0.0.0.0:8080; 
// 用於連接客戶端的監聽端口,也可改為其他端口 
access_log  /root/logs/proxy.access.log;       
//  連接日誌,用於記錄所有連接建立的情況
error_log   /root/logs/proxy.error.log;        
//  錯誤日誌,用於記錄所有錯誤情況

    location / {
        allow 10.239.23.4;
//  允許接入的物理機內網IP,根據需要設置
        deny all;         
//  拒絕為除了上一句指定物理機內網IP之外的所有主機服務
                                         //  以下不需要用戶修改,保持默認即可
        proxy_pass $scheme://$host$request_uri;
        proxy_set_header Host $http_host;

        proxy_buffers 256 4k;
        proxy_max_temp_file_size 0;

        proxy_connect_timeout 30;

        proxy_cache_valid 200 302 10m;
        proxy_cache_valid 301 1h;
        proxy_cache_valid any 1m;
    }
}

保存該文件。

3.3 啟動Tengine

用root權限運行:sudo /usr/local/nginx/sbin/nginx 如果報錯,請根據報錯信息對3.2節中的nginx.conf配置文件做必要的修改。

3.4 設置ECS防火牆

出於節省流量和安全考慮,需要在ECS上設置防火牆規則,將除了GPU物理機之外的所有訪問8080端口的請求都擋在防火牆外。步驟如下:

3.4.1 開啟防火牆

CentOS6: service iptables start
CentOS7: systemctl start firewalld

3.4.2 添加防火牆規則

首先允許GPU物理機IP地址(本文用10.239.23.4,請根據實際情況修改)訪問8080端口:

iptables -I INPUT -s 10.239.23.4  -p TCP --dport 8080 -j ACCEPT

端口8080要和3.2節Tengine配置文件中的端口設置相同。 然後禁止所有訪問8080端口的tcp連接:

iptables -A INPUT -p TCP --dport 8080 -j DROP

查看規則是否生效:

iptables -L -n

可以看到新增了兩條規則:

target     prot opt source               destination
ACCEPT     tcp  --  10.239.23.4          0.0.0.0/0           tcp dpt:8080
DROP       tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:8080

4. 在GPU物理機上設置代理

回到GPU物理機終端,進行代理設置。 最簡單的方式是使用環境變量,假設ECS內網IP為10.10.10.10(用戶需要自行替換為真實ECS內網IP),則可以執行:

export http_proxy=https://10.10.10.10:8080

注意這裏的代理服務器端口設置應該和ECS跳板機上nginx.conf中監聽端口(listen 0.0.0.0:8080)相互對應。 也可以將上述語句放入/etc/profile或~/.bashrc實現登錄GPU物理機時自動配置代理服務器。

5. 測試

在GPU物理機上使用不同的工具測試外網連接情況,結果如下:

5.1 wget和curl測試

$ wget https://tengine.taobao.org/download/tengine-2.1.1.tar.gz
--2015-09-21 16:15:50--  https://tengine.taobao.org/download/tengine-2.1.1.tar.gz
Connecting to 10.10.10.10:8080... connected.
Proxy request sent, awaiting response... 200 OK
Length: 2062650 (2.0M) [application/octet-stream]
Saving to: ‘tengine-2.1.1.tar.gz’

100%[======================================>] 2,062,650   1014KB/s   in 2.0s

2015-09-21 16:15:52 (1014 KB/s) - ‘tengine-2.1.1.tar.gz’ saved [2062650/2062650]

通過以上測試,驗證了GPU物理機已經可以通過ECS正向代理訪問外網。

5.2 測試yum

$ sudo yum install openssl
Loaded plugins: fastestmirror, langpacks
base                                                     | 3.6 kB     00:00
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyuncs.com
 * extras: mirrors.aliyuncs.com
 * updates: mirrors.aliyuncs.com
Resolving Dependencies
--> Running transaction check
---> Package openssl.x86_64 1:1.0.1e-42.el7 will be updated
---> Package openssl.x86_64 1:1.0.1e-42.el7.9 will be an update
--> Processing Dependency: openssl-libs(x86-64) = 1:1.0.1e-42.el7.9 for package: 1:openssl-1.0.1e-42.el7.9.x86_64
--> Running transaction check
---> Package openssl-libs.x86_64 1:1.0.1e-42.el7 will be updated
---> Package openssl-libs.x86_64 1:1.0.1e-42.el7.9 will be an update
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package            Arch         Version                    Repository     Size
================================================================================
Updating:
 openssl            x86_64       1:1.0.1e-42.el7.9          updates       711 k
Updating for dependencies:
 openssl-libs       x86_64       1:1.0.1e-42.el7.9          updates       949 k

Transaction Summary
================================================================================
Upgrade  1 Package (+1 Dependent package)

Total download size: 1.6 M
Is this ok [y/d/N]:y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/2): openssl-1.0.1e-42.el7.9.x86_64.rpm                  | 711 kB   00:00
(2/2): openssl-libs-1.0.1e-42.el7.9.x86_64.rpm             | 949 kB   00:00
--------------------------------------------------------------------------------
Total                                              5.7 MB/s | 1.6 MB  00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Updating   : 1:openssl-libs-1.0.1e-42.el7.9.x86_64                        1/4
  Updating   : 1:openssl-1.0.1e-42.el7.9.x86_64                             2/4
  Cleanup    : 1:openssl-1.0.1e-42.el7.x86_64                               3/4
  Cleanup    : 1:openssl-libs-1.0.1e-42.el7.x86_64                          4/4
  Verifying  : 1:openssl-libs-1.0.1e-42.el7.9.x86_64                        1/4
  Verifying  : 1:openssl-1.0.1e-42.el7.9.x86_64                             2/4
  Verifying  : 1:openssl-1.0.1e-42.el7.x86_64                               3/4
  Verifying  : 1:openssl-libs-1.0.1e-42.el7.x86_64                          4/4

Updated:
  openssl.x86_64 1:1.0.1e-42.el7.9

Dependency Updated:
  openssl-libs.x86_64 1:1.0.1e-42.el7.9

Complete!

在ECS跳板機上查看Tengine access log文件(/root/logs/proxy.access.log),找到上述與yum安裝相關的log如圖所示。

10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/libcom_err-devel-1.42.9-7.el7.x86_64.rpm HTTP/1.1" 502 690 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/updates/x86_64/Packages/krb5-libs-1.12.2-15.el7_1.x86_64.rpm HTTP/1.1" 502 691 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/updates/x86_64/Packages/krb5-devel-1.12.2-15.el7_1.x86_64.rpm HTTP/1.1" 502 692 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm HTTP/1.1" 502 692 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/libselinux-devel-2.2.2-6.el7.x86_64.rpm HTTP/1.1" 200 178532 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/libsepol-devel-2.1.9-3.el7.x86_64.rpm HTTP/1.1" 200 72300 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/libverto-devel-0.2.5-4.el7.x86_64.rpm HTTP/1.1" 200 11776 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/pcre-devel-8.32-14.el7.x86_64.rpm HTTP/1.1" 200 488780 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyuncs.com/centos/7/os/x86_64/Packages/zlib-devel-1.2.7-13.el7.x86_64.rpm HTTP/1.1" 200 50592 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/keyutils-libs-devel-1.5.8-3.el7.x86_64.rpm HTTP/1.1" 200 38232 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:11 +0800] "GET https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/libcom_err-devel-1.42.9-7.el7.x86_64.rpm HTTP/1.1" 200 30804 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:12 +0800] "GET https://mirrors.aliyuncs.com/centos/7/updates/x86_64/Packages/openssl-devel-1.0.1e-42.el7.9.x86_64.rpm HTTP/1.1" 200 1235792 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:12 +0800] "GET https://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/krb5-devel-1.12.2-15.el7_1.x86_64.rpm HTTP/1.1" 200 655972 "-" "urlgrabber/3.10 yum/3.4.3"
10.239.23.4 - - [21/Sep/2015:17:26:12 +0800] "GET https://mirrors.aliyun.com/centos/7/updates/x86_64/Packages/krb5-libs-1.12.2-15.el7_1.x86_64.rpm HTTP/1.1" 200 845708 "-" "urlgrabber/3.10 yum/3.4.3"

上述安裝包所在的yum源為阿裏雲內網,故ECS代理會通過內網流量獲取,這樣節省了用戶流量費用。

最後更新:2016-11-23 17:16:02

  上一篇:go squid正向代理__ECS設置_操作指南_高性能計算-阿裏雲
  下一篇:go 反向代理__ECS設置_操作指南_高性能計算-阿裏雲