http://www.tinyapps.org/docs/vnc/
or here
http://www.raymond.cc/blog/archives/2007/04/05/free-and-easy-remote-acce...
and reverse ssh:
on linux server
see following
http://linux.byexamples.com/archives/238/ssh-reverse-tunneling/
heartbeat+drbd+nfs
1 文档说明... 1
2 服务器说明... 2
3 drbd的安装和配置... 2
3.1 drbd主机上的操作... 2
3.2 drbd从机上的操作... 4
4 heartbeat的安装和配置... 6
5 drbd服务器上的nfs 服务的配置 (drbd的主机和从机上的操作都相同)... 7
6 nfs 客户端的配置 ----172.20.67.132. 7
7 整体的测试... 7
8 补充说明... 8
1 文档说明
假如主服务器宕机,造成的损失是不可估量的。要确保主服务器不间断服务,就需要对服务器实现冗余。在众多的实现服务器冗余的解决方案中,heartbeat为我们提供了廉价的、可伸缩的高可用集群方案。我们通过heartbeat+drbd在Linux下创建一个高可用(HA)的集群服务器。
DRBD是一种块设备,能够被用于高可用(HA)之中。他类似于一个网络RAID-1功能。当您将数据写入本地文档系统时,数据还将会被发送到网络中另一台主机上。以相同的形式记录在一个文档系统中。本地(主节点)和远程主机(备节点)的数据能够确保实时同步。当本地系统出现故障时,远程主机上还会保留有一份相同的数据,能够继续使用。在高可用(HA)中使用DRBD功能,能够代替使用一个共享盘阵。因为数据同时存在于本地主机和远程主机上。转换时,远程主机只要使用他上面的那份备份数据,就能够继续进行服务了。
12台服务器为一组,任何服务器的操作系统都保存在主服务器上,其他服务器pxe启动后通过网络挂载在主服务器上通过nfs服务提供的linux操作系统(也就是除了主服务器都是无盘机,即便有硬盘也是用来备份数据用的,操作系统都在主服务器上)
2 服务器说明
172.20.67.130 ----主机名drbdzhu------角色drbd的主服务器
172.20.67.131 ----主机名drbdcong ---------角色 drbd的辅助服务期
172.20.67.132 ----主机名 nfsclient ---角色 nfs的客户端
3 drbd的安装和配置
3.1 drbd主机上的操作
[root@drbdzhu local]#tar zxvf drbd-8.2.1.tar.tar
[root@drbdzhu local]#cd drbd-8.2.1
[root@drbdzhu drbd-8.2.1]#make
假如编译顺利能够看到Module build was successful.
[root@drbdzhu drbd-8.2.1]#make install
能够编辑配置文档了
[root@drbdzhu drbd-8.2.1]# vi /etc/drbd.conf 内容如下:
skip {
As you can see, you can also comment chunks of text
with a ’skip[optional nonsense]{ skipped text }’ section.
This comes in handy, if you just want to comment out
some ’resource {...}’ section:
just precede it with ’skip’.
The basic format of option assignment is
;
It should be obvious from the examples below,
but if you really care to know the details:
:=
valid options in the respective scope
:= |||...
depending on the set of allowed values
for the respective option.
:= [0-9]+, sometimes with an optional suffix of K,M,G
:= (|\"([^\"\\\n]*|\\.)*\")+
:= [/_.A-Za-z0-9-]+
}
global {
usage-count yes; (是否参加使用者统计,yes为参加)
}
common {
syncer { rate 10M; }
}
resource r0 { (能够有多个资源,如r1,r2等)
protocol C; (数据同步协议,C为收到数据并写入后返回,确认成功)
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/sbin/drbd-peer-outdater";
}
startup {
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
#size 100G; (由于实验环境下两台服务器硬盘大小不同,所以需要配置drbd的大小)
}
net {
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 10M; (配置网络同步速率)
al-extents 257;
}
on drbdzhu { (drbdzhu是指服务器的主机名)
device /dev/drbd0;
disk /dev/sdb1;
address 172.20.67.132:7788;
meta-disk internal;
}
on drbd { (drbd是指服务器的主机名)
device /dev/drbd0;
disk /dev/sdb1;
address 172.20.67.159:7788;
meta-disk internal;
}
}
[root@drbdzhu drbd-8.2.1]#chkconfig --level 35 drbd on #自动启动服务
[root@drbdzhu drbd-8.2.1]#fdisk /dev/sdb #创建分区
[root@drbdzhu drbd-8.2.1]#drbdadm create-md r0 #创建drbd资源
[root@drbdzhu drbd-8.2.1]#drbdsetup /dev/drbd0 primary -o #把drbd0设为主
[root@drbdzhu drbd-8.2.1]#service drbd start #启动服务
[root@drbdzhu drbd-8.2.1]#mkfs.ext3 /dev/drbd0 (有时候下一步mount不上就需要做这一步)
[root@drbdzhu drbd-8.2.1]#mount /dev/drbd0 /mnt #挂载
[root@ drbdzhu drbd-8.2.1]# cat /proc/drbd
version: 8.2.1 (api:86/proto:86-87)
GIT-hash: 318925802fc2638479ad090b73d7af45503dd184 build by root@metadata, 2007-12-28 17:30:46
0: cs:Connected st: Primary/Secondary ds:UpToDate/UpToDate C r---
ns:104427 nr:42 dw:7946 dr:110895 al:15 bm:28 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:6515 misses:7 starving:0 dirty:0 changed:7
act_log: used:0/257 hits:2021 misses:15 starving:0 dirty:0 changed:15
3.2 drbd从机上的操作
[root@drbdzhu local]#tar zxvf drbd-8.2.1.tar.tar
[root@drbdzhu local]#cd drbd-8.2.1
[root@drbdzhu drbd-8.2.1]#make
假如编译顺利能够看到Module build was successful.
[root@drbdzhu drbd-8.2.1]#make install
能够编辑配置文档了
[root@drbdzhu drbd-8.2.1]# vi /etc/drbd.conf 内容如下:
skip {
As you can see, you can also comment chunks of text
with a ’skip[optional nonsense]{ skipped text }’ section.
This comes in handy, if you just want to comment out
some ’resource {...}’ section:
just precede it with ’skip’.
The basic format of option assignment is
;
It should be obvious from the examples below,
but if you really care to know the details:
:=
valid options in the respective scope
:= |||...
depending on the set of allowed values
for the respective option.
:= [0-9]+, sometimes with an optional suffix of K,M,G
:= (|\"([^\"\\\n]*|\\.)*\")+
:= [/_.A-Za-z0-9-]+
}
global {
usage-count yes; (是否参加使用者统计,yes为参加)
}
common {
syncer { rate 10M; }
}
resource r0 { (能够有多个资源,如r1,r2等)
protocol C; (数据同步协议,C为收到数据并写入后返回,确认成功)
handlers {
pri-on-incon-degr "echo o > /proc/sysrq-trigger ; halt -f";
pri-lost-after-sb "echo o > /proc/sysrq-trigger ; halt -f";
local-io-error "echo o > /proc/sysrq-trigger ; halt -f";
outdate-peer "/usr/sbin/drbd-peer-outdater";
}
startup {
degr-wfc-timeout 120;
}
disk {
on-io-error detach;
#size 100G; (由于实验环境下两台服务器硬盘大小不同,所以需要配置drbd的大小)
}
net {
after-sb-0pri disconnect;
after-sb-1pri disconnect;
after-sb-2pri disconnect;
rr-conflict disconnect;
}
syncer {
rate 10M; (配置网络同步速率)
al-extents 257;
}
on drbdzhu { (drbdzhu是指服务器的主机名)
device /dev/drbd0;
disk /dev/sdb1;
address 172.20.67.130:7788;
meta-disk internal;
}
on drbdcong { (drbd是指服务器的主机名)
device /dev/drbd0;
disk /dev/sdb1;
address 172.20.67.131:7788;
meta-disk internal;
}
}
[root@drbdcong drbd-8.2.1]#chkconfig --level 35 drbd on #自动启动服务
[root@drbdcong drbd-8.2.1]#fdisk /dev/sdb #创建分区
[root@drbdcong drbd-8.2.1]#drbdadm create-md r0 #创建drbd资源
[root@drbdcong drbd-8.2.1]#service drbd start #启动服务
注意:drbd 从机无需mount
[root@ drbdcong drbd-8.2.1]# cat /proc/drbd
version: 8.2.1 (api:86/proto:86-87)
GIT-hash: 318925802fc2638479ad090b73d7af45503dd184 build by root@drbd, 2007-12-28 17:23:06
0: cs:Connected st: Secondary/Primary ds:UpToDate/UpToDate C r---
ns:42 nr:104427 dw:104469 dr:86 al:2 bm:9 lo:0 pe:0 ua:0 ap:0
resync: used:0/31 hits:6515 misses:7 starving:0 dirty:0 changed:7
act_log: used:0/257 hits:40 misses:2 starving:0 dirty:0 changed:2
4 heartbeat的安装和配置
[root@drbdzhu local]#rpm ?ivh heartbeat-pils-2.0.4-1.el4.i386.rpm
[root@drbdzhu local]#rpm ?ivh heartbeat-stonith-2.0.4-1.el4.i386.rpm
[root@drbdzhu local]#rpm ?ivh heartbeat-2.0.4-1.el4.i386.rpm
[root@drbdzhu local]#cd /usr/share/doc/heartbeat-2.0.4
[root@drbdzhu heartbeat-2.0.4]# cp authkeys ha.cf haresources /etc/ha.d/
[root@drbdzhu heartbeat-2.0.4]#cd /etc/ha.d
[root@drbdzhu ha.d]#vi ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
ucast eth0 172.20.67.131 //ucast方式 心跳线网卡 ,对端ip
auto_failback on
node drbdzhu
node drbdcong {//HA的两个节点,机器名要在hosts中定义(机器名能够自己指定只要在hosts中有定义就行)
vi /etc/hosts添加如下两行:
172.20.67.130 drbdzhu
172.20.67.131 drbdcong
[root@drbdzhu ha.d]# vi authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
[root@drbdzhu ha.d]#vi haresources
drbdzhu 172.20.67.220 drbddisk::r0 Filesystem::/dev/drbd0::/mnt::ext3 nfs
[root@drbdzhu ha.d]#service heartbeat start
5 drbd服务器上的nfs 服务的配置 (drbd的主机和从机上的操作都相同)
[root@drbdzhu ha.d]# vi /etc/exports
/mnt 172.20.67.132(rw, no_root_squash,async)
[root@drbdzhu ha.d]#chkconfig --del nfs
6 nfs 客户端的配置 ----172.20.67.132
#service nfs start
#mount -t nfs 172.20.67.220:/mnt /usr/local/src
7 整体的测试
在drbd的主机上
#cd /mnt
#touch test0
#ls
Test0
在nfs 的客户端
# cd /usr/local/src
#ls
Test0
在drbd的主机上
#service heartbeat stop
在drbd的从机上
#cd /mnt
#ls
test
#touch test1
在nfs 的客户端
# cd /usr/local/src
#ls
Test0 test1 (说明配置成功)
8 补充说明
在没有heartbeat 的情况下,要想看到drbd的效果,做法如下:
在drbd的主机上
#cd /mnt
#touch test0
#ls
test0
在drbd的从机上
#cd /mnt
#ls
空的
此时应该把drbd的主地位将为从#drbdsetup /dev/drbd0 secondary----主机上操作
在把从机的drbd 升为主地位 # drbdsetup /dev/drbd0 primary ?o --------从机上操作
在drbd的从机上
#cd /mnt
#ls
test0
这样就说明drbd 主从备份成功!