2019年5月14日 星期二

Vespa 的設定檔用途

Yahoo 的 Vespa 大數據系統 [1],是 Yahoo 開源的系統,主要功能可以想像是 Elasticsearch 的對照。不過在基本使用上,Vespa 跟 Elasticsearch 稍微有點不太一樣的概念。首先 Vespa 包含了整個環境佈署的程序,也就是在討論「設定 Vespa」時,其實是在討論如何在環境中開啟一組 Vespa 的叢集,並且「Vespa 叢集」在 Vespa 的概念當中是被稱為 Application。換言之,在 Vespa 的世界裡,它是假設了我們要先有一整群 IaaS 的伺服器在等待 Vespa 的 Application 被佈署上去,或者說等待將 IaaS 環境中的節點被分配來安裝 Vespa。等到 Vespa Application 成功被佈署了,之後才會開始討論如何操作 Vespa。

要佈署 Vespa 需要指派一些設定檔,簡單紀錄一下其中一些設定檔的用途。其中因為整個 Vespa 佈署的設定除了要定義資料的 schema、叢集的設定以外,還需要 pom.xml 的搭配,所以通常直接開一個 Java 專案專門用來做 Vespa 佈署設定,會比較自然一點點。

Application Package

Application Package [2] 一般指的是 /src/main/application 這個資料夾,資料夾內的東西基本上都是用來指定要如何進行 Vespa 佈署的。

  • services.xml [3]:叢集的配置檔。命名上感覺是說要在這裡定義要佈署的 Vespa 服務是要用來提供什麼服務的,不過具體而言就是在指定一個 Vespa 叢集,例如要用幾個節點建置叢集、叢集的節點當中哪些節點用來存放哪個資料、資料是否需要 replication 等等的。其中,會需要指定哪個資料放在哪個節點,是因為 Vespa 的佈署包含了 nginx,因此這個設定同時會指派 nginx 做資料的路由。
  • searchdefinitions/*.sd [4]:定義在 Vespa 當中存放的資料的 schema。schema 的主要用途是告訴 Vespa 該用什麼方法來處理資料,例如該建立什麼樣的索引、該把什麼欄位放在記憶體中等等。
參考資料
  1. Vespa
  2. Application Package
  3. Services Configuration
  4. Search Definitions

2019年5月9日 星期四

AWS VPC

AWS 的 VPC 最大只能開 /16,最小能開 /28。其中每個 Subnet 會有 5 個保留 IP 不能被使用:

  • .0 是本地路由
  • .1 是路由器位址
  • .2 是DNS保留位址
  • .3 目前沒用到的保留位址
  • .255 廣播,禁止客戶使用廣播

VPC 生成時會建好一個主路由表,建議不要刪除主路由表,因為就算自己手動重建,可能其他資源的識別還是會有問題。

當 Resource 放在 Security Group 裡的時候,Resource 送出的所有封包都會先出 Security Group、尋找目標 Resource、再進目標的 Security Group。所以即使兩個 Resource 放在相同的 Security Group 內,預設也是無法互相存取的,必須要在 Security Group 內設定允許自己存取自己。