Serverless 解惑——函數計算如何訪問 MySQL 數據庫

函數計算(Function Compute)函數計算 是事件驅動的全託管計算服務。使用函數計算,您無需採購與管理服務器等基礎設施,只需編寫並上傳代碼。函數計算爲您準備好計算資源,彈性地可靠地運行任務,並提供日誌查詢、性能監控和報警等功能。藉助函數計算,您能夠快速構建任何類型的應用和服務,而且只需爲任務實際消耗的資源付費。 訪問 MySQL 數據庫是指在函數計算中經過編寫代碼調用數據庫驅動庫經過 TCP 協議實現對數據庫進行的插入、查詢等操做。一般函數計算中運行的不一樣函數實例之間是不共享狀態的,對於結構化的數據能夠經過數據庫的形式進行持久化以實現狀態共享。因爲用戶函數運行在函數計算的 VPC 中,而用戶的數據庫運行在用戶所屬的 VPC 中,因此在函數計算平臺訪問數據庫會涉及到跨 VPC 訪問的場景,下面咱們先來介紹一下其工做機制。html

工做機制

運行函數時,訪問 IP 是不固定的,所以您沒法經過設置白名單的方式訪問 MySQL。基於最小權限原則,不建議在生產環境中將全部 IP(0.0.0.0/0)設置到數據庫白名單中。函數計算已經支持專有網絡 VPC 功能,您能夠爲函數所在的服務開啓 VPC 訪問的功能,安全地訪問 VPC 中的資源。mysql

您能夠將 MySQL 放置於安全的 專有網絡VPC 中,並配置函數計算訪問 VPC 中的資源,函數計算就能夠經過 VPC 安全地訪問您的雲數據庫。git

函數計算訪問 MySQL 工做流程以下圖所示: 1github

  1. 函數計算訪問用戶 VPC 原理以下: 用戶的 VPC 是用戶私有的網絡,須要用戶受權賦予 彈性網卡 ENI 訪問 VPC 的能力,並將此 ENI 插入到 FC 中執行用戶函數的機器上,從而使函數能夠訪問用戶 VPC 內資源。函數計算配置VPC功能,可參考 詳情.

若是用戶的 VPC 資源不在函數計算當前可用區,能夠經過在用戶 VPC 環境中建立一個與函數計算相同可用區的 VSwitch ,並在函數計算的服務的 VPC 配置中設置此 VSwitchID。因爲同一專有網絡內不一樣交換機之間內網互通,所以函數計算能夠經過該 VSwitch 訪問在其餘可用區的用戶 VPC 內資源。sql

  1. MySQL 實例建立成功後,您須要設置白名單,進入相應實例,左側點擊數據安全性,選擇白名單設置,將專有網絡中 default 設置爲配置的 VPC 實例內網 IP 段或者配置 FC 配置的交換機內網 IP 段。數據庫

  2. 訪問 MySQL 數據庫 host 爲實例的內網地址,能夠登陸阿里雲控制檯查看:安全

    2

配置

公共配置

建立專有網絡VPC

  1. 登陸 VPC控制檯
  2. 參閱 VPC 搭建專有網絡 建立VPC和交換機。

建立安全組

安全組控制檯 新建安全組,點擊 建立安全組,設置安全組名稱,網絡類型選擇 專有網絡,並選擇剛纔建立的專有網絡。服務器

建立 MySQL 實例

  1. RDS 控制檯 新建RDS實例,點擊建立實例
  2. 基本配置選擇您須要的配置,沒有特殊要求選擇默認配置便可。
  3. 網絡類型選擇專有網絡,並選擇您已經建立的 VPC 和交換機。
  4. 選擇您須要的存儲空間和購買量,當即購買。即成功建立了 RDS 實例。
  5. 實例建立成功後,您須要設置白名單,進入相應實例,左側點擊 數據安全性,選擇白名單設置,將專有網絡中 default 設置爲配置的 VPC 實例內網 IP 段或者配置 FC 配置的交換機內網 IP 段。
  6. 白名單設置成功後,點擊左側數據庫管理,點擊建立數據庫,設置數據庫名稱。
  7. 新建帳號訪問數據庫。點擊左側帳號管理,填寫數據庫帳號受權數據庫登陸密碼。您能夠經過此帳號登陸數據庫。
  8. 實例詳情頁,點擊右上角登陸數據庫,使用剛纔建立的帳號登陸數據庫。(若是沒有 DMS 訪問權限,控制檯會彈出受權頁面,根據提示受權便可)。
  9. 登陸到 DMS 系統後,左上角選擇數據庫,就能夠進行建立表、插入數據等操做了。

至此,您已經成功建立了 VPC、安全組、RDS。網絡

函數計算配置 VPC

注意:函數計算服務所在區域與公共配置中建立的資源所在區域一致。less

  1. 函數計算控制檯 建立服務。
  2. 【專有網絡配置】選項中,選擇您在步驟一中建立的 VPC 網絡,交換機、安全組。
  3. 【權限配置】選項中,選擇【新建角色】,點擊【點擊受權】,在角色快速建立頁面,點擊【贊成受權】。
  4. 點擊肯定,新建服務完畢。

安裝模塊

在函數代碼中您須要使用訪問 MySQL 的第三方模塊,您須要將第三方模塊下載到入口所在目錄,將第三方模塊和入口函數放到同一個文件夾下再一同打包上傳至函數計算。第三方模塊打包請參考文章 爲函數安裝第三方依賴

參考示例工程

總結

經過本文介紹能夠快速實現函數計算訪問 Mysql 數據庫。

使用函數計算帶來的優點:

  1. 無需採購和管理服務器等基礎設施,只需專一業務邏輯的開發,能夠大幅縮短項目交付時間和人力成本;
  2. 提供日誌查詢、性能監控、報警等功能快速排查故障;
  3. 免運維,毫秒級別彈性伸縮,快速實現底層擴容以應對峯值壓力,性能優異;
  4. 成本極具競爭力;

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,作最懂雲原生開發者的技術圈。」