Ceph 分散式儲存系統介紹

Ceph 提供了Ceph 物件儲存以及Ceph 區塊儲存,除此之外 Ceph 也提供了自身的Ceph 檔案系統,所有的 Ceph 儲存叢集的部署都開始於 Ceph 各節點,透過網路與 Ceph 的叢集溝通。最簡單的 Ceph 儲存叢集至少要建立一個 Monitor 與兩個 OSD(Object storage daemon),但是當需要運行 Ceph 檔案系統時,就需要再加入Metadata伺服器。

Ceph

Read More

Share Comments

Apache Cassandra 分散式資料庫

Cassandra 是最初由 Facebook 開發,之後貢獻給 Apache 基金會維護的分散式 NoSQL 資料庫系統,一般被認為 Amazon Dyname 與 Google BigTable 的結合體,主要是分散性像 Dynamo,然而資料模型卻如 BigTable。目前有多家公司採用,可運行上千台節點來提供超過 200 TB 的資料。

Cassandra 擁有幾個特點,也因為這些特點讓許多人選擇使用該資料庫,以下幾個項目簡單列出其特點:

  • 完全去中心化,且不是主從架構的備份
  • 統一類型的節點
  • 以 P2P 協定串連起網路,清除 SPOF(Single Point Of Failure)問題
  • 高擴展性,新增與刪除節點容易
  • 可呼叫的一致性,並支援強一致性與弱一致性
  • 支援跨區域的叢集架構
  • 每個區域儲存一份完整資料,來提供存取局部性、容錯與災難復原
  • 寫入效能理論上比讀取好(但近期有證實現在讀取也很不錯),適合串流資料儲存
  • 比 HBase 的隨機存取效能要好上許多,但不擅長區間掃描
  • 可作為 HBase 的即時查詢快取。

Read More

Share Comments

Kuberentes 是什麼?

Kubernetes 是 Google 的開源專案,主要用於管理跨主機容器化叢集系統。該專案脫胎於 Google 內部叢集管理工具 Borg,早期主要貢獻者更是參與 Borg 專案的人員,大概基本上都認為 Kubernetes 許多概念與架構是來至 Google 十餘年的設計、部署、管理大規模容器的經驗。

Kubernetes 在 Docker 叢集管理中是很重要的一員,其實作了許多功能,包含應用程式部署、叢集節點擴展、自動容錯機制等,並且能夠統一管理跨主機的管理。其架構如下圖所示。

Read More

Share Comments

Docker 基礎介紹

Docker 是一個開源的專案,主要提供容器化應用程式的部署與自動化的管理,透過部署 Docker engine 於 Linux 作業系統上,提供軟體抽象層以及作業系統層虛擬化自動管理機制。Docker 使用一些 Linux Kernel 中的軟體,如 Control Groups(cgroups)、namespaces(核心命名空間)、Another UnionFS 等來達到建置獨立的環境與存取 CPU、Memory 以及網路資源等,最終提供一個輕量級的虛擬化。Docker 的發展非常迅速,從 0.9.0 版本後,採用自己開發的 Libcontainer 函式庫作為直接存取由 Linux Kernel 提供的虛擬化基礎設施。Docker 也支援了多平台,從個人電腦到私有、公有雲都能夠進行使用與部署輕量級虛擬化。

Docker 並非一個新興技術,而是過往的 Linux Container 技術的基礎上進行封裝。因此使用者只需要關注應用程式如何被部署與執行就好,而不用管容器是如何被建置出來。

Docker

Read More

Share Comments

簡單設定 Apache2 Proxy 與 VirtualHost

Apache2 是一套經過測試與用於生產環境的 HTTP 伺服器,在許多網頁伺服器中被廣泛的採用,Apache2 除了本身能力強大外,其也整合了許多的額外模組來提供更多的擴展功能。

Read More

Share Comments

Ubuntu Metal as a Service 安裝

Ubuntu MAAS 提供了裸機服務,將雲端的語言帶到物理伺服器中,其功能可以讓企業一次大量部署伺服器硬體環境的作業系統與基本設定等功能。

Read More

Share Comments

利用 Keepalived 提供 VIP

Keepalived 是一種基於 VRRP 協定實現的高可靠 Web 服務方案,用於防止單點故障問題。因此一個 Web 服務運作至少會擁有兩台伺服器執行 Keepalived,一台作為 master,一台作為 backup,並提供一個虛擬 IP(VIP),master 會定期發送特定訊息給 backup 伺服器,當 backup 沒收到 master 訊息時,表示 master 已故障,這時候 backup 會接管 VIP,繼續提供服務,來確保服務的高可靠性。

Read More

Share Comments

Apache Kafka 叢集

Apache Kafka 是一個分散式的訊息佇列框架,是由 LinkedIn 公司使用 Scala 語言開發的系統,被廣泛用來處理高吞吐量與容易水平擴展,目前許多巨量資料運算框架以都有整合 Kafka,諸如:Spark、Cloudera、Apache Storm等,

Kafka 是基於Publish/Subscribe的訊息系統,主要設計由以下特點:

  • 在 TB 級以上資料也能確保常數時間複雜度的存取效能,且時間複雜度為O(1)的訊息持久化。
  • 高吞吐量,在低階的商業電腦上也能提供單機100k/sec條以上的訊息傳輸。
  • 支援 Kafka Server 之間的訊息分區(Partition)以及分散式發送,並保證每個分區內的訊息循序傳輸。
  • 同時支援離線資料處理與即時資料處理
  • 容易的服務不中斷水平擴展。

Read More

Share Comments

Spark on Mesos 多節點部署

Spark + Mesos 叢集是由多個主節點與工作節點組合而成,它實作了兩層的排程(Scheduler)來提供粗/細粒度的排程。在 Mesos 中主節點(Master)主要負責資料的分配與排程,然而從節點(Slave)則是主要執行任務負載的角色。Mesos 也提供了高可靠的部署模式,可利用多個主節點的 ZooKeeper 來做服務發現。

Read More

Share Comments

Ubuntu PXE 安裝與設定

預啟動執行環境(Preboot eXecution Environment,PXE,也被稱為預執行環境)提供了一種使用網路介面(Network Interface)啟動電腦的機制。這種機制讓電腦的啟動可以不依賴本地資料儲存裝置(如硬碟)或本地已安裝的作業系統。

PXE

Read More

Share Comments