淺談叢集式電腦 ( Clustering )

當你開始接觸 clustering 時就會發覺, 原來沒學 clustering 根本等於沒有學 Unix / Linux. 
我們一般情況用到的 SERVER / Client 只是皮毛. Clustering 一個字, 內裹包含了多種技術, 
以下例子是常用的
  1. HPC – High performance computing
  2. Server Load balancing 負載平衡
    1. DNS round robin
    2. LVS – ipvsadm
  3. HA – High availability
    1. XEN cluster
    2. Heartbeat
    3. DRBD - http://www.drbd.org/
  4. Parallel computing
    1. http://en.wikipedia.org/wiki/MPICH

今天所談的是入門級的 clustering, LVS

LVS – Linux virtual server主要是用作負載平衡 與 HA,

What is the Linux Virtual Server?

The Linux Virtual Server is a highly scalable and highly available server built on a cluster of real servers, with the load balancer running on the Linux operating system. The architecture of the server cluster is fully transparent to end users, and the users interact as if it were a single high-performance virtual server.

SOURCE: http://www.linuxvirtualserver.org/ 

負載平衡的意思是把一部服務器的工作分到多部服務器之上. 由一個服務器為主人 ( Master ), 其他為幫手 ( node ). 如下圖

more_on_clustering

更可以制定負載平衡的策略

詳程參考, http://linux.die.net/man/8/ipvsadm

    1. rr – Robin Robin: distributes jobs equally amongst the available real servers.
    2. wrr – Weighted Round Robin: assigns jobs to real servers proportionally to there real servers’ weight. Servers with higher weights receive new jobs first and get more jobs than servers with lower weights. Servers with equal weights get an equal distribution of new jobs.
    3. lc – Least-Connection: assigns more jobs to real servers with fewer active jobs.
    4. wlc – Weighted Least-Connection: assigns more jobs to servers with fewer jobs and relative to the real servers’ weight (Ci/Wi). This is the default.
    5. lblc – Locality-Based Least-Connection: assigns jobs destined for the same IP address to the same server if the server is not overloaded and available; otherwise assign jobs to servers with fewer jobs, and keep it for future assignment.
    6. lblcr – Locality-Based Least-Connection with Replication: assigns jobs destined for the same IP address to the least-connection node in the server set for the IP address. If all the node in the server set are over loaded, it picks up a node with fewer jobs in the cluster and adds it in the sever set for the target. If the server set has not been modified for the specified time, the most loaded node is removed from the server set, in order to avoid high degree of replication.
    7. dh – Destination Hashing: assigns jobs to servers through looking up a statically assigned hash table by their destination IP addresses.
    8. sh – Source Hashing: assigns jobs to servers through looking up a statically assigned hash table by their source IP addresses.
    9. sed – Shortest Expected Delay: assigns an incoming job to the server with the shortest expected delay. The expected delay that the job will experience is (Ci + 1) / Ui if sent to the ith server, in which Ci is the number of jobs on the the ith server and Ui is the fixed service rate (weight) of the ith server.
    10. nq – Never Queue: assigns an incoming job to an idle server if there is, instead of waiting for a fast one; if all the servers are busy, it adopts the Shortest Expected Delay policy to assign the job.

source: Man page of ipvsadm

負載平衡方法大致上有

  1. NAT (Network address translation)
  2. DR – direct routing
  3. Tunneling

以下是 LVS – NAT LOAD BALANCING 的參考

原意圖

VS-NAT

VS via NAT, source: http://www.linuxvirtualserver.org/VS-NAT.html

指令

Master (NAT)

echo 1 > /proc/sys/net/ipv4/ip_forward

ipvsadm -A -t 192.168.7.200:80 -s rr

ipvsadm -a -t 192.168.7.200:80 -r 192.168.7.201:80 -m

ipvsadm -a -t 192.168.7.200:80 -r 192.168.7.202:80 -m

ipvsadm -a -t 192.168.7.200:80 -r 192.168.7.203:80 -m

ipvsadm -L –stats (現時的連接情況)

Nodes:

Set default route to 192.168.7.200

route add default gw 192.168.7.000

ip 地址

名稱 意思
192.168.7.200 Master
192.168.7.201 Node
192.168.7.202 Node
192.168.7.203 Node
192.168.7.1 Default GW
80 Www – web 服務器的 port number
rr Round robin 策略
-m LVS NAT
-a ADD SERVER
-A ADD SERVICE

Thanks, 有興趣多討論請跟我連絡 keithyau@yubis.net !!

如何設計一個技術性的演講 (Technical presentation)

在上一次寫好計劃書之後, 今次就來準備演講. 很多時候, 當你的計劃書被接納之後, 都需要去演講. 因為大老闆的時間很寶貴的, 沒有時間去細看你的計劃書.

其實, 這次我準備演講的目的, 不是真正需要一次演講. 而是我希望跟老闆傾談自己概念的時候, 可以更加流暢. 準備演講的過程, 可以幫人整理問題, 找尋可能受批評的地方.

作為創業者 / 高層 / 年輕的你, 常都需要去表現自己, 相信了解如何演講可以幫助你.

這篇文章就來淺談演講,為我們這些新手做個解決方案

演講 四大法則 Presentation 4P

  1. Product / Background (你的產品 / 計劃背景)
  2. Problem (現存問題)
  3. Possibilities (可行的方案)
  4. Possible solution / Recommendation (你所建議的方案)

這四個法則大概是整個演講的流程, 當然還需要一些頭尾配合, 在最後, 我會介紹我自己篇排的流程.

如果你是在介紹產品, 那你的第一個 p 就是說 product. 你需要說明這個產品的相關背景, 例如為什麼會想制造這個產品.如你你介紹的不是產品, 那就說明你的計劃背景.

第二個 p (problem) 就是說明現存問題, 很多時都是出現問題, 人才會找解決方案. 但成功了的人 (老闆) 很少會自己發現問題的.所以就由我們這些進取的下一代來告知他們.

第三個 p (Possibilities) 是希望你介紹現存的一些可行方案去解決 第二個 p 說明的問題. 為什麼方案一比方案二好 ? 為什麼你的方案可取 ? 就在這裡開始發揮了.

如果你是介紹產品的話, 第四個 p (possible solution)就是你整個演講的中心. 你就是在這裡推銷自己的產品, 說明為什麼你的產品可以解決第二個 p 的問題, 而第三個 p 中介紹的方案不可行. 個人來說, 我會把最多時間花在這裡.

演講注意事項

  1. Presentation 4 P 之前, 必需弄清演講對象 (Target audience). 在對象未明之前, 不要準備演講
  2. Presentation 4 P 之前, 必需弄清楚演講目的. 你是在找尋伙伴 / 投資者 / 買家 ?
  3. 說明事例時, 事不過三.
    記住人的記憶力有限, 舉出事例時, 四個太多, 二個太少. 三個就適中了.
  4. 進入正提前要先說明演講內容與次序 (scope), 並建議聽眾有需要的話可更改次序.
  5. 多用圖解, 避免一個 ppt 板面多於 3 + 1 ( 3 論點 + 1 題目)
  6. 最後需要作個總結 (conclusion)
  7. 記住 ppt 不是你的講稿, ppt 的目的只是用作表示圖解, 動畫, 數據等
  8. 需要預備一些敏感題目答案, 這些往往會是別人發問的東西
  9. 一個正式演講約十五分鐘 + 五分鐘發問 (Q & A)

我的演講流程示範

  1. Purpose 演講目的
  2. Scope 流程
  3. Background 背景
  4. Problem 問題
  5. Problem Examples (User experience scene) 案例
  6. Existing solutions 現行解決方案
  7. My product – How it can solve the problem ? 產品介紹
  8. Brief on my product architecture 產品設計
  9. Cost 成本
  10. Conclusion 總結

淺談設計技術性文章 – Technical writing for engineers and scientists

最近, 在寫技術性文章 / 計劃書 / 產品介紹 / 報告 時發覺, 
GOOGLE 竟然找不到一個好方法.
之後就去請教一位英文教授, 在他那裹借來了一本書
<<Pocket Book of Technical Writing - for Engineers and Scientists 2nd>>.
清楚易明簡潔地令你明白如何開筆, 一份技術性文章應該如何設計和應用什麼表達方式.
相信作為工程師 / 科學人員, 每天醉心於研究的你們, 
在表達自己成果的時侯都會跟我有同樣的煩惱.

從這本書了解到, 寫技術性文章約有四大部份

  1. 文章的目的和針對讀者
  2. 針對技術性文章的特點
    1. 技術性話題
    2. 多用圖形 / 圖畫表達
    3. 數字資料以表達數量與方向
    4. 由淺至深, 準確的表達方式
  3. 決定文章性質
    1. 計劃書
    2. 報告
    3. 研究報告
    4. 說明書
    5. 建議書
  4. 選擇不同部份的表達方式
    1. 說明名詞的含意 (classify terms)
    2. 結構性陳述 (Description of mechanism)
    3. 流程性陳述 (Description of Process)
    4. 圖表 (Visual)

本文以計劃書作為例子

一般的計劃書格式有時過於複雜, 
<<Pocket Book of Technical Writing - for Engineers and Scientists 2nd>> 
中建議了另一種計劃書格式 (Informal Proposals)

Informal Proposals

Introduction
  • Purpose - Describe the reason for writing this proposal (文章目的)
  • Background - Describe the problem that needs to be solved (問題背境)
  • Scope - Review what this proposal will and will not cover (文章範圍)
Discussion
  • Approach - Describe the proposed solution to the problem (解決方案)
  • Result - Show how the solution will solve the problem(成效)
  • Statement of work - List the tasks that will be performed (步驟)
Resources
  • Personnel - List those who will be doing the work and their qualifications (人才)
  • Facilities/equipment - List the physical resources required to do the work (資源)
Costs
  • Fiscal - List the financial costs of implementing the proposed solution (成本)
  • Time - List the time required to implement the proposed solution (時間)
Conclusion
  • Summary - Highlight the benefits and risks of adopting the proposal (總結)
  • Contract - Provide a contact for more information (聯絡)

以下是一些個人經驗

在落筆的時侯, 我們需要記住 – 文章是用來服侍讀者的 ! We are serving readers.

Introduction
在表達方式方面, 第一部份introduction 需要針對目標讀者, 使用較有吸引力的字句. 並在 scope 中說明這份計劃書只包括他們有興趣的話題.

Discussion
Approach 這部份是文章的中心, 建議在這裹運用一些技巧 (Description of mechanism / Process, part by part description). 而且需要加上圖表, 因為讀者都是懶惰的, 技術文章最大可能給讀者留意到的就是圖表.
在這裹可以用些圖片, 例如系統結構, 方便讀者明白.
到 statement of work 這部份時, 因為在顯示步驟, 請用 point form 表達.

Resource / Costs
在這些部份都是說明一些跟時間金錢有關的東西, 所以必要用圖表 / 計算表等東西來表達. 切記在金額上加上貸幣名 (HK$ / NT$)

Conclusion
這部份就是文章的概括, 有時一些比較忙的老闆可能就只看這一部份. 所以在這裹說話可以修飾得漂亮一點.
最後, 當然是在 contract 部份留下你的大名.

Visuals
多用圖表如 計算表 / 流程表 / 設計圖 / 結構圖 在什麼時候都有利 !