online.net 的服务器安装xenserver,并且给VM 配置多IP

online.net 的服务器比较便宜,我也入手了一个做开发

但是他们使用的是failover IP,比较烦人。对于failover 的IP的配置,应该是这样

IPADDR: 你的failover IP

NETMASK: 255.255.255.255

GATEWAY: 把你的主IP 的最后一位改为1 即可

这是在centos 上的设置,用netinstall 可能会有问题。 这个时候再netinstall 的时候, 选用255.255.0.0 位netmask,主IP的最后一位改成1的IP为gateway 的IP

这样就让failover IP 和 gateway IP 在同一个IP段,这样就可以进行安装了。

等安装完毕以后,再改回原来上面的样子,然后在按照下面所说来添加IP route

 

 

但是安装完重启就不行了,这是因为ipaddr 和你的gateway 的IP 不在一个subnet上,你需要手工添加一条静态路由

假如说你用的是eth0,那么你就需要给eth0 添加一条静态路由:

File : /etc/sysconfig/network-scripts/route-eth0

GATEWAY_VM dev eth0
default via GATEWAY_VM dev eth0

然后重启

service network restart,这样你的IP 就可以被外界所访问了.

这是在你的 VM 上只有一个IP的,如果你有多个IP的时候,这个和普通的centos 一样,添加多个IP,但是当你在重启network 的时候,会发现centos 总是说:

Bringing up interface eth0: SIOCADDRT: No such process

这是因为系统在强制给你的 ip aliase 添加默认路由,其实这是不需要的了,因为已经添加在你的VM 的主 IP 上

这个时候你可以在ifcfg-eth0 上禁止向ip aliase 添加路由:

NO_ALIASROUTING=yes

 

如果你安装的是debian,那么就更简单了,编辑/etc/network/interfaces

修改如下即可:

auto eth0
iface eth0 inet static
address IP-Failover
netmask 255.255.255.255
broadcast IP-Failover
gateway MAIN-SERVER-IP.1
pointopoint MAIN-SERVER-IP.1

 

然后退出,运行service networking restart 即可

 

Linux GRE 中使用source based routing

现在很多米国的机房都在使用cisco 的路由,禁止流量从不属于自己的ip space 中流出自己的network,这就给GRE tunnel 造成了很大的不变。

但是也不是没有解决办法,这就是source based routing。

分为三步:

1) 加个路由表

2) 让tunnel 过来的 IP 使用新家的路由表

3) 给新加的路由表添加一个默认的gateway就可以了,这样通过tunnel 过来的IP 就可以按照原路返回

code:

1) echo ‘100 GRE’ >> /etc/iproute2/rt_tables

2) ip rule add from 198.255.255.0/24 table GRE

这里认为你把整个c段198.255.255.0/24 tunnel 到你现在的这台机器上

3) ip route add default via 192.168.1.1 table GRE

让这个新的IP 段使用192.168.1.1的 gateway,按照原来返回

megacli 命令的用法

最近买的一些server,自身的主板上都带有 LSI RAID card,我们可以使用megacli command 来检查一些参数的状态

首先我们必须安装LSI Logic 提供的megacli 工具

可以直接使用已编译好的源: http://hwraid.le-vert.net/

crontab:

可以直接使用这个crontab file 来自动检测LSI RAID 的状态: http://it.bmc.uu.se/andlov/docs/linux/raid/files/megacli.cron

这篇post 的主要目的是megacli 命令:

显示raid adapter 的所有信息:

megacli -AdpAllinfo -aALL

显示物理硬盘的信息:

megacli -PDList -aALL

显示逻辑硬盘的信息:

megacli -LDGetProp -LALL -aALL

检查 raid rebuild 的状态:

megacli -AdpAllinfo -aALL | grep -i rebuild

更多的信息参见这里: http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS

 

Xenserver 上安装 centos 和 debian

以前很傻呼呼的,都是直接用的minimal cd 安装的,现在知道了原来还可以用URL 的方式安装

对于centos来说,可以使用这些URL:

http://mirrors.sonic.net/centos/6/os/x86_64/

http://less.cogeco.net/centos/6/os/x86_64/

http://centos.mirror.constant.com/6/os/x86_64/

http://centos.mirror.root.lu/centos/6/os/x86_64/

http://mirror.nl.leaseweb.net/centos/6/os/x86_64/

http://repos.lax.quadranet.com/centos/6/os/x86_64/

亚洲的可选:

http://centos.mirror.cdnetworks.com/6/os/x86_64/

安装完以后安装 xentools:

mount /dev/cdrom /media
cd /media/Linux/

./install.sh

 

在 xenserver上安装debian,可以使用一下URL:

ftp://ftp.us.debian.org/debian

安装xen tools:

mount /dev/cdrom /media
cd /media/Linux/

./install.sh

Javascript 中需要转义的字符

最近需要coding的程序跨越了太多了语言。。。总是弄混了,今天把 javascript 中需要转义的字符列出来,做个记录,以后也方便了。

注释 $ 匹配输入字符串结尾的位置。如果设置了 RegExp 对象的 Multiline 属性,那么 $ 还匹配 \n 或 \r 前面的位置。若要匹配 $ 字符本身,请使用 \$。

( ) 标记子表达式的开始和结束。可以捕获子表达式以供以后使用。若要匹配这两个字符,请使用 \( 和 \)。

* 零次或多次匹配前面的字符或子表达式。若要匹配 * 字符,请使用 \*。

+ 一次或多次匹配前面的字符或子表达式。若要匹配 + 字符,请使用 \+。

. 匹配除换行符 \n 之外的任何单个字符。若要匹配 .,请使用 \。 [ ] 标记中括号表达式的开始。若要匹配这些字符,请使用 \[ 和 \]。

? 零次或一次匹配前面的字符或子表达式,或指示“非贪心”限定符。若要匹配 ? 字符,请使用 \?。

\ 将下一字符标记为特殊字符、文本、反向引用或八进制转义符。例如,字符 n 匹配字符 n。\n 匹配换行符。序列 \\ 匹配 \,序列 \( 匹配 (。

/ 表示文本正则表达式的开始或结束。若要匹配 / 字符,请使用 \/。

^ 匹配输入字符串开始处的位置,但在中括号表达式中使用的情况除外,在那种情况下它对字符集求反。若要匹配 ^ 字符本身,请使用 \^。

{ } 标记限定符表达式的开始。若要匹配这些字符,请使用 \{ 和 \}。

| 指出在两个项之间进行选择。若要匹配 | ,请使用 \|

用google DFP 来 serve 第三方的popunder tag

一个网站只放一个popunder 的 tag 有点太吃亏了,但是如果用收费的ad server 去 rotate ad tag的话,那有太贵了。因为pop under 的 ad tag 并不是每个call 都会创建pop under 的ad的,李米娜有一个frequency 的限制,一般为1/24.

Google DFP 在这上面是免费的,可以很好的解决这个问题。但是如何用google DFP来循环serve 第三方的pop under tag 呢?

首先需要创建ad unit,popup 和 pop under 都属于out of page 的广告,所以ad unit 的size要设置为1X1.

然后去创建order,在line 里面的ad size 选择为1X1, 然后广告选择为3rd party,就可以了。

关键的地方在于如何获得ad unit 的 tag code

我在这个地方花费了好几个小时才发现:

1) tag 要是用sync的, async 的不听

2) 取消 single request

3)添加out of page 的属性

 

完成这几步,你的pop under 就会开始delivery 啦

安装newrelic 出现问题

今天在瑞典的cloud上部署反代的时候,安装newrelic 的 服务器agent 出现错误

类似于如下在stackoverflow上提出的问题

ERROR: The certificate of `www.dropbox.com’ is not trusted.
ERROR: The certificate of `www.dropbox.com’ hasn’t got a known issuer.

这个问题其实很简单,是ubuntu 或者debian上常常出现的问题,就是 ca 的丢失,解决的办法,直接在ssh上运行:

sudo apt-get install ca-certificates

即可解决

卸载php 的 geoip 模块

上一篇文章写的是如何在centos 下快速安装php 的 geoip 模块。。

但是今天的程序和geo ip模块冲突了。。nnd。。没有办法。。必须去卸载。。可是一想卸载,就傻了。。平时都是安装各种模块。。去卸载的话。。还真是少见。。。

急忙去看PECL的文档。。。一个命令搞定,登陆ssh,执行命令:

pecl uninstall geoip

立马完事

在 centos 上 安装 GEOIP 的插件

最近因为一些特殊的要求,再使用 piwik 做站点的数据统计

piwik 需要 geo的数据库,对piwik 最好的方式是安装geoip 的 pecl 插件

因为不想重新编译安装,所以直接采用yum 来安装,三部即可完成

1 yum安装geoip

yum install geoip geoip-devel

2 安装pecl 的geoip模块

pecl install geoip

3 重启httpd

service httpd restart

很简单的三步即可完成