Apr
10
·find path -option [ -print ] [ -exec -ok command ] {} \;
find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
=============================================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
–user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px”>
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
=============================================================================
$find ~ -name “*.txt” -print #在$HOME中查.txt文件并显示
$find . -name “*.txt” -print
$find . -name “[A-Z]*” -print #查以大写字母开头的文件
$find /etc -name “host*” -print #查以host开头的文件
$find . -name “[a-z][a-z][0–9][0–9].txt” -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print
$find . -type l -print
$find . -size +1000000c -print #查长度大于1Mb的文件
$find . -size 100c -print # 查长度为100c的文件
$find . -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name “passwd*” -exec grep “cnscn” {} \; #看是否存在cnscn用户
$find . -name “yao*” | xargs file
$find . -name “yao*” | xargs echo “” > /tmp/core.log
$find . -name “yao*” | xargs chmod o-w
=============================================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home –user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / –user fred #查找在系统中属于FRED这个用户的文件
=============================================================================
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们:
$ find logs/ -type f -mtime +7 -exec rm -f {} \;
在/ l o g s目录中查找更改时间在7日以内的文件并删除它们:
$ find logs/ -type f -mtime -7 -exec rm -f {} \;
然后加入的计划任务中每日执行便可
find命令的参数;
pathname: find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print: find命令将匹配的文件输出到标准输出。
-exec: find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为’command’ { } \;,注意{ }和\;之间的空格。
-ok: 和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
#-print 将查找到的文件输出到标准输出
#-exec command {} \; —–将查到的文件执行command操作,{} 和 \;之间有空格
#-ok 和-exec相同,只不过在操作前要询用户
例:find . -name .svn | xargs rm -rf
=============================================================================
-name filename #查找名为filename的文件
-perm #按执行权限来查找
–user username #按文件属主来查找
-group groupname #按组来查找
-mtime -n +n #按文件更改时间来查找文件,-n指n天以内,+n指n天以前
-atime -n +n #按文件访问时间来查GIN: 0px”>
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 找文件,-n指n天以内,+n指n天以前
-ctime -n +n #按文件创建时间来查找文件,-n指n天以内,+n指n天以前
-nogroup #查无有效属组的文件,即文件的属组在/etc/groups中不存在
-nouser #查无有效属主的文件,即文件的属主在/etc/passwd中不存
-newer f1 !f2 #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查更改时间比f1新但比f2旧的文件
-type b/d/c/p/l/f #查是块设备、目录、字符设备、管道、符号链接、普通文件
-size n[c] #查长度为n块[或n字节]的文件
-depth #使查找在进入子目录前先行查找完本目录
-fstype #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio %; #查位于某一类型文件系统中的文件,这些文件系统类型通常可 在/etc/fstab中找到
-mount #查文件时不跨越文件系统mount点
-follow #如果遇到符号链接文件,就跟踪链接所指的文件
-cpio #对匹配的文件使用cpio命令,将他们备份到磁带设备中
-prune #忽略某个目录
=============================================================================
$find ~ -name “*.txt” -print #在$HOME中查.txt文件并显示
$find . -name “*.txt” -print
$find . -name “[A-Z]*” -print #查以大写字母开头的文件
$find /etc -name “host*” -print #查以host开头的文件
$find . -name “[a-z][a-z][0–9][0–9].txt” -print #查以两个小写字母和两个数字开头的txt文件
$find . -perm 755 -print
$find . -perm -007 -exec ls -l {} \; #查所有用户都可读写执行的文件同-perm 777
$find . -type d -print
$find . ! -type d -print
$find . -type l -print
$find . -size +1000000c -print #查长度大于1Mb的文件
$find . -size 100c -print # 查长度为100c的文件
$find . -size +10 -print #查长度超过期作废10块的文件(1块=512字节)
$cd /
$find etc home apps -depth -print | cpio -ivcdC65536 -o /dev/rmt0
$find /etc -name “passwd*” -exec grep “cnscn” {} \; #看是否存在cnscn用户
$find . -name “yao*” | xargs file
$find . -name “yao*” | xargs echo “” > /tmp/core.log
$find . -name “yao*” | xargs chmod o-w
=============================================================================
find -name april* 在当前目录下查找以april开始的文件
find -name april* fprint file 在当前目录下查找以april开始的文件,并把结果输出到file中
find -name ap* -o -name may* 查找以ap或may开头的文件
find /mnt -name tom.txt -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型为vfat的文件
find /mnt -name t.txt ! -ftype vfat 在/mnt下查找名称为tom.txt且文件系统类型不为vfat的文件
find /tmp -name wa* -type l 在/tmp下查找名为wa开头且类型为符号链接的文件
find /home -mtime -2 在/home下查最近两天内改动过的文件
find /home -atime -1 查1天之内被存取过的文件
find /home -mmin +60 在/home下查60分钟前改动过的文件
find /home -amin +30 查最近30分钟前被存取过的文件
find /home -newer tmp.txt 在/home下查更新时间比tmp.txt近的文件或目录
find /home -anewer tmp.txt 在/home下查存取时间比tmp.txt近的文件或目录
find /home -used -2 列出文件或目录被改动过之后,在2日内被存取过的文件或目录
find /home –user cnscn 列出/home目录内属于用户cnscn的文件或目录
find /home -uid +501 列出/home目录内用户的识别码大于501的文件或目录
find /home -group cnscn 列出/home内组为cnscn的文件或目录
find /home -gid 501 列出/home内组id为501的文件或目录
find /home -nouser 列出/home内不属于本地用户的文件或目录
find /home -nogroup 列出/home内不属于本地组的文件或目录
find /home -name tmp.txt -maxdepth 4 列出/home内的tmp.txt 查时深度最多为3层
find /home -name tmp.txt -mindepth 3 从第2层开始查
find /home -empty 查找大小为0的文件或空目录
find /home -size +512k 查大于512k的文件
find /home -size -512k 查小于512k的文件
find /home -links +2 查硬连接数大于2的文件或目录
find /home -perm 0700 查权限为700的文件或目录
find /tmp -name tmp.txt -exec cat {} \;
find /tmp -name tmp.txt -ok rm {} \;
find / -amin -10 # 查找在系统中最后10分钟访问的文件
find / -atime -2 # 查找在系统中最后48小时访问的文件
find / -empty # 查找在系统中为空的文件或者文件夹
find / -group cat # 查找在系统中属于 groupcat的文件
find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件
find / -mtime -1 #查找在系统中最后24小时里修改过的文件
find / -nouser #查找在系统中属于作废用户的文件
find / –user fred #查找在系统中属于FRED这个用户的文件
=============================================================================
在/ l o g s目录中查找更改时间在7日以前的文件并删除它们:
$ find logs/ -type f -mtime +7 -exec rm -f {} \;
在/ l o g s目录中查找更改时间在7日以内的文件并删除它们:
$ find logs/ -type f -mtime -7 -exec rm -f {} \;
然后加入的计划任务中每日执行便可
Apr
10
zen cart 1.38a 中文版集成了 Ultimate SEO URLs,由于该模块很久没有更新,虽然基本功能尚可,但是会出现很多意想不到的问题,并且所有链接都位于根目录,目录层次不够清晰,不能够满足我们的seo要求.ceon_uri_mapping_3.2.4_for_zc是个很好的选择,那么怎么才能卸载掉Ultimate SEO URLs呢?
Removing Ultimate SEO URLs
INSTRUCTIONS
In Zen Cart administration – Tools – Install SQL Patches paste and execute following SQL queries (optional):
DELETE FROM `configuration_group` WHERE `configuration_group_title` LIKE ‘%SEO%’; DELETE FROM `configuration` WHERE `configuration_key` LIKE ‘%SEO%’; DROP TABLE IF EXISTS seo_cache;
Restore following files from ZenCart installation package:
admin/categories.php
admin/product.php
includes/functions/html_output.php
Remove/delete following files:
admin/includes/reset_seo_cache.php
admin/includes/extra_datafiles/seo.php
admin/includes/functions/extra_functions/seo.php
includes/auto_loaders/config.ultimate_seo.php
includes/classes/seo.install.php
includes/classes/seo.url.php
includes/extra_datafiles/seo.php
Ultimate SEO URLs were removed.
简单说明一下,首先在后台工具-–安装sql脚本 中执行上述语句,然后比较替换掉以下三个文件:
admin/categories.php
admin/product.php
includes/functions/html_output.php
然后再把以下7个文件删除:
admin/includes/reset_seo_cache.php
admin/includes/extra_datafiles/seo.php
admin/includes/functions/extra_functions/seo.php
includes/auto_loaders/config.ultimate_seo.php
includes/classes/seo.install.php
includes/classes/seo.url.php
includes/extra_datafiles/seo.php 这样Ultimate SEO URLs就被卸载了。
Removing Ultimate SEO URLs
INSTRUCTIONS
In Zen Cart administration – Tools – Install SQL Patches paste and execute following SQL queries (optional):
DELETE FROM `configuration_group` WHERE `configuration_group_title` LIKE ‘%SEO%’; DELETE FROM `configuration` WHERE `configuration_key` LIKE ‘%SEO%’; DROP TABLE IF EXISTS seo_cache;
Restore following files from ZenCart installation package:
admin/categories.php
admin/product.php
includes/functions/html_output.php
Remove/delete following files:
admin/includes/reset_seo_cache.php
admin/includes/extra_datafiles/seo.php
admin/includes/functions/extra_functions/seo.php
includes/auto_loaders/config.ultimate_seo.php
includes/classes/seo.install.php
includes/classes/seo.url.php
includes/extra_datafiles/seo.php
Ultimate SEO URLs were removed.
简单说明一下,首先在后台工具-–安装sql脚本 中执行上述语句,然后比较替换掉以下三个文件:
admin/categories.php
admin/product.php
includes/functions/html_output.php
然后再把以下7个文件删除:
admin/includes/reset_seo_cache.php
admin/includes/extra_datafiles/seo.php
admin/includes/functions/extra_functions/seo.php
includes/auto_loaders/config.ultimate_seo.php
includes/classes/seo.install.php
includes/classes/seo.url.php
includes/extra_datafiles/seo.php 这样Ultimate SEO URLs就被卸载了。
Apr
10
一、使用YUM安装telnet:
yum install telnet telnet-server -y
安装之后修改/etc/xinetd.d/telnet文件,把disable那一行改为disable = no,[注:如果是CentOS7请忽略这一步]
vi /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
修改完之后,保存并退出
#CentOS上启动telnet服务并设置开机启动
service xinetd start
chkconfig telnet on
chkconfig xinetd on
#CentOS 7上:
systemctl start telnet.socket
systemctl enable telnet.socket
#CentOS默认防火墙没有开放23端口,所以我们要根据需要允许23端口
vi /etc/sysconfig/iptables
加入一条“-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT”
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
保存并退出,然后重新启动iptables服务
service iptables restart
也可以输入以下命令:
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
立即生效,然后输入 service iptables save 保存当前防火墙规则。
#CentOS 7中防火墙配置:
firewall-cmd --permanent --add-port=23/tcp
firewall-cmd --reload
现在telnet服务已经可以使用了,下面我们来测试一下:
创建一个测试用户,并设置用户密码:
useradd telnettest
passwd telnettest
客户端配置,首先安装telnet客户端
yum install telnet
客户端安装完成之后,输入
telnet 199.99.99.189
输入上面创建的telnettest用户和密码登录
Trying 199.99.99.189...
Connected to 199.99.99.189.
Escape character is '^]'.
Kernel 3.10.0-123.13.2.el7.x86_64 on an x86_64
web2 login: telnettest
Password:
[telnettest@web2 ~]$
windows用户,安装了telnet客户端,同样也可以连接上服务器,当然很多其他telnet ssh软件也可以,如:SecureCRT、Putty等等
yum install telnet telnet-server -y
安装之后修改/etc/xinetd.d/telnet文件,把disable那一行改为disable = no,[注:如果是CentOS7请忽略这一步]
vi /etc/xinetd.d/telnet
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
service telnet
{
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
disable = no
}
修改完之后,保存并退出
#CentOS上启动telnet服务并设置开机启动
service xinetd start
chkconfig telnet on
chkconfig xinetd on
#CentOS 7上:
systemctl start telnet.socket
systemctl enable telnet.socket
#CentOS默认防火墙没有开放23端口,所以我们要根据需要允许23端口
vi /etc/sysconfig/iptables
加入一条“-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT”
# Firewall configuration written by system-config-firewall
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m state --state NEW --dport 23 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited
COMMIT
保存并退出,然后重新启动iptables服务
service iptables restart
也可以输入以下命令:
iptables -I INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
立即生效,然后输入 service iptables save 保存当前防火墙规则。
#CentOS 7中防火墙配置:
firewall-cmd --permanent --add-port=23/tcp
firewall-cmd --reload
现在telnet服务已经可以使用了,下面我们来测试一下:
创建一个测试用户,并设置用户密码:
useradd telnettest
passwd telnettest
客户端配置,首先安装telnet客户端
yum install telnet
客户端安装完成之后,输入
telnet 199.99.99.189
输入上面创建的telnettest用户和密码登录
Trying 199.99.99.189...
Connected to 199.99.99.189.
Escape character is '^]'.
Kernel 3.10.0-123.13.2.el7.x86_64 on an x86_64
web2 login: telnettest
Password:
[telnettest@web2 ~]$
windows用户,安装了telnet客户端,同样也可以连接上服务器,当然很多其他telnet ssh软件也可以,如:SecureCRT、Putty等等
Jan
6
目录
一 应用背景
二 应用环境
三 安装配置
四 FAQ
一 应用背景
随着互联网应用的普及以及人们对互联网的要求也越来越高,在流量增加的同时,要求速度快,在线时间长或出故障的时间短或故障后能及时恢复等等。为了解决这些问题,各种负载均衡及集群技术应运而生
其中,LVS便是一个解决大流量分流很好的解决方案
详细请参考 http://www.linuxvirtualserver.org/zh/lvs1.html
HA(High Availability),则是高可用的意思,也可以说是双机热备双机等的应用。如在一些在线时间有特别的要求或是在故障后要在很短的时间内恢复,就有必要应用到这个ha了
本文的应用,由两台机组成的一个LVS及HA,主要是解决分流及单点故障。
如A,B机,正常情况下,A机为LVS转分机,同时又是提供web的服务机,当A机有问题时,B机接管A机的服务,同时自己也是一个web服务机。由于本文的应用中,机器数量有限,所以,将ha,lvs,realserver都放在一起了。在机器允许的情况下,最好分开,如:
LVS转发为独立一台机,再在这转发机上配置HA避免转发机故障,再用一台机来做转发及HA的备机,当主转发机故障时就可接管服务
二 应用环境
机器两台
系统为CentOS 5.4 x86_64版
heartbeat + ldirectord + lvs
结构如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
三 安装
1 可以用源码安装,也可以用yum安装,用源码安装,定制性强一点,但用yum安装,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的配置文件沿用1.X的风格,2.X以上的功能很强大,也较复杂)
主要的配置文件有以下几个:
Authkeys
ha.cf
ldirectord.cf
haresources
文件内容
# cat authkeys
auth 1
1 crc
# cat ha.cf
#test conf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 8
deadtime 60
warntime 60
initdead 120
udpport 694
ucast eth0 192.168.1.92
auto_failback on
node wd1
node wd2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
# cat ldirectord.cf
#test conf
checktimeout=10
checkinterval=8
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=no
virtual=192.168.1.90:80
real=192.168.1.91:80 gate
real=192.168.1.92:80 gate
fallback=127.0.0.1:80 gate
service=http
request="lt.html"
receive="Test Page"
scheduler=wrr
persistent=30
protocol=tcp
checktype=negotiate
checkport=80
# cat haresources
Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord
wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
/sbin/ipvsadm --set 10 10 10
Wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
# test
VIP=192.168.1.90
/etc/rc.d/init.d/functions
/sbin/ipvsadm --set 10 10 10
case "$1" in
start)
/sbin/ifconfig lo:0 down
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
;;
stop)
/sbin/ifconfig eth0:0 down
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#cat /etc/hosts
192.168.1.91 wd1
192.168.1.92 wd2
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
在iptables 增加一个对方IP的访问,否则在切换时会有问题
一 应用背景
二 应用环境
三 安装配置
四 FAQ
一 应用背景
随着互联网应用的普及以及人们对互联网的要求也越来越高,在流量增加的同时,要求速度快,在线时间长或出故障的时间短或故障后能及时恢复等等。为了解决这些问题,各种负载均衡及集群技术应运而生
其中,LVS便是一个解决大流量分流很好的解决方案
详细请参考 http://www.linuxvirtualserver.org/zh/lvs1.html
HA(High Availability),则是高可用的意思,也可以说是双机热备双机等的应用。如在一些在线时间有特别的要求或是在故障后要在很短的时间内恢复,就有必要应用到这个ha了
本文的应用,由两台机组成的一个LVS及HA,主要是解决分流及单点故障。
如A,B机,正常情况下,A机为LVS转分机,同时又是提供web的服务机,当A机有问题时,B机接管A机的服务,同时自己也是一个web服务机。由于本文的应用中,机器数量有限,所以,将ha,lvs,realserver都放在一起了。在机器允许的情况下,最好分开,如:
LVS转发为独立一台机,再在这转发机上配置HA避免转发机故障,再用一台机来做转发及HA的备机,当主转发机故障时就可接管服务
二 应用环境
机器两台
系统为CentOS 5.4 x86_64版
heartbeat + ldirectord + lvs
结构如下:
VIP:192.168.1.90
Wd1 192.168.1.91
Wd2 192.168.1.92
三 安装
1 可以用源码安装,也可以用yum安装,用源码安装,定制性强一点,但用yum安装,很方便,如:
yum install -y heartbeat
yum install -y heartbeat-ldirectord
即可完成
2 配置(本例的配置文件沿用1.X的风格,2.X以上的功能很强大,也较复杂)
主要的配置文件有以下几个:
Authkeys
ha.cf
ldirectord.cf
haresources
文件内容
# cat authkeys
auth 1
1 crc
# cat ha.cf
#test conf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 8
deadtime 60
warntime 60
initdead 120
udpport 694
ucast eth0 192.168.1.92
auto_failback on
node wd1
node wd2
respawn hacluster /usr/lib/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
# cat ldirectord.cf
#test conf
checktimeout=10
checkinterval=8
fallback=127.0.0.1:80
autoreload=yes
logfile="/var/log/ldirectord.log"
logfile="local0"
quiescent=no
virtual=192.168.1.90:80
real=192.168.1.91:80 gate
real=192.168.1.92:80 gate
fallback=127.0.0.1:80 gate
service=http
request="lt.html"
receive="Test Page"
scheduler=wrr
persistent=30
protocol=tcp
checktype=negotiate
checkport=80
# cat haresources
Wd1 lvs IPaddr::192.168.1.90/24/eth0:0 ldirectord
wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
/sbin/ipvsadm --set 10 10 10
Wd2上的lvs脚本文件
# cat /etc/rc.d/init.d/lvs
#!/bin/bash
# test
VIP=192.168.1.90
/etc/rc.d/init.d/functions
/sbin/ipvsadm --set 10 10 10
case "$1" in
start)
/sbin/ifconfig lo:0 down
/sbin/ifconfig eth0:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev eth0:0
;;
stop)
/sbin/ifconfig eth0:0 down
/sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up
/sbin/route add -host $VIP dev lo:0
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
#cat /etc/hosts
192.168.1.91 wd1
192.168.1.92 wd2
cat /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
在iptables 增加一个对方IP的访问,否则在切换时会有问题
Jan
6
memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于memcached通常只是当作快取系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程式码更新memcached内的资料。memcached具有多种语言的客户端开发包,包括:Perl/PHP/JAVA/C/Python/Ruby/C#/MySQL/客户端包的下载地址是:http://www.danga.com/memcached/apis.bml
下载和安装
memcache服务端安装
wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/usr
make & make install
tar zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcache/ --with-libevent=/usr
make & make install
安装完成,启动
/usr/local/memcache/bin/memcached -d -m 512 -u apache -p 11211 -c 25600
-d 以守护进程方式启动
-m 512 是指分配512M内存
-u apache 是用apache用户启动
-p 11211 使用11211端口
-c 25600 最大的迸发连接数
PHP扩展(也就是客户端),也就是让PHP支持memcache
下载安装
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar zxvf memcache-2.2.6.tgz
cd memcache-2.2.6
phpize
./configure --with-php-config=/usr/bin/php-config --with-zlib-dir=/usr/ --enable-memcache
make & make install
完成之后在/etc/php.d里面创建一个memcache.ini里面加入extension=memcache.so
重启apache
service httpd restart
memcache状态web界面接口,复制memcache.php到网站的根目录,如
cp memcache.php /www/
修改用户密码,如下
vi memcache.php
define('ADMIN_USERNAME','test'); // Admin Username
define('ADMIN_PASSWORD','password'); // Admin Password
然后用IE浏览器打开 http://192.168.1.168/memcache.php,即可查看相关状态信息
打开phpinfo检查,如
http://192.168.1.168/phpinfo.php
能看如下图的信息,表示安装成功,也就是你的PHP已经支持memcache了

在你的PHP程序里,就可以使用memcache这个缓存数据库了
PHP测试实例
< ?php
//连接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>
下载和安装
memcache服务端安装
wget http://www.monkey.org/~provos/libevent-1.4.14b-stable.tar.gz
wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gz
tar zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/usr
make & make install
tar zxvf memcached-1.4.5.tar.gz
cd memcached-1.4.5
./configure --prefix=/usr/local/memcache/ --with-libevent=/usr
make & make install
安装完成,启动
/usr/local/memcache/bin/memcached -d -m 512 -u apache -p 11211 -c 25600
-d 以守护进程方式启动
-m 512 是指分配512M内存
-u apache 是用apache用户启动
-p 11211 使用11211端口
-c 25600 最大的迸发连接数
PHP扩展(也就是客户端),也就是让PHP支持memcache
下载安装
wget http://pecl.php.net/get/memcache-2.2.6.tgz
tar zxvf memcache-2.2.6.tgz
cd memcache-2.2.6
phpize
./configure --with-php-config=/usr/bin/php-config --with-zlib-dir=/usr/ --enable-memcache
make & make install
完成之后在/etc/php.d里面创建一个memcache.ini里面加入extension=memcache.so
重启apache
service httpd restart
memcache状态web界面接口,复制memcache.php到网站的根目录,如
cp memcache.php /www/
修改用户密码,如下
vi memcache.php
define('ADMIN_USERNAME','test'); // Admin Username
define('ADMIN_PASSWORD','password'); // Admin Password
然后用IE浏览器打开 http://192.168.1.168/memcache.php,即可查看相关状态信息
打开phpinfo检查,如
http://192.168.1.168/phpinfo.php
能看如下图的信息,表示安装成功,也就是你的PHP已经支持memcache了

在你的PHP程序里,就可以使用memcache这个缓存数据库了
PHP测试实例
< ?php
//连接
$mem = new Memcache;
$mem->connect("127.0.0.1", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br />";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//保存数组
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br />";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br />";
//关闭连接
$mem->close();
?>










