
# 用户建立EDS与第三方内网环境的数据库/FTP服务器的连接
#### 操作场景
很多企业会把关键数据源建设在内网，例如数据库、文件服务器等。由于EDS运行在云上，所以需要创建EDS与第三方内网数据源的连接，以便更加安全、可靠的交换和管理数据资源。
#### 准备工作
1. 创建一台云服务器，并且为云服务器绑定弹性公网IP，确保可以连接互联网。具体操作请参见[购买弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/ecs_03_7002.html)、[为弹性云服务器申请和绑定弹性公网IP](https://support.huaweicloud.com/usermanual-eip/eip_0008.html)。
2. 构建VPN通道，确保打通华为云与第三方内网的连接，具体操作请参见[通过VPN实现华为云与数据中心相通](https://support.huaweicloud.com/qs-vpn/vpn_qs_00001.html)。
 
#### 方案架构
图1EDS与第三方内网数据源的连接方案   
![](https://support.huaweicloud.com/bestpractice-eds/zh-cn_image_0000001883746404.png)
#### 用户建立EDS与第三方内网环境的数据库的连接
1. 远程登录云服务器。 
   账号：root；密码：您在创建云服务器时设置的密码。具体操作请参见[登录Linux弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
   
   
2. 在该节点部署Nginx，用于打通EDS和第三方内网环境数据库（如MySQL）之间的连接，执行如下命令： 
   1. 进入"/usr/local"目录。
      ```
      cd /usr/local
      ```
      
   
   2. 下载Nginx压缩包。
      ```
      wget http://nginx.org/download/nginx-1.23.3.tar.gz  #下载最新版本的压缩包，可以不是1.23.3版本
      ```
      
   
   3. 安装编译Nginx需要的插件。
      ```
      yum -y install gcc gcc-c++ make libtool zlib zlib-devel openssl openssl-devel pcre pcre-devel
      wget http://downloads.sourceforge.net/project/pcre/pcre/8.35/pcre-8.35.tar.gz
      tar -zxvf pcre-8.35.tar.gz -C /usr/local/src/
      ```
      
   
   4. 解压Nginx压缩包。
      ```
      tar -zxvf nginx-1.23.3.tar.gz
      ```
      
   
   5. 进入Nginx目录。
      ```
      cd nginx-1.23.3
      ```
      
   
   6. 使用Nginx的四层代理模式，在编译时增加 --with-stream 模块。
      ```
      ./configure --prefix=/usr/local/nginx --user=nginx --group=nginx --with-http_stub_status_module --with-http_ssl_module --with-pcre=/usr/local/src/pcre-8.35 --with-stream
      make && make install
      groupadd nginx
      useradd  -g nginx nginx
      chown -R nginx:nginx /usr/local/nginx
      ```
      
   
   7. 编辑Nginx配置文件。
      ```
      vi /usr/local/nginx/conf/nginx.conf
      ```
      
   
   8. 在http块上增加stream{}和http块同级。
      ```
      stream{
          upstream appserver{
      #用户内部网络的数据库ip和端口号
      server xxx.xxx.xxx.xxx:xxxx max_fails=3 fail_timeout=30s;
          }
          server{
      listen xxxx; #自定义代理端口号
              proxy_connect_timeout 8s;
              proxy_timeout 24h;
              proxy_pass appserver;
          }
      }
      ```
      
   
   9. 切换到Nginx用户，启动Nginx，执行以下命令。
      ```
      su - nginx
      cd /usr/local/nginx/sbin
      ./nginx
      ```
      
   
   
   
   
3. 进入交换数据空间连接器控制台界面，选择"连接器管理 \> 数据源管理"，进入数据源管理界面。
4. 新建"MySQL"类型数据源，测试连接，查看是否连接成功，具体请参见[新建数据源](https://support.huaweicloud.com/usermanual-eds/eds_03_0034.html)。
   
   ![](https://support.huaweicloud.com/bestpractice-eds/public_sys-resources/note_3.0-zh-cn.png)
   新建数据源中连接地址为EIP地址，端口是自己设立的端口号。
   
   
 
#### 用户建立EDS与第三方内网环境的FTP服务器的连接
1. 远程登录云服务器。 
   账号：root；密码：您在创建云服务器时设置的密码。具体操作请参见[登录Linux弹性云服务器](https://support.huaweicloud.com/usermanual-ecs/zh-cn_topic_0013771089.html)。
   
   
2. 在该节点部署ftp.proxy，用于打通EDS和第三方内网环境FTP服务器之间的连接，执行如下命令： 
   1. 下载ctags插件，并进行安装。
      ```
      yum install ctags
      ```
      
   
   2. 可通过各种方式下载ftp.proxy安装包，例如通过官网下载：https://filezilla-project.org 。
   
   3. 解压ftpproxy安装包。
      ```
      tar -xvf ftpproxy-1.2.3.tgz
      ```
      ![](https://support.huaweicloud.com/bestpractice-eds/public_sys-resources/note_3.0-zh-cn.png)
      ftpproxy-1.2.3.tgz是文件名，用户可自行修改。
      
   
   4. 进入ftpproxy目录。
      ```
      cd ftpproxy-1.2.3/
      ```
      
   
   5. 安装ftpproxy。
      ```
      make
      mkdir /usr/local/man
      sudo make install
      ```
      
   
   6. 启动ftpproxy。 准备如下信息（示例）：
      FTP client：10.105.44.6
      FTP proxy：10.105.51.240:2121
      FTP server：10.105.87.168:21
      ```
      ftp.proxy -D 2121 10.105.87.168:21
      starting ftp.proxy 1.2.3 in daemon mode ...
      ```
      
   
   
   
   
3. 进入交换数据空间连接器控制台界面，选择"连接器管理 \> 数据源管理"，进入数据源管理界面。
4. 新建"FTP"类型数据源，测试连接，查看是否连接成功，具体请参见[新建数据源](https://support.huaweicloud.com/usermanual-eds/eds_03_0034.html)。
   
   ![](https://support.huaweicloud.com/bestpractice-eds/public_sys-resources/note_3.0-zh-cn.png)
   新建数据源中连接地址为EIP地址，端口是自己设立的端口号。
   
   
 
