2012年6月29日 星期五

Mutiple listening squid w/wo authentication

squid 要設定 ncsa_auth 認證其實不難, 有趣的是我們也可以利用 myport 來產生一個 acl
squid 的 acl 跟 iptalbes 的 rule 很像, first match first apply. 所以我們可以設定從某些 port 來的 request 不需要密碼驗證, 其他的則必須要密碼驗證。另外也可以加入允許連連線的來源網址,只要注意規則的順序就好囉!

# vi /etc/squid/squid.conf 
http_port = 3128  # listensing port B
http_port = 9999  # listensing port B
 
# Enable ncsa_auth  (htpasswd -c /etc/squid/passwd username)
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid proxy-caching web server
auth_param basic credentialsttl 2 hours
auth_param basic casesensitive off

 
# Add filter for ncsa auth
acl lab_lan src 172.18.0.0/22 172.18.4.0/22 # multiple CIDR network
acl ncsa_users proxy_auth REQUIRED

acl no_auth myport 9999
http_access allow no_auth lab_lan
http_access allow ncsa_users lab_lan

# Deny others ...
 http_access deny all

some place

I am always keep finding some place to record some of my thoughts...

2012年6月19日 星期二

Transform putty ppk key to OpenSSH authorized_keys

在登入EC2的機器時,我們常會將 ssh key pair 轉換成 putty 的 ppk 以方便遠端登入。如果有天需要將這把 ppk 轉換成 OpenSSH 可以使用的 public key 要怎麼辦呢?
  1. 使用 puttygen 讀取 ppk,  接著點選 Save public key
  2. 將 public key 的內容存成遠端機器上的純文字檔
  3. ssh-keygen -i -f {純文字檔} > OpenSSH_authorized_key
  4. cat openssh_authorized_key >> ~/.ssh/authorized_keys
這樣就可以用 ppk 來登入遠端的機器囉!

2012年6月18日 星期一

Tips for bundling EC2 RHEL image with ephemeral storage

如果在 EC2 選了一個 ebs block device 是 6G 的 image, 要怎麼重新 bundle 成自己要的  image 呢?
首先是要下載 ec2-ami-tools, 裝完後, 如果你的系統有被 ruby rvm 搞爛了...導致一執行 ec2-bundle-vol 就出現 require error, 那先暫時把 path 設回系統的預設值吧! export PATH=/usr/bin:$PATH, 這時候下
ec2-bundle-vol -c /mnt/cert-XXXX.pem -k /mnt/pk-XXXX.pem -u {userid} -e /mnt -d /mnt
理論上會因為 /mnt 空間太小或者 loop device 在做轉存 image 的過程中耗光了可用空間,導致 bundle 失敗..其實 EC2 所有的 instance 都有 local 的 ephermal storage, 只是有的 instance 預設不會幫你 mount 起來, 而且 EC2 也不保證放在ephermal storage 上資料的安全性。這時候我們可以去手動把這個空間 mount 來, 做成 bundle image 時的暫存空間。以 RHEL 6.0 來說, ephermal storage 的 device id 可能為 /dev/xvd{X}, 可以先用 fdisk 看一下大小, 然後再用 mkfs /dev/xvd{X} 將其格式化在手動 mount 起來!
假設我將 ephermal storage 掛在 /emp 下,那最後用 ec2-bundle-vol 的指令就會變成
ec2-bundle-vol -c /mnt/cert-XXXX.pem -k /mnt/pk-XXXX.pem -u {userid} -e /mnt,/emp -d /emp
有時候倒霉的話還會遇到說 rsync 版本太舊,建議 upgrade後再重新 bundle 一次....不過應該可以不理它, 因為 bundle 還是會繼續....

2012年6月17日 星期日

Setup Dell Equallogic iSCSI storage for ESX/ESXi Host

Dell Equallogic Multiple Path Extension

For ESX 4
setup.pl --install --server={HOST} --bundle=c:\dell-eql-mem-esx4-1.1.0.222691.zip
setup.pl --server={HOST} --configure --ips={iSCSI Client IP 1},{iSCSI Client IP 1} --nics={iSCSI Client Nic 1},{iSCSI Client Nic 2} --enableswiscsi --netmask={{iSCSI Client IP Netmask}} --mtu=9000 --enableswiscsi

如果 Client iSCSI vSwitch 已經設定過了, 在安裝 Equallogic MEM 的時候,很可能會出現錯誤說請先移除無效的vmknic。這似乎是 ESX 4/5 的一個 bug, vSwitch在被移除後, vmknic IP會被清空但是卻不會移除乾淨。尤其是當iSCSI device 還連線的話,連進ssh下指令也是無法移除vmknic。

ESX5 我的做法是:
1. 用vSphere Client移除 vSwitch
2. 用SSH登入ESX, 利用esxcli中斷該 vSwitch 的 iSCSI session
esxcli iscsi session remove -A {iSCSI software adapter}
3. 移除該 vSiwtch 下,被清空但是未移除的 vmnic
esxcli iscsi networkportal remove -A {iSCSI software adapter} -n {vmnicX}

ESX 4 的話命令有點不一樣,不過原理都是一樣的。移除 vSwitch和其下的網卡,如果無法移除成功那就是還有 iSCSI session 存在,想辦法把他關掉或者重開機後就可以移除乾淨了。這時候就可以順利安裝 Equallogic 的 Plugin.

ESX5 Dell Equallogic Plugin 在ESX5透過 vSphere CLI安裝總是會失敗(ESX 4是正常的),我的做法是:
1. 先把 plugin dell-eql-mem-esx5-1.1.0.222691.zip 透過vShpere Client的 browse datastore上傳到 local data store,
2. SSH進ESX 5 host
3. copy plugin dell-eql-mem-esx5-1.1.0.222691.zip to /var/log/vmware  (重要!!)
4. 然後執行 esxcli software vib install --bundle={plugin dell-eql-mem-esx5-1.1.0.222691.zip path}
這樣 plugin 就可以完成安裝啦!

為什麼一定要用 Dell 的 MEM Plugin 呢? 其實我也還不知道。
在ESX 4 的時候,要設定 MTU=9000 使用 Jumbo Frame的話,透過這個 plugin 來安裝和設定 multipath是最快的!
但是在ESX5以後,vSwitch下的NIC已經可以直接設定MTU,也提供了比ESX4多的資料,手動設定Multi Path似乎也不會很麻煩。
其實這個Plugin還有對ESX host 做一連串的指令,或許等哪天我有新的發現,再來update吧。

依照我有強迫症的情況,我想我ESX4 / 5 的 Host 都會裝上 Plugin XD