| Subcribe via RSS

RHEL5 使用 CentOS5 yum

7月 25th, 2008 | 2 Comments | Posted in Linux < by Martian Guo >
for file in `rpm -qa |grep yum`; do rpm -e $file --nodeps ; done
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-metadata-parser-1.1.2-2.el5.i386.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/python-iniparse-0.2.3-4.el5.noarch.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-3.2.8-9.el5.centos.1.noarch.rpm
rpm -ivh http://mirror.be10.com/centos/5.2/os/i386/CentOS/yum-updatesd-0.9-2.el5.noarch.rpm
rpm --import http://mirror.be10.com/centos/RPM-GPG-KEY-CentOS-5
wget http://www.hiadmin.com/wp-content/uploads/2008/07/Centos-Base.repo -P /etc/yum.repos.d/
yum update
阅读内文 Tags: , ,

VirtualBox下正常启动Ubuntu server

7月 10th, 2008 | 2 Comments | Posted in Linux < by Johnny Woo >

在安装好之后
VirtualBox 1.62启动Ubuntu 8.04 server会有问题
系统直接报错
This kernel requires the following features not present on the CPU:
0:6 Unable to boot - please use a kernel appropriate for your CPU
网上有的说打开PAE/NX可以
有的说打开VT可以解决
有的说都选上,不选择VT可以
结果测试下来都无效
最后其实是因为SERVER版的核心是针对性编译的
所以可能会有不兼容
用ISO光盘启动进去
进入rescure模式
然后再结束时候
使用apt-get install linux-generic
重启之后选择kernel-generic
就可以使得系统正常启动了

阅读内文 Tags: , , ,

Gentoo LiveCD 2008.0 正式版BUG

7月 7th, 2008 | 2 Comments | Posted in Linux < by Johnny Woo >

Gentoo Installer(GUI以及CLI模式)
在安装到grub都会报错无法找到/boot下的kernel-*
而其实安装包里面根本就没有包含kernel的包
在gentoo的官方论坛上
也有许多人提出了同样的bug

yea... I am really bothered by the fact that NO ONE from Development or Testing has tested the Live CD PROPERLY... nobody saw that in real normal installation, GRUB hangs because the Kernel is not copied exactly from the LiveCD...

正式版居然安装都出问题…汗

今天早上.Gentoo把这个问题解决了
导致问题的原因是(官方解释)

A hack was added at the last minute in order to get the size of the LiveCD down
below 700MB. We empty out /boot in the squashfs and then at boot time, we mount
a tmpfs and copy back in the kernel/initramfs from the ISO root. This procedure
was mostly untested and apparently a bit buggy.

新的2008.0-r1
可以从以下地址下载
http://ftp.uni-erlangen.de/pub/mirrors/gentoo/releases/x86/2008.0/livecd/livecd-i686-installer-2008.0-r1.iso

这次又一个bug
虽然kernel可以正常安装了
但是安装到硬盘上的grub
把splash的图片去掉了
导致引导grub的时候,会等很长时间.
至少如果你不用图片.把grub配置里那句东西去掉吧
唉…真不知道gentoo这帮做发布版的人怎么想的.
你们就不好好测试一下么.

阅读内文

Ubuntu下包管理

7月 4th, 2008 | 3 Comments | Posted in Linux < by Johnny Woo >

查询包
apt-cache search

安装包
apt-get install

删除包
apt-get remove

升级包
atp-get upgrade

查询已安装包
dpkg -l | grep

阅读内文

udev 下绑定 网卡名

7月 4th, 2008 | No Comments | Posted in Linux < by Martian Guo >

在 /etc/udev/rules.d 下查看一下是否有以下内容

grep "eth" /etc/udev/rules.d/*

如果没有的话自己建立一个像下面这样的文件

vi  /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x1106:0x3106 (via-rhine)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:95:ff:1c:c6", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 
# PCI device 0x8086:0x1019 (e1000)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:11:d8:3e:d5:19", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

关于udev介绍 请看下面两篇文档
http://blog.csdn.net/chinalinuxzend/archive/2007/10/21/1836110.aspx
http://webpages.charter.net/decibelshelp/LinuxHelp_UDEVPrimer.html

阅读内文 Tags: ,

使用双网卡聚合提高服务器高可用性

6月 24th, 2008 | No Comments | Posted in Linux < by Michael Field >

许多应用情况下,在流量超过100M而网卡只是100M的,我们可以采取双网卡聚合的方式来提高服务器的流量(一般服务器都是双网卡的吧);而交换机方面无需特别配置;
具体配置如下:
1.增加虚拟网卡:

vi /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
BOOTPROTO=static
BROADCAST=192.168.1.255
IPADDR=192.168.1.2
NETMASK=255.255.255.0
ONBOOT=yes

2.修改原来物理网卡设置:

网卡1

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

网卡2

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=dhcp

3.增加虚拟网卡模块

vi /etc/modprobe.conf

alias bond0 bonding
options bond0 miimon=100 mode=0

说明:miimon是用来进行链路监测的。 比如:miimon=100,那么系统每100ms监测一次链路连接状态,如果有一条线路不通就转入另一条线路;mode的值表示工作模式,他共有0,1,2,3四种模式,常用的为0,1两种。
mode=0表示load balancing (round-robin)为负载均衡方式,两块网卡都工作。
mode=1表示fault-tolerance (active-backup)提供冗余功能,工作方式是主备的工作方式,也就是说默认情况下只有一块网卡工作,另一块做备份.
bonding只能提供链路监测,即从主机到交换机的链路是否接通。如果只是交换机对外的链路down掉了,而交换机本身并没有故障,那么bonding会认为链路没有问题而继续使用
本案例中使用mode=0的配置来做负载均衡提高系统性能,增大并发带宽。

4.加入到开机自动运行

vi /etc/rc.d/rc.local

ifenslave bond0 eth0 eth1
route add -net 192.168.1.254 netmask 255.255.255.0 bond0

重启系统后能看到3块网卡,其中bond0的流量是eth0+eth1的总和。

查看bond0虚拟网卡

cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.1.2 (January 20, 2007)

Bonding Mode: load balancing (round-robin)
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0

Slave Interface: eth0
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1e:4d:24:ec:49

Slave Interface: eth1
MII Status: up
Link Failure Count: 0
Permanent HW addr: 00:1e:4d:24:ed:4b

5.试验验证

用外部同一网段的一台机器做ping试验,双网卡机器上手工拔掉其中任意一条网络线(或者使用ifup eth0&&ifdown eth1),ping机器的终端应该没有中断信息,或者有一个”timeout”后很快恢复,则证明试验成功。

阅读内文

一次性口令 opie

6月 22nd, 2008 | No Comments | Posted in Linux, 应用软件 < by Martian Guo >

OPIE (One-time Passwords In Everything)是FreeBSD下的一个安全口令管理工具,可以通过一个预先设置的秘密口令(passphrase) 计算出当前的一次性登录口令。具体介绍请看下面这个链接

http://cnsnap.cn.freebsd.org/doc/zh_CN.GB2312/books/handbook/one-time-passwords.html

这里介绍一下在Linux环境下的具体安装配置

下载软件包
opie-24-630.src.rpm
Winkey

安装

[root@martian SPECS]# rpm -ivh opie-24-630.src.rpm
[root@martian SPECS]# rpmbuild -bb opie.spec
[root@martian SPECS]# rpm -ivh /usr/src/redhat/RPMS/i386/opie-2.4-630.i386.rpm

初始化
使用Winkey.exe 设置一个passphrase 计算出一次性口令 并在 Response 中输入

[root@martian SPECS]# opiepasswd -n 1000 -s LinuxServer
Updating root:
You need the response from an OTP generator.
New secret pass phrase:
otp-md5 1000 LinuxServer
Response:reid klan nair afar silt char

ID root OTP key is 1000 LinuxServer
REID KLAN NAIR AFAR SILT CHAR

设置ssh使用opie认证
打开以下sshd_config 选项

PasswordAuthentication no
ChallengeResponseAuthentication yes
GSSAPIAuthentication yes
GSSAPICleanupCredentials yes
UsePAM yes

设置/etc/pam.d/sshd

加入

auth       required     /lib/security/pam_opie.so

注释掉

#auth       required     pam_stack.so service=system-auth

重启sshd

opie 是通过pam模块pam_opie 达到口令认证目的,所以任何使用pam认证模块的程序都可以用opie来实现一次性口令,并且如果能够用程序自动设置、管理和定时更新秘密口令并且提供一个访问接口用于获取当前的一次性口令,那就可以真正做到一次性口令过期和唯一性,我觉得这个东西关键还在于秘密口令的管理上,如果你知道了这个秘密口令,那就可以获取到任意多个一次性口令,而且这些一次性口令在未使用情况下都是有效的,并不存在过期问题,它只能保证一次性口令在网络传输过程中的安全,因为即使被截获了,只要当前已经使用过了,那也是一个过期口令。

阅读内文 Tags: , ,

用vim转换M$文本中的换行符^M

6月 19th, 2008 | 4 Comments | Posted in Linux < by Martian Guo >

在DOS/Windows里,文本文件的换行符为\r\n,而在*nix系统里则为\n,所以DOS/Windows里编辑过的文本文件到了*nix里,每一行都多了个^M。删掉该字符可以在VI里用下面的方法试试

:% s/\r//g

:% s/^M//g
注意 ^M 的输入用  Ctrl+v,再按回车,或者是 Ctrl+v, Ctrl+m。

阅读内文 Tags:

Openfire 修改服务器名 解决方法

6月 18th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

OpenFire在安装第一次设置了服务器名后
虽然可以通过管理界面修改
但是修改后的Openfire却无法正常工作
而服务器名前也会有个惊叹号
其实查看openfire的警告记录我们可以发现
在修改了服务器名后重启
会有两条关于证书的警告消息
由于openfire在设置好之后
会用服务器名来作为证书的一部分
所以只是单纯的修改服务器名
会导致证书和服务器不一致
导致无法正常使用

解决方法:
服务器设置 -> 服务器证书
将原来的两个密钥删除
然后会提示重启http服务
点击重启并重新登陆管理界面
回到删除密钥的地方
会提示现在没有密钥,需要添加密钥
点添加.OK了.按照新的服务器名的密钥已经生成并且添加了
这时候再回去看服务器状态,服务器名前面的惊叹号已经没有了
我们也可以正常使用jabber服务了

阅读内文 Tags: ,

sed 思维导图 快速学习指南

6月 18th, 2008 | No Comments | Posted in Linux, shell < by Martian Guo >

Flash plugin or Javascript are turned off. Activate both and reload to view the mindmap

sed mind map

阅读内文 Tags: ,

NFS简单使用

6月 16th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

不动LINUX好多年,NFS也基本忘光光了…
言归正传

A.NFS服务端
首先,环境是CentOS 5.1,默认的话nfs server已经帮你装上去了.
所以启动很简单
执行/etc/rc.d/init.d/nfs restart
然后是把要共享出去的东西写上
编辑/etc/exports

<?php
/
var/www/uploads Ihompyweb1(rw,sync)

编辑/etc/hosts
把客户端的hostname加进去

B.NFS客户端
修改/etc/hosts
把NFS服务器的名字加上
否则可能会导致mount的时候permission denied
1.使用mount命令挂载

mount -t nfs  IhompyMedia1:/var/www/uploads /var/www/ihompy/www/uploads

2.使用fstab挂载
修改/etc/fstab

IhompyMedia1:/var/www/uploads   /var/www/ihompy/www/uploads     nfs     rw      0 0

3.使用autofs挂载
我太懒了.所以没用这个
想看的可以参考这个
http://docs.huihoo.com/redhat/rhel-sag-zh_cn-3/s1-nfs-mount.html

阅读内文

ffmpeg安装包

6月 13th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

使用官方包要用N多patch以及奇奇怪怪的编译参数
甚至要制定CFLAG来给GCC制定参数
最后只能从GENTOO里面用portage装好然后转移到centos上

ffmpeg.tar.gz下载

解压ffmpeg.tar.gz
将文件分别放置至
/usr/local/bin
/usr/local/lib
/usr/local/include
修改/etc/ld.so.conf
增加
/usr/local/lib
执行ldconfig
关闭Selinux
vi /etc/selinux/config
SELINUX=disabled
运行setenforce 0

阅读内文

CentOS下最小化安装后的简化包

6月 10th, 2008 | 5 Comments | Posted in Linux < by Johnny Woo >

去掉所有包.然后安装以下包就可以了
编译器类
make
gcc
gcc-c++
binutils
工具类
unzip

阅读内文

linux sysctl.conf中相关重要设定的详细说明

5月 26th, 2008 | No Comments | Posted in Linux < by Michael Field >

  net.ipv4.tcp_syncookies = 1
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;
  net.ipv4.tcp_tw_reuse = 1
表示开启重用。允许将TIME-WAIT sockets重新用于新的TCP连接,默认为0,表示关闭;
  net.ipv4.tcp_tw_recycle = 1
表示开启TCP连接中TIME-WAIT sockets的快速回收,默认为0,表示关闭。
  net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
  net.ipv4.tcp_keepalive_time = 1200
表示当keepalive起用的时候,TCP发送keepalive消息的频度。缺省是2小时,改为20分钟。
  net.ipv4.ip_local_port_range = 1024    65000
表示用于向外连接的端口范围。缺省情况下很小:32768到61000,改为1024到65000。
  net.ipv4.tcp_max_syn_backlog = 8192
表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
  net.ipv4.tcp_max_tw_buckets = 5000
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。对于Apache、Nginx等服务器,上几行的参数可以很好地减少TIME_WAIT套接字数量,但是对于Squid,效果却不大。此项参数可以控制TIME_WAIT套接字的最大数量,避免Squid服务器被大量的TIME_WAIT套接字拖死。

陆续整理添加中

阅读内文

VSFTP开放PASV模式

5月 22nd, 2008 | No Comments | Posted in Linux < by Johnny Woo >

port_enable=YES
pasv_min_port=port number
pasv_max_port=port number

阅读内文

mogileFS资料

4月 28th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

mogileFS PHP模块
http://www.capoune.net/mogilefs/

mogileFS 安装
http://blog.chifeng.name/2008/02/mogilefs.html
http://www.playits.cn/index.php/archives/5/

一直在考虑静态图片的分布式存储
由于master服务器存在的必然性
导致瓶颈的集中
而且静态图片,属于磁盘I/O超级集中的应用类型
这种情况下
master的处理速度
甚至被要求要高于磁盘I/O的速度
否则后面高速的IO将被阻塞
看到资料提及mogileFS是基于Google File System实作出来的
找机会测试一下
看看是否能够解决静态图片的分布式存储问题
不过我对于此项目并不乐观
1.感觉还在alpha测试阶段
2.众多的大型站点,包括淘宝.百度.网易等等,都是使用分离图片服务器进行服务,估计就是相同的图片会同步到一组服务器上,而不是使用分布式存储,如果他们都没有采用分布式存储,那么一定是遇到困难或者目前没有合适的解决方案

阅读内文

LINUX服务说明

4月 11th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

摘要:
最小化服务
autofs
crond
iptables
network
smartd
sshd
syslog

服务列表:
ConsoleKit
Fedota 7的新功能Fedora - Fast User Switchin,如果你想要使用这个新功能就开着,反之关掉吧。

NetworkManager, NetworkManagerDispatcher
自动在多种网络连接中进行转换,如果你的电脑有Wireless WiFi 和 Ethernet,开着它吧,Fedora能自动为你选择最好的可用连接。像我这样
只用一个网络连接设置的,还是关掉吧。

anacron, atd, crond
这是一些调试程序的后台服务,一般的桌面用户可以把anacron, atd关了,如果你打算常时间开机,那就把crond打开。 建议始终把crond开着。

auditd
用于存放内核生成的系统审查记录,这些记录会被一些程序使用。特别是对于SELinux用户来说,还是开着吧。

autofs
自动挂在移动硬盘,没什么说的,开着。

avahi-daemon, avahi-dnsconfd
主要用于Zero Configuration Networking ,关吧,一般无用。

bluetooth, hcid, hidd, sdpd, dund, pand
蓝牙相关,无蓝牙者,关关关。

btseed, bttrack
BT相关,无法用BT的,可以关了

capi
ISDN硬件支持,大部分用户可以关了

cpuspeed
CPU速度调整,如果你用的是Pentium-M, Centrino, AMD PowerNow, Transmetta, Intel SpeedStep, Athlon-64, Athlon-X2, Intel Core 2
开着吧;如果不是还是关了吧,开着也无用。

cupsd
CUPS打印机支持,没有打印机或者是其他类型打印机的,可以关了

dhcdbd
D-BUS系统网络接口,主要为你提供网络连接设置,强烈建议开着,除非你用固定IP上网。

firstboot
Fedora安装完之后的那个用户向导,一般可以关了

gpm
Text console(CTRL-ALT-F1,F2..)鼠标支持,如果你不经常用Text console,可以关了

haldaemon
HAL(Hardware Abstraction Layer)服务,开着吧

hplip, hpiod, hpssd
HPLIP打印机支持,如果你有开着吧。

httpd
Apache HTTP网页服务器, 如果你不开发网页,关吧

ip6tables
如果你不用 IPv6,关了

iptables
防火墙,没什么说的,开着

irda
红外线设备支持,无者关

irqbalance
多核CPU支持, 无着关

isdn
ISDN modem支持, 无者关

jexec
如果你安装java 1.6 就会有这个,让你可以双击运行 *.jar 文件。不想要就关

kudzu
Fedora硬盘侦测服务,当你更换或添加硬盘的时候可以使用,平时可以关了

lirc
红外线遥控器支持, 无者关

mcstrans
主要用于SELinux,如果你不用SELinux,可以关了

mdmonitor
RAID支持, 无者关

messagebus
Linux ICP 服务, 强列建议开着。

netfs
如果你需要网络共享文件,那就开着

netplugd
对大部分用户基本无用,关

network
没什么说的。开着;除非你不上网

nfs, nfslock
文件共享支持,不需要的可以关了

nscd
NIS, NIS+, LDAP, or hesiod服务密码控制, 没有这些服务的可以关了

ntpd
网络时间同步,和windows的那个差不多,不需要的可以关了

nvidia-96XX 或者 nvidia-97XX
livna的nvidia显卡驱动,开

pcscd
智能卡支持,无者关

readahead_early, readahead_later
开机内存载入优化, 开着吧

restorecond
SELinux用于监控文件, 不用SELinux的可以关了

rpcbind
RPC服务,一般可以关闭

rpcgssd, rpcidmapd, rpcsvcgssd
NFS支持,不用NFS的可以关闭

sendmail
邮件传送代理,如果你用Webmail 或者 Thunderbird, Kmail之类的来收发邮件。可以关了

setroubleshoot
SELinux Troubleshooting, 不用SELinux的可以关了

smartd
SMART Disk Monitoring, 快速开机自检,开着吧

smolt
无用,关吧

sshd
OpenSSH服务器,通常可以关了,这是服务器端,关闭不影响ssh的使用

syslog
系统日志,开着吧

vncserver
一般桌面用户可以关了

winbind
不用Samba服务器的话, 可以关了

wpa_supplicant
无线设备支持,无者关

ypbind
不用NIS/YP,可以关了

yum-update
自动定期升级检测, 如果你经常手动升级。可以关了

阅读内文

linux 指令收藏

4月 11th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

将man内容输出至文本文件

  1. man <man file> | col -b > <file>
阅读内文

LVS配置方法

4月 11th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

1.lvs server端
lvs server为lvs服务器.用来分发连接
如果使用RedHat9.需要将内核版本升级到2.4.28以上.
高版本的linux内核自带lvs而无需打lvs补丁.

A.编译内核
将 手工编译内核 目录下的linux-2.4.32.tar.gz解压至/usr/src下
#tar -zxf linux-2.4.32.tar.gz
将hidden-2.4.28-1.diff (http://www.ssi.bg/~ja/) 文件复制到/usr/src/linux-2.4.32下
#cp hidden-2.4.28-1.diff /usr/src/linux-2.4.32
#patch -p1 < hidden-2.4.28-1.diff
将kernelconfig复制到/usr/src/linux-2.4.32,保存为.config
#cp kernelconfig /usr/src/linux-2.4.32/.config
顺序执行
#make oldconfig
#make dep
#make
#make modules
#make modules_install
#make install
至此kernel更新完毕.
修改/boot/grub/grub.conf
#vi /boot/grub/grub.conf
将default=1修改为=0
重启服务器

B.配置虚拟IP(Virtual IP)
修改/etc/sysctl.conf
#vi /etc/sysctl.conf
加入以下参数
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.eth0.send_redirects = 1

#cd /etc/sysconfig/network-scripts
复制ifcfg-lo为ifcfg-eth0:0
#cp ifcfg-lo ifcfg-eth0:0
#vi ifcfg-eth0:0
按照如下修改
DEVICE=eth0:0
IPADDR=192.168.220.2
#设置为虚拟IP(VIP)
ONBOOT=yes
NAME=loopback

C.安装ipvsadm
#cd /usr/src
#ln -s linux linux-2.4.32
将ipvsadm-1.21-11.tar.gz (http://www.linuxvirtualserver.org/)
解压到/usr/loca下,编译执行]
#cp ipvsadm-1.21-11.tar.gz /usr/local
#tar -zxf ipvsadm-1.21-11.tar.gz
#make
#make install
编辑配置文件
#vi /etc/sysconfig/ipvsadm
添加如下内容
-A -t 192.168.220.2:80 -s rr
-a -t 192.168.220.2:80 -r 192.168.220.3:80 -g -w 1
-a -t 192.168.220.2:80 -r 192.168.220.4:80 -g -w 1
第一条为VIP的地址以及负载均衡的算法
-s参数为选择负载均衡算法
* 轮叫调度(Round-Robin Scheduling)RR
* 加权轮叫调度(Weighted Round-Robin Scheduling)WRR
* 最小连接调度(Least-Connection Scheduling)LCS
* 加权最小连接调度(Weighted Least-Connection Scheduling)WLC
* 基于局部性的最少链接(Locality-Based Least Connections Scheduling)LLCS
* 带复制的基于局部性最少链接(Locality-Based Least Connections with Replication Scheduling)LLCRS
* 目标地址散列调度(Destination Hashing Scheduling)DHS
* 源地址散列调度(Source Hashing Scheduling)SHS
后面为增加各个节点
-w参数为每个节点的权值
启动ipvsadm
#/etc/init.d/ipvsadm restart
查看ipvsadm是否生效
#ipvsadm

2.real server端
real server为提供实际服务的服务器.用来提供实际的服务
更新real server的kernel
这里我们必须先关闭real server上虚拟IP所在的网卡对arp的响应.这是因为在使用
VS/DR的时候,real server会在一块网卡上绑定两个IP,但linux在kernel 2.2.14以后
就将eth0:1的 NO ARP FLAG关闭,这使得eth0:1仅仅是eth0的别名,任何对eth0:
1的操作都对eth0有效,因此如果此时使eth0: 1 NOARP,则也使得eth0 NOARP,
这样整个网卡都不会收到数据包.
而如果都开放ARP,当该网段的LVS接收到用户对虚拟IP的TCP connection要求时,会先在网
段中利用Arp request询问谁有VIP的地址,而包含Director与Real Servers
上所有的interface,只要他有那个ip,都会发送arp reply回去,造成网段内所有拥
有 Virtual IP的interface都会reply给LVS,最后结果就是看谁的速度快,LVS就将
该封包送给谁,如此会造成LVS的 Server并无法发挥其效果,而我们所希望的是只有Direct
or上的Virtual IP发送arp reply回去,因此需要利用hidden这个pattch,将real
server上的Virtual IP给隐藏起来,如此他就不会对Arp Request进行Reply,就可以解决AR
P 的问题.具体步骤是:

A.编译内核
将 手工编译内核 目录下的linux-2.4.32.tar.gz解压至/usr/src下
#tar -zxf linux-2.4.32.tar.gz
将hidden-2.4.28-1.diff (http://www.ssi.bg/~ja/) 文件复制到/usr/src/linux-2.4.32下
#cp hidden-2.4.28-1.diff /usr/src/linux-2.4.32
#patch -p1 < hidden-2.4.28-1.diff
将kernelconfig复制到/usr/src/linux-2.4.32,保存为.config
#cp kernelconfig /usr/src/linux-2.4.32/.config
顺序执行
#make oldconfig
#make dep
#make
#make modules
#make modules_install
#make install
至此kernel更新完毕.
修改/boot/grub/grub.conf
#vi /boot/grub/grub.conf
将default=1修改为=0
重启服务器

B.增加虚拟IP
#vi /etc/sysctl.conf
加入以下参数
net.ipv4.ip_forward = 0
net.ipv4.conf.all.hidden = 1
net.ipv4.conf.lo.hidden = 1

#cd /etc/sysconfig/network-scripts
#cp ifcfg-lo ifcfg-lo:0
#vi ifcfg-lo:0
按照如下修改
DEVICE=lo:0
IPADDR=192.168.220.2
#修改为虚拟IP(VIP)
NETMASK=255.255.255.255
ONBOOT=yes
NAME=loopback

C.验证LVS生效方法
先清空本地PC(windows)的ARP
arp -d *
ping real server的IP
使用arp -a查看几台real server节点的mac地址
使用IE访问LVS服务器
查看arp,如果虚拟IP对应的MAC地址与real server的不同.则说明lvs生效

服务控制位于/etc/init.d/ipvsadm
软件位于/usr/local/sbin/ipvsadm
配置位于/etc/sysconfig/ipvsadm

注意:
对于cisco的交换机
LVS可能会因为虚拟IP导致系统有两个重复的网关而无法正常工作
需要ifdown虚拟网卡并且手工ifup此网卡

3 Windows Real Server
增加MS Lookback Adapter
Windows服务器也可以做为RealServer,前提是必须安装MS Lookback Adapter。
你可以选择添加新硬件,添加网络适配器,选择Microsoft,选择Lookback Adapter。
然后添加VIP (Virtual IP)地址在MS Loopback Adapter上,
不要输入网关gateway IP地址。子网掩码 255.255.255.255 但在MS NT/2K/XP会被认为是无效的。
可以有以下解决方法:
在MS NT/2K/XP中,网络界面(interfaces)在:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
找到适当的网络界面IP地址,修改subnetMask子网掩码,(注意修改方式)
不需要重启,只需重新激活该网络界面即可。

阅读内文

HA配置方法

4月 11th, 2008 | No Comments | Posted in Linux < by Johnny Woo >

2006/04/24

1.试验环境网络拓扑

1.1硬件配置:
4台服务器均联网到同一局域网
master和slave的其中一块网卡通过对绞线相连

1.2软件配置:
linux-2.4.32
hidden-2.4.28-1
ipvsadm-1.21-11
heartbeat-2.0.4

1.3网络配置:
Virtual IP:192.168.210.203

LVS Master
主机名:master
IP地址:192.168.210.202
心跳线:192.168.0.202

LVS Slave
主机名:slave
IP地址:192.168.210.204
心跳线:192.168.0.204

Real Server 1
主机名:real01
IP地址:192.168.210.205

Real Server 2
主机名:real02
IP地址:192.168.210.206

2.配置服务器环境
需要在两台heartbeat的host都配置上对方的心跳线IP
#vi /etc/hosts
192.168.0.202 master
192.168.0.204 slave

注意:需要使用心跳线地址,而不是外网卡的地址

3.安装支持库
#rpm -ivh libnet-1.1.2.1-4.i586.rpm
#rpm -ivh glib2-devel-2.2.1-1.i386.rpm
ldirector需要调用perl的www库来获取对http监控的支持,
如果缺少这两个库会导致ldirector无法正确抓到real server上的页面文件
#rpm -ivh perl-libwww-5.65-5.noarch.rpm
#rpm -ivh perl-URI-1.21-7.noarch.rpm

4.添加HeartBeat的用户
#groupadd haclient
#useradd hacluster -g haclient

5.安装HeartBeat
#tar -zxf heartbeat-2.0.4.tar.gz
#cd heartbeat-2.0.4
#./ConfigureMe configure
#make
#make install
#cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/
#cp ldirectord/ldirectord.cf /etc/ha.d/

6.配置ha.cf
node顺序最好按照实际上的master和slave的顺序配置,保持两台服务器上的一致
#vi ha.cf
logfile /var/log/ha-log
keepalive 2
deadtime 10
warntime 10
initdead 20
ucast eth1 192.168.0.204 #如果只有两台可以通过udp通讯心跳信号
auto_failback on
node master
node slave

注意:
默认heartbeat并不检测除本身之外的其他任何服务,也不检测网络状况。
所以当网络中断时,并不会进行master和slave之间的切换。
可以通过ipfail插件,设置’ping nodes’来解决这一问题。详细说明参考hearbeat文档。
加上如下配置
#ping 192.168.136.1 172.16.0.1
ping_group group1 192.168.210.205 192.168.210.206
respawn root /usr/lib/heartbeat/ipfail
apiauth ipfail gid=root uid=root

7.配置/etc/ha.d/haresources
#vi haresources
master IPaddr::192.168.210.203/32/192.168.210.203

在测试情况下无须配置后面调用的脚本.只要以上配置即可
在实际LVS heartbeat环境中配置文件如下
master IPaddr::192.168.210.203/32/192.168.210.203 ldirector
由于ldirector会自动修改LVS的配置,所以无须加上ipvsadm

注意:
这个文件指定同步的服务以及主机是什么.两台机器上的这个文件一定要一致
在/etc/ha.d/haresources中指定的 master 将是 Active/Standby 模式中的主主机。
当两台分别是各自主机名时,将会变成Active/Active模式

8.配置/etc/ha.d/authkeys
这个文件用来配置心跳信号所采用的加密方式
#chmod 600 authkeys
#vi authkeys
auth 1
1 crc

实际心跳信号由于采用独立的子网.所以可以只采用crc来验证心跳信号

9.配置ldirector
#vi /etc/ha.d/ldirectord.cf
配置如下:
# Global Directives
checktimeout=3
checkinterval=1
#fallback=127.0.0.1:8080#fallback的调度端口
autoreload=yes
logfile=”/var/log/ldirectord.log”
#logfile=”local0″
quiescent=yes

# A sample virual with a fallback that will override the gobal setting
virtual=192.168.210.203:8080 #调度器的虚拟IP和调度端口
real=192.168.210.205:8080 gate #Real ServerA的IP和调度端口
real=192.168.210.206:8080 gate #Real ServerB的IP和调度端口
#fallback=127.0.0.1:8080 gate #fallback的调度端口(若LVS机器不作fallback,此项可以屏蔽)
service=http #ldirectord测试的所用的应用层协议
request=”/.test” #ldirectord定时监控的服务页面
receive=”TEST” #ldirectord测试服务页面所返回的消息
scheduler=wrr #ipvsadm使用的调度算法
#persistent=600
#netmask=255.255.255.255
protocol=tcp #ldirectord是用的通讯协议

上面所增加的request和receive配置需要在Real Server上的web根目录下增加“.test”文件,
并且文件的内容为“TEST”,作为ldirectord定期访问的测试页面。

10.参考文章
http://zh.linuxvirtualserver.org/node/95
http://mshtyu.dns0755.net/index.php?mode=1&page=8
http://www.linuxsky.net/html/200603/2521.html

阅读内文