在 Ubuntu 上安裝 Docker CE

在安裝 Docker CE 時,官方在 get.docker.comtest.docker.com 提供一個很方便的腳本來進行安裝。但若要在 production 環境使用此安裝腳本是不建議的,因為它具有以下風險:

  • 使用快速安裝腳本需要使用到rootsudo特權來執行,因此在執行腳本之前你需要特別檢查與確認是否使用;
  • 快速安裝腳本會自動偵測你的 Linux 發行版與版本,並為你配置 package management 系統。此外,腳本不允許設定任何安裝參數;
  • 快速安裝腳本會安裝所有的相依性與推薦的套件,且不需要經過確認;
  • 快速安裝腳本不提供選項來指定安裝 Docker 的版本,它會安裝最新的版本(非 stable release 版本);
  • 如果主機已經安裝了 Docker 請不要使用快速安裝腳本。

因此,官方建議使用以下方式來安裝 Docker CE。

Read More

Share Comments

Kubernetes on Mesos

Kubernetes 是一個基於容器技術的分散式架構解決方案,並且是 Google 十幾年大規模使用容器技術的經驗累積的成果。因此,在今年七月 Mesosphere 宣布與 Google 合作,將 Kubernetes 結合 Mesos,讓使用者能夠使用 Kubernetes 與其他一流的 data center 服務(例如:Hadoop、Spark 以及 Chronos)一起使用。這允許 Kubernetes 應用程式同時與其他類型的應用程式在同一組伺服器中一起執行,而 Mesos 可以確保資源被公平的分配且隔離每個應用程式。

Kubernetes-Mesos 目前屬於 alpha 階段,仍然還在開發中,並不建議使用在生產環境。請參考 這裏

Read More

Share Comments

OpenVPN 手把手教學

虛擬私人網路(Virtual Private Network, VPN)為了解決跨區域之大型企業的網路連線與安全問題而衍生,VPN 在公用的網路架構(如:網際網路)上建立私有通道,而訊息透過私有通透進行傳送。VPN 可以利用已加密的通道協議(Tunneling Protocol)來達到保密、傳送端認證、訊息準確性等私人訊息安全效果。這種技術可以用不安全的網路(如:網際網路)來傳送可靠、安全的訊息。需要注意的是,沒有加密的 VPN 訊息依然有被竊取的危險。而 OpenVPN 無疑是 Linux 下開源 VPN 的先鋒,其提供了良好的效能友善的 GUI,而本文將介紹如何在 Ubuntu 上安裝 OpenVPN,但不使用 GUI 介面。

Read More

Share Comments

Mac OS X 製作 USB 開機碟

本文將介紹如何在 Mac OS X 環境中製作用來安裝作業系統(Operating system)的 USB 隨身碟,即不需要光碟就可以直接安裝作業系統。

請勿用來製作需要授權(license)付費之作業系統,請製作開源作業系統;如:Ubuntu, CentOS 等等。

Read More

Share Comments

KVM 虛擬機器掛載硬碟

最近在安裝 Ceph 分散式儲存時,需要多顆硬碟,而實體機並沒有這麼多硬碟時,變透過 KVM 來模擬多顆硬碟給虛擬機使用。本文將介紹如何使 KVM 所建立的虛擬機掛載新的虛擬硬碟。若不知道如何安裝 KVM,請參考 。

Read More

Share Comments

在 Ubuntu 使用 KVM 建立虛擬機

Linux 核心從 2007 年的 2.6.20 版本之後開始支援一種稱為「核心基礎虛擬機器 (Kernel-based Virtual Machine, KVM)」的虛擬化技術。KVM 利用模組化的方式讓 Linux 核心具有 Hypervisor 的能力,因此可以利用 KVM 來建立虛擬機。

Read More

Share Comments

CEPH 資料分散:CRUSH 演算法與一致性 Hash

本篇文章為翻譯文章,原文資訊如下:

原文網址:Ceph剖析:数据分布之CRUSH算法与一致性Hash
原文作者:吳香偉

將資料分散儲存是分散式儲存的一個重要議題,而將資料分散的演算法至少要考慮以下三個因素:

  1. 故障與隔離:相同資料的不同副本應分散在不同的故障區域,以降低資料損壞的風險。
  2. 負載平衡:資料要能夠平均分散在硬碟容量不同的儲存節點,避免部分節點硬碟空間剩餘過多;而部分節點硬碟空間不足甚至超載,進而影響系統效能。
  3. 新增/刪除節點時,所造成的資料搬移:當刪除節點時,最好的資料搬移是只有將離線節點上的資料搬移至其它節點,而其餘節點的資料不會發生搬移。

物件儲存(Object Store)中的一致性 Hash與 Ceph 的CRUSH是比較常見的資料分散演算法。而在 Amazon 的 Dynamo 的 key-value 儲存系統中使用了一致性 Hash,並且對其做了很多優化;OpenStack 的 Swift 物件儲存系統亦使用了一致性 Hash

Read More

Share Comments

持續整合工具 Jenkins 介紹與安裝

Jenkins 是一個持續整合 (Continuous Integration, CI)web-based 伺服器,提供了實行持續整合的基礎設施。因為設計上擁有極高的擴充性與彈性並且為 Open Source 的專案,因此擁有為數不少開發者為其貢獻延伸套件,本身提供了許多功能如 Distrubted Builds、Test Reports、Notifications 等強大功能,近年來更廣被使用在各大專案、公司之中,例如:yahoo、facebook、NHN 以及 Sony 等。

Read More

Share Comments

使用 HAProxy 實現負載平衡

隨著網路服務的用量暴增,增加伺服器硬體設備已經無法解決問題,而為了可以擴充服務,負載平衡成為主流的技術。負載平衡除了分流能力之外,有另一個很大的好處就是可以提供高可用性(High Availability),好讓你一台提供服務的主機失效,其他提供服務的主機可以繼續提供服務,降低斷線率。目前還使有很多大型網站都是使用典型的負載平衡架構,由一台 Switch 或 Proxy 接收來自網際網路的連線請求,然後分散給後面提供服務的伺服器叢集,藉此提高服務能處理龐大的連線數與客戶端的請求。

因此,可以透過軟體的方式來達到附載平衡的效果。因此本篇教學選用較為主流的 HAProxy 來實作負載平衡的功能。

Read More

Share Comments

使用 Jenkins 搭建 iOS 持續整合環境

在 iOS 應用程式的開發中必定使用的 XCode 進行開發,且 XCode 內建的測試框架 XCTest 提供了單元測試與 UI 測試的功能。讓開發者能快速且簡易的撰寫單元測試與 UI 測試,以保障程式開發上的品質。而本文希望藉由 Jenkins 持續整合伺服器與 Gitlab 來達到自動化測試的功能,並顯示測試結果至 Jenkins 儀表板中。

Read More

Share Comments