星期三, 6月 22, 2022

haproxy多網站對應設定

 用pound做反向代理用了很多年了,最近pound大幅改版原本就不多的功能又更精簡了,導致無法勝任原本的需求,所以換成了比較通用的haproxy。

相較於pound haproxy的功能多了許多,設定也複雜很多,我的需求是一臺反向代理對應多個(數十個)網站,haproxy要分別設定前端、後端對應,整個設定會非常繁雜。

幸好haproxy可以在設定檔中使用變量,所以就在前端設定

frontend https
        use_backend %[req.hdr(host),lower,word(1,.)]

這個變量會掫取使用者瀏覽網站的主機名稱並轉為小寫,對應到相應的後端區段。

backend XXXhostname1
        server s1 192.168.x.x1:80

backend XXXhostname2
        server s1 192.168.x.x2:80

前端使用變量以後,就不需要再對前端設定,數十個網站只要分別設定後端對應即可。




星期三, 2月 17, 2016

ownCloud 9 即將發布

很久沒有追新版ownCloud了
今天抽空看了一下,剛好即將發布的9版有一個我期待很久的新功能tagging,
tagging就是標籤有玩blog的應該都知道有多好用,ownCloud可以針對資料夾和檔案設定tagging。

可以到 https://owncloud9.owncube.com/ 註冊試用新版功能,點選檔案或資料夾旁邊的分享圖示,就有新的tagging功能可以設定。

星期四, 1月 22, 2015

Owncloud行動APP下載

Owncloud的行動APP在Google Play售價是一元美金,雖然也可以免費下載原始碼,可是沒有開發經驗的人自行編譯原碼並不容易。
F-Droid上提供Owncloud Client apk檔下載已經一段時間了,最近發現Owncloud官方網站已經將這個載點加到自己的下載網頁中了,已後使用上應該可以更安心。

xenserver 6.5版發佈

xenserver 6.5版在2015年1月13日發佈,很遺憾的不管是新聞、論壇或討論區訊息都少的可憐,如果有xenserver同好到訪歡迎留言。
主要功能增強有
  • 全64位元
  • 核心升到3.10
  • hypervisor升到4.4
  • Open Virtual Switch 升到2.10
  • GPU效能提升
  • 網路和儲存IO效能提升
  • V6.2版時被拿掉的Workload Balancing 終於又回來了
  • 6.5裡還有一個很重大的革新︰對Base Image進行快取,其它由Base Image衍生的VM開機時不用重複讀取資料,對於大量使用相同Base Image的xendesktop來說可以帶來數倍的開機效能提昇()。我是不習慣在伺服器虛擬化環境中使用Base Image,總覺得萬一Base Image壞掉下場很慘,可是又很想運用Base Image快取這種好處,期待有更多技術討論支持在伺服器虛擬化環境中使用Base Image。
最後兩點標準版不提供,是的又開始分版本了,付費版分為標準版和企業版兩個版本。

星期二, 11月 26, 2013

Xenserver 半虛擬化VM重新安裝

使用Xenserver內建範本建立的Linux VM通常使用半虛擬化(PV)模式運作,使用半虛擬化方式從範本新建系統安裝完成或安裝一半失敗,如果想要重新安裝一次。

並不是掛上安裝光碟選擇光碟開機就可以,必須要使用xe指令修改PV-bootloader設定為 eliloader

星期一, 11月 11, 2013

fail2ban 增加 ipv6 支援

fail2ban利用監控系統Log檔觸發相應的動作,達到阻擋惡意來源IP的目的。目前的版本(v0.8.6)尚未支援IPV6。
http://sourceforge.net/p/fail2ban/feature-requests/65/
https://bugzilla.redhat.com/show_bug.cgi?id=800694
http://thanatos.trollprod.org/sousites/fail2banv6/fail2ban-ipv6.tar.bz2
網路上提供的修正patch,雖然IPV6的支援功能尚未完整,但是已經可以使用。

星期三, 7月 24, 2013

Linux線上調整檔案系統大小

Linux線上調整檔案系統大小,這裡說明的線上調整大小是不需umount使用者完全零中斷的做法,前提是︰
1.使用整顆硬碟作檔案系統,不要分割磁區,這樣就不需要調整磁區(調整磁區有時會需要重開機。
2.使用xfs檔案系統,xfs是目前Linux下除了btrfs、zfs這些在Linux下還不成熟的檔案系統外,少數支援線上調整磁區大小的檔案系統。

作法︰
1.從儲存設備調整磁碟大小。
2.使用 iscsiadm -m node -T target.name --rescan   重新取得iscsi磁碟大小。
3.使用 xfs_growfs /dev/sdx   調整檔案系統大小。

20140701補充
最近發現resize2fs也可以線上調整檔案系統大小


星期三, 5月 29, 2013

xenserver nfs SR 不正常重開後問題處理

xenserver nfs SR 不正常重開機,通常重開機後虛擬機都可以不中斷繼續正常運作,不需要重開或做任何處理。但是SR裡的檔案容易有異常程序產生的 file handle,此時會有兩個異常狀況。
1. 從center對SR做RESCAN會失敗。
2. 在host console ls nfs mount的目錄會有紅色的檔案,而且檔案的大小和日期會有問號。
解決步驟︰
1. fuser -vm  /var/run/sr-mount/xxxxx-xxxxx-xxxxx-sr-uuid
會出現類似
Cannot stat file /proc/123456/fd/13: Stale NFS file handle 的訊息
123456 就是有問題的 process
2. kill -9 123456  停掉問題process就可以了。可以再檢查上面兩個狀況是否已經消失。

星期三, 4月 24, 2013

支援Owncloud的Webdav軟體

Windows內建的Webdav功能掛載Owncloud時,很容易斷線而且不能直接編輯檔案。
最近測試了 Cyberduck 發現不再斷線而且可以直接編輯回存 Owncloud 雲端儲存空間的檔案,使用介面和檔案編碼也提供中文支援,非常好用。
另外Cyberduck同時也支援了FTP、Google雲端硬碟等。

openpanel gui default port

openpanel 是開源碼的虛擬網站管理工具,安裝步驟請參考
http://www.openpanel.com/download/openpanel-download/
安裝完成後的網頁管理介面連接埠預設是4089,如果要變更預設連接埠,修改
/var/openpanel/bin/openpaneld.app/Contents/Configuration\ Defaults/com.openpanel.svc.opencore.conf.xml
使用編輯器的搜尋功能找4089會找到 <listenport>8080</listenport>
將4089改成想要的數字,再重啟openpanel服務即可。

星期二, 4月 02, 2013

ubuntu 安裝ZFS核心支援

ubuntu支援ZFS的方式有兩種,一種是透過USER SPACE (FUSE),內建的軟體來源就有支援。
如果希望從核心提供支援就要使用第三方的軟體來源。
1.  sudo add-apt-repository ppa:zfs-native/stable
2.sudo apt-get update
3.sudo apt-get install ubuntu-zfs

星期一, 2月 18, 2013

xenserver live cd boot

暫時將虛擬機使用live cd關機,虛擬機關機狀態,使用 xencenter上方功能表(右鍵沒有這個功能)----VM---Start/Shutdown---Start in Recovery Mode,就可以使用光碟開機。而且這個功能同時也支援半虛擬化的Linux作業系統

星期三, 2月 06, 2013

Bacula Heartbeat Interval

Bacula 是一套開放源始碼集中備分系統,bacula-dir負責呼叫bacula-fd進行備分,bacula-fd將備分資料傳給bacula-sd後寫入備分媒體。以上是三個主要的組件,其它的附屬工具還有bconsole、bacula-web、bscan、bcopy、、等
值得一提的是bacula提供的windows版備分用戶端還支援VSS功能,因此可以線上備分資料庫檔案,不會因為檔案使用中而備分失敗。

星期二, 2月 05, 2013

在虛擬機設定多核心CPU

Xenserver預設每虛擬CPU為單核心CPU,有時候我們在虛擬機上安裝了以CPU計價的軟體,我們就會希望設定為多核心CPU來增加運算效能而不增加軟體授權費。作法如下。

星期六, 12月 22, 2012

另一個Owncloud中文亂碼問題

另一個Owncloud中文亂碼問題,坦白說應該是另一個IE中文亂碼問題。原因瀏覽器下載檔案時檔名是參照伺服器送出的header('Content-Disposition: attachment; filename=)這個標頭,而IE在這裡的檔名竟然不支援utf-8而且到了IE9都還沒修正。為了接濟這些可憐的IE只好修改 apps/files/download.php如下
(owncloud 4.5.6版已避開了這個錯誤,不需要進行以下修改)

星期三, 12月 19, 2012

Owncloud中文目錄包裹下載

Owncloud提供私有雲端儲存環境的自由軟體解決方案,目前4.5版中文支援已經很完整,但是早期ZIP壓縮檔內的檔名不支援utf-8,所以使用ZIP格式下載整個目錄或多個檔案時大部分解縮軟體無法正確處理utf-8編碼的檔名,造成檔案目錄有中文亂碼問題。修改lib/files.php如下,可以將壓縮檔中的檔名改為以big-5編碼。


星期五, 11月 09, 2012

xenserver SR 救援實錄

我xencenter裡有一個NFS類型的storage repository,因為空間快滿了,就調大了它空間,空間調完後把相關的VM通通關一關,想說順便把NFS SERVER重開一下吧!.......

沒想到重開之後悲劇就發生了,SR有錯誤,後來才知道是因為漏關了一個VM,想說應該不難處理吧,最多VM不正常關機做一下磁碟檢查就可以修復了。

因為自覺問題不大,於是想了一個走捷徑的方法——直接到 XENSERVER手動卸載再重新掛載NFS分享,再到SR重新掃瞄,果然恢復——沒有錯誤了。

再靠近一點看,什麼,VDI全部消失了,再重新掃瞄——當然還是沒有,檢查一下是不是掛載點有問題——果然手動掛載後多了一層SR的UUID,應該可以改回來吧!

還是不要亂玩好了,用XENCENTER裡的DETACH再REATACH應該就會回來吧,果然VDI沒有棄我而去,全部再次出現。

 可是、可是,全部的VDI都只有大小,沒有NAME-LABEL、也不知道所屬的VM是誰,一共20幾個VM,每個VM2個VDI,再乘上4倍的SNAPSHOT,天啊!100多個VDI要怎麼幫它們配對。

呆了半個小時已經晚上11:00了,打起精神做好熬通霄的心裡準備,先GOOGLE看看吧!當然有人遇過,但是只找到一個解法,他因為平常有做META DATA的備分,就把XML格式的META DATA打開,一筆一筆找UID,一個一個對應回去,可是我只有剛上線的時候有做META DATA備分,那時候VM又沒幾個,遇到這種情況根本不用擔心。

凌晨12:00終於下定決心,一個一個VDI打開來看是屬於那個VM,再一個一個掛回去。
1.在XENSERVER裡SR的目錄中,使用 ls -lth依時間排序VDI,從最新的開始做,全部VM做完剩下的VDI就是SNAPSHOT,可以暫時不管它。
2.複製最新VDI檔的主名檔,這也是VDI的UUID,使用xe vdi-param-set name-label=tmp_disk uuid=剛剛複製的主檔名,這時VDI就有了臨時的名稱。
3.在XENCENTER中用唯讀方式隨便掛上一台已經開機的VM。
4.用盡全力尋找蛛絲馬跡,判斷這個VDI屬於那個VM。
5.在XENCENTER中修改為正確的名稱。
6.VDI從臨時VM卸下,掛到正確的VM。

弄了一個晚上總算趕在凌晨5:00多天亮前都掛上去,逃過上班被罵的命運。

<<<<<<  一段小插曲  >>>>>>>
WIN SERVER 2008以後的開機碟一定要用唯讀掛載,不然開機區會被改掉,掛到正確的VM也不能開機,修正方式為,使用安裝光碟開機,進入主控台修復模式,CD C:\WINDOWS\STSTEM32  執行,以下三個指令,就可以修復。

bcdedit /set {default} osdevice boot
bcdedit /set {default} device boot 
bcdedit /set {default} detecthal 1
>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<   判斷VDI是那個VM的,真的非常困難    >>>>>>>>>>
 判斷VDI是那個VM的真的非常困難,而且大多數的VM都是開給別人用的,不是自己在用,我又是系統碟、資料碟分開建的分式,系統碟還好,大不了進REGISTERY查電腦名稱,一定查的出來;資料碟通常更難判斷。後來用的最多也最也最快的方式是——從磁區大小和剩餘空間來判斷,可是又怎麼可能記得每個VM磁區的大小和剩餘空間呢?這要得力於我之前因為覺得VM數量實在愈來愈多,就導入了OCS INVENTORY——開源的資產管理軟體,來管理,這次真的幫了大忙。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

<<<<<<<  避免再次發生  >>>>>>>>>>>>>>>>>>>>>
什麼這種慘劇一次還不夠,還會再發生,建議在XENSERVER執行 xe vbd-list param=all is-a-snapshot=false > vdi-list.txt ,再COPY到自己電腦存檔有備無患。其實XENSERVER使用UUID來描述物件,強迫使用者用系統指令或介面操作物件,避免使用者直接對檔案進行操作,應該是比較先進,可以減少人為錯誤的操作方式,但是一旦手殘亂弄,弄出問題卻也讓除錯變得比較困難,那種方式比較好?只能說各有優缺點吧!畢竟使用者的選擇其實不多,用久了就知道地雷在那裡,就可以盡量發揮優點避開缺點。
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

星期四, 11月 01, 2012

線上擴展ZPOOL容量

zfs作為開放的磁碟陣列系統,當ZPOOL容量不足時當然要很容易擴充容量︰

  • 使用一般磁碟而且有空插槽︰
    1. 關機(視需要),插入新硬碟
    2. zpool add pool_name new_disk
  • 使用一般磁碟沒有空插槽︰
    1. zpool offline pool_name disk_name
    2. 關機(視需要),更換較大容量新硬碟
    3. zpool replace pool_name disk_name
    4. zpool online pool_name disk_name
  • 使用可擴展容量的儲存設備
    1. 在儲存設備上調整加大LUN的容量
    2. zpool online -e pool_name disk_name

星期二, 10月 30, 2012

zfs檔案系統內建的重複資料消除技術

重複資料消除?
Deduplication 一般常翻為重複資料刪除,總覺得這個翻譯不好,畢竟資料還是在的,沒有資料會因為重複而被刪除,其實刪除改為消除也不完全貼切,曾經想翻為"資料反重複",但是連自己唸起來都覺得怪,最後還是決定用 "重複資料消除"。
重複資料消除是目前高階儲存設備常見的功能,它運用數學演算法將資料編碼,遇到編碼相同的資料就認為是重複資料,這時就不需要再重複儲存相同資料,只要多一筆資料紀錄就好。
很明顯這樣作的好處是可以節省硬碟空間,某些情況甚至能節省數倍的空間,而且在CPU及記憶體效能充足的情況下,也有可能發揮 "以運算效能換取儲存效能" 的作用,增進儲存效能。

重複資料類別?
重複資料可以依 files(檔案), blocks(區塊)或 bytes為級別作為消除重複資料之單位。

File-level︰依整個檔案為重複資料單位,CPU負擔最小,缺點是當檔案異動時,原本相同的重複檔案就變成不同的檔案,適合用在不會異動的照片檔或影片檔。
Block-level︰適合作為虛擬主機的虛擬磁碟,因為虛擬主機的作業系統大部分檔案都是同樣的只有少數檔案不同。這也是ZFS採用的類別。
Byte-level︰以Byte為單位對於CPU的負擔最大,適合用於郵件伺服器的資料檔。

即時消除或批次消除?
重複資料消除的時間點可以是檔案儲存的同時,或另行排定系統較閒的時間批次作業。ZFS採用的是即時消除的作法。

使用方式?

zfs set dedup=on tank

該不該用,如何取捨?

重複資料消除是以CPU和記憶體的運算效能換取儲存空間和效能的一種技術,如果重複資料不多就會白白浪費許多運算效能。ZFS檔案系統的好處是檔案系統繼承了儲存池的設定後仍然可以針對個別檔案系統設定,因此可以依不同檔案系統的資料特性設定。
zfs set dedup=off tank/home
zfs set dedup=on tank/vm
zfs set dedup=on tank/src

Trust 或 verify?
zfs判別重複資料的預設演算法採用 SHA256,它的碰撞機率(不同資料但是編碼相同的機率)是 2的256次方之1,雖然這個機率很小,但是還是擔心它發生的話,只要付出額外的運算效能就能加以避免。
zfs set dedup=verify tank

選擇演算法

如果啟用驗證(verify)功能,可以搭配比較單的fletcher4演算法以減輕CPU負擔。
zfs set dedup=fletcher4,verify tank

規模和效能

重複資料消除的檔案系統愈大就必需使用愈多記憶體,DDTs (dedup tables) 必需存在記憶體中才會有比較好的效能,如果記憶體不足ZFS系統會將部分table資料壓縮存到 L2ARC,如果壓縮後還是不足才會存到磁碟中。

本文節錄自
https://blogs.oracle.com/bonwick/entry/zfs_dedup

星期三, 8月 15, 2012

freebsd 掛載 ext3 磁碟檔案系統

mount -t ext2fs /dev/da#s# /mnt/mountpoint

"#" 代表磁碟及磁區的數字代碼