August
10th,
2016
原文 Comparing Swarm, Swarmkit and Swarm Mode 名詞解釋: Docker Swarm: 最原始的 Docker Swarm 需要透過 docker --swarm 來呼叫 Docker SwarmKit: 使用 Github 另外一個 Open Source Project docker/SwarmKit 做 Clustering orchestration. Docker SwarmNext: 也就是 Docker 1.12 之後系統內建的 Docker Swarm Mode (或稱為 Docker Swarm V2) TL;DR (直接告訴我差異) Docker Swarm Swarm Kit Swarm Next (Swarm V2) 額外 K/V DB 需要 (progrium/consul) 內建 內建 Security None 內建 內建 額外安裝 不需要 需要額外安裝 binaries 不需要 Extra Service None Noone Routing Mesh, Load Balancer, Service Discovery Docker-Compose, Docker-Machine 支援 支援 支援 不支援 (目前) 關於最原始的 Docker Swarm 建立 Key-Value Service #Create Docker Machine docker-machine create -d virtualbox mh-keystore #Switch to taret docker-machine eval "$(docker-machine env mh-keystore)" #Start Consul Service docker run -d \ -p "8500:8500" \ -h "consul" \ progrium/consul -server -bootstrap 關於 SwarmKit 使用流程 請參考我的這篇文章,[TIL][Docker] Docker SwarmKit 學習紀錄 關於 Docker Swarm Next 請參考我的這篇文章,[TIL] Learning note about Docker Swarm Mode 參考鏈結 试用swarmkit [TIL] Learning note about Docker Swarm...
繼續閱讀
August
9th,
2016
What's New in Docker 1.12 by Nishant Totla for Docker SF Meetup 08.03.16 from Docker, Inc.
Docker 官方在 1.12 正式 Release 之後也放出了新的 Slide 來講解 1.12 新的功能:
Docker Swarm Mode 無疑是最大的亮點,裡面的Routing Mesh可以讓任何節點都可以找到有 deploy 的 service
除此之外 Live Restore: (p.30) 這大概是 DockerCon 2016 之後新的功能,今天看到同事 Demo 後覺得相當有趣. 只要你在啟動 daemon 的時候加上 –live-restore 的參數.
Docker Daemon 啟動的 Container 就可以把 Docker Daemon 殺掉,但是可以確保自己不會一併消失.
這樣就可以來 Container 來更新 Docker Daemon
繼續閱讀
August
9th,
2016
What is DPDK
DPDK(Data Plane Development Kit) Data Plane Development Kit 能大幅提升封包處理效能與傳輸量,讓資料層面應用程式享有更充裕的處理時間。
Data Plane Development Kit 可讓封包處理效能加快達十倍。於單一 Intel® Xeon® 處理器上便可實現超過 80 Mpps 的傳輸量,搭配雙處理器配置則可達雙倍。1 因此電信與網路設備製造商 (TEM 與 NEM) 可有效降低開發成本,動用更少工具與支援團隊,亦享有更快的上市時間。
(refer from Intel Website)
DPDK Support NIC
DPDK Supported NICs
It could support on virtual driver “virtio-net”.
Process:
Bind DPDK (dpdk-devbind.py)to mount your network driver to DPDK driver list
Use dpdk status (dpdk-devbind.py status) to query it.
Use KNI (Kernel Network Interface) to enable that driver to eth0.
If you use kni to enable DPDK to eth0, you can use all network function with DPDK benefit.
kni will waste one CPU to relay DPDK driver data to eth0.
Suggestion:
Write DPDK related code directly.
DPDK suitable for small cell but lots of data queue.
Reference
dpdk入门及环境准备
DPDK-NGINX vs NGINX – Tech Overview and Performance Testing
Intel 加速分布式计算系统的三个神器
繼續閱讀
August
8th,
2016
前言 其實之前就跑過一次,不過沒有記錄下來詳細的指令.這次為了比較 Docker Swarm , Docker Swarm Kit 還有 Docker Swarm Mode,又把整個流程跑了一次. 稍微做個紀錄. SwarmKit 使用流程 安裝 SwarmKit 由於 Open Source Project,需要另外安裝. go get -u github.com/docker/swarmkit cd $GOPATH/src/github.com/docker/swarmkit make binaries mv bin/* $GOBIN 注意: 如果你不是使用 Brew 安裝 Golang 你可能不會有 $GOBIN 參數,可以改到 $GOPATH/bin 建立 Cluster Master Node swarmd -d /tmp/node-1 --listen-control-api /tmp/manager1/swarm.sock --hostname node-1 要注意解釋一下,其中 /tmp/manager1/swarm.sock 是 SwarmKit socket 的位址.如果其他的 node 要加入,一定要將環境變數加入. export SWARM_SOCKET=/tmp/manager1/swarm.sock 然後我們來查詢,現在 Master 的 token (在新的 console) export SWARM_SOCKET=/tmp/manager1/swarm.sock swarmctl cluster inspect default >ID : 1piq7f9tr1xlmnui4xhjhsafi >Name : default >Orchestration settings: > Task history entries: 5 >Dispatcher settings: > Dispatcher heartbeat period: 5s >Certificate Authority settings: > Certificate Validity Duration: 2160h0m0s > Join Tokens: > Worker: >SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz > Manager: >SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-cdh5ucqp1xjvh3pp1rvs0two4 建立 Cluster Worker Node 節點 2 (Node2) swarmd -d /tmp/node-2 --hostname node-2 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz 其中注意, --join-token 一定要加入,不然會找不到.請使用查詢到的,勿用到我提供的 :p 節點 3 (Node3) swarmd -d /tmp/node-3 --hostname node-3 --join-addr 127.0.0.1:4242 --join-token SWMTKN-1-1wttj6u10f9fueptptma9ohf99zcxt0gia1wt3a5odphi6nt1f-c4y428p7wwr23efwo4xw6qiwz 確認節點都有建立成功 export SWARM_SOCKET=/tmp/manager1/swarm.sock swarmctl node ls 二...
繼續閱讀
August
6th,
2016
原文
Bring Linux apps to the Mac Desktop with Docker
好處:
某些 App 只出 Linux App 版本,卻沒有 MacOSX
透過 sandbox 的方式執行程式
相關準備:
先裝 X11 Client - xquartz
brew install Caskroom/cask/xquartz
安裝 TCP/UDP mapping 工具 SOCAT
brew install socat
撰寫相關的 Dockerfile
vi Dockerfile
內容直接複製貼上…
開始吧
先下載這次範例程式 slack linux 版本
wget https://downloads.slack-edge.com/linux_releases/slack-desktop-2.1.0-amd64.deb
先在另外一個 teminal 跑 SOCAT
socat TCP-LISTEN:6000,reuseaddr,fork UNIX-CLIENT:\"$DISPLAY\"
記得不要關掉,這是對應 X11 Client/Server 對應的部分
編譯 Docker Image
docker build -t slack:2.1.0 .
跑起來吧
docker run -e DISPLAY=192.168.0.15:0 --name slack -d slack:2.1.0
繼續閱讀
July
29th,
2016
前提:
這一篇主要是看FOSDEM 2016 影片的簡單心得(投影片在這裡),順便把之前學的 Bloom Filter 複習一下. 這裡有我之前寫的程式.
心得
這篇文章主要都介紹透過 Golang 來開發一個 Data Application . 從 Bloom Filter 到 Count-Min (透過 Hash 方式來存放資料,主要是記錄有出現多少次),到了 HyperLogLog (
關於 Bloom Filter
這是什麼?
Bloom Filter 是一個資料結構.主要是拿來能夠快速的確認一個數值有沒有存在的資料結構.具有以下特性:
極小使用空間(由於不存在原本的 Value ) 只需要儲存 k 個資料結構就好.
具有 可以判斷該數值絕對不存在 效率 ( 也就是不具有 False Nagative ,但是具有 False Postive ). 搜尋時間複雜度: \(O(n)\)
使用場景:
爬蟲可以記錄該網址是否有爬過
Google 惡意 URL 判斷
Canssandra 判斷該 Partition 是否有存放該數值
參考鏈結
FOSDEM 2016: Building Data applications with Go: from Bloom filters to Data pipelines
Wiki: Bloom Filter
https://github.com/pmylund/go-bloom
https://github.com/willf/bloom
繼續閱讀