转:http://zhangxugg-163-com.iteye.com/blog/1153267

我们在生产环境中尝试使用varnish替代squid的主要原因:

 

1. squid不支持多核cpu, 生产环境中大多使用Dell R610系列,这种类型机器配置为2个4核双线程cpu, 操作系统识别为16个,对squid来说,只能利用到一个逻辑cpu, 其它15个逻辑cpu相当于一直浪费!

 

2. squid无法批量清除缓存

 

3. squid3.0目前还无法支持http 1.1, 这对一些管理调整(如gzip压缩,cache-control)带来不必要的麻烦

 

4. 目前我还未找到squid的grace模式(指源站不可到达时,继续使用过期缓存为用户提供服务),而varnish是完全支持的。

 

5. 经过生产环境数个月反复测试,同样访问量情况下,varnish消耗的更少,也没有出现过崩溃情况,而squid因为不支持多核,导致Dell R610机器负载往往超过4,但使用varnish后,机器负载从来没超过1.5

 

经过反复测试,我们已经开始在日独立IP百万级站点中使用varnish替换squid了。

 

但这个过程中,充满太多未知情况,目前我们所遇到的关键问题下:

 

1. 高流量情况下iptables丢包

ip_conntrack: table full, dropping packet.

按网上常规方法,只修改/etc/sysctl.conf是无效的

 

需要以下两步,方可解决之
/boot/grub/grub.conf kernel行中增加参数
ip_conntrack.hashsize=524288
/etc/sysctl.conf中增加
net.ipv4.netfilter.ip_conntrack_max = 2097152

 

注意,上面的操作需要重启机器

 

2. 登录shell ulimit的默认值
/etc/security/limits.conf中加入
* soft nofile 655360
* hard nofile 655360

默认的文件描述符限制为1024, 太小,即使调整成65536,对高负载机器也可能不够,故设置为655360,但也要注意,这个值不能设置过大,否则会导致shell无法登录。

 

修改/etc/security/limits.conf后,只对登录shell有效。对开机运行的程序,一定要注意这个问题(在启动前设置ulimit)

那么,shell级的资源限制来自于/etc/security/limits.conf,那么系统级的资源限制可在哪里修改?

 

3. squid换varnish后流量增加的解决方案:
/etc/security/limits.conf中加入

* soft memlock 1048576
* soft memlock 1048576

或执行 ulimit -HSl 1048576

默认的memlock 只有32K,对varnish来说,太小太小。varnish使用内存块保存日志,故这个值需要调大一些。

上面的值将其调整为1G,即可解决varnish流量高于squid的问题

 

3. varnish运行中频繁出现400,503错误

 

400错误出现,是因为varnish认为客户端请求header行数及长度过大,其默认最大接受的请求header行数为64,最大长度(所有请求header行长度之和)为2048,解决这个问题比较简单,在varnish启动参数中加入:

-p http_max_hdr=256

-p http_req_hdr_len=8192

 

再重启varnish, 即可解决其400错误

 

503错误,这是因为varnish对后端服务器响应header有限制,默认长度是2048,可将其调大一些

-p http_resp_hdr_len=8192

 

再重启之,即可解决这个问题

第一:修改/etc/passwd文件

第二:usermod命令

详细说明如下:

第一种方法:vi /etc/passwd

找到要修改的用户那几行,修改掉即可。此法很暴力,建议慎用。

/etc/passwd文件格式

登录名:加密口令:数字用户ID:数字组ID:注释字段:起始目录:shell程序

用此方法修改了用户宿主目录后,会出现某些异常,如:bash环境异常,需要将用户原宿主目录下的隐藏文件拷贝到更改后的宿主目录即可

cp /原宿主目录/.* /目标目录

第二种:usermod

usermod -d /usr/newfolder -u uid

-u后面一定要接uid啊,不是username

附:usermod详细参数

语  法:usermod [-LU][-c <备注>][-d <登入目录>][-e <有效期限>][- f <缓冲天数>][-g <群组>][-G <群组>][-l <帐号名称>][-s ][-u ] [用户帐号]

补充说明:usermod可用来修改用户帐号的各项设定。

参  数:

-c<备注>  修改用户帐号的备注文字。

-d登入目录>  修改用户登入时的目录。

-e<有效期限>  修改帐号的有效期限。

-f<缓冲天数>  修改在密码过期后多少天即关闭该帐号。

-g<群组>  修改用户所属的群组。

-G<群组>  修改用户所属的附加群组。

-l<帐号名称>  修改用户帐号名称。

-L  锁定用户密码,使密码无效。

-s  修改用户登入后所使用的shell。

-u  修改用户ID。

-U  解除密码锁定。

来源:考试大 - Linux认证考试

squid3.0 反向代理 apache2+squid3

我使用的环境CentOS5.5 yum的apache2+PHP5+squid,目前网站已配置成功。

一.APACHE配置
apache(81端口)+squid(80端口)(apache和squid跑在同一个机器上面 要实现反向代理 )我将我的外网域名用abc.com代替了

apache简单配置如下:
Listen 81
NameVirtualHost *
<VirtualHost *>
<Directory "/usr/local/www/">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
Satisfy all
</Directory>
ServerName    www.abc.com
ServerAdmin webadmin@abc.com
DocumentRoot "/usr/local/www/"
DirectoryIndex index.jsp
#    ErrorLog "/usr/local/apache/logs/abc-error_log"
#    SetEnvIf Remote_Addr "::1" dontlog
#    CustomLog "/usr/local/apache/logs/abc-access_log" combined env=!dontlog
</VirtualHost>

此时可以通过lsof -i:81查看谁占用81端口

二.SQUID配置
安装    rpm -ivh squid.3.x.rpm

配置    vi /etc/squid/squid.conf

#change for hugwww
visible_hostname www.151051.com

http_port 80 vhost vport

cache_peer 127.0.0.1 parent 81 0 no-query originserver

cache_peer_domain 127.0.0.1 www.151051.com

acl all data-original all

http_access allow all

cache_dir ufs /var/spool/squid 100 16 256

access_log /var/log/squid/access.log squid

cache_log /var/log/squid/cache.log

acl QueryString url_regex \.php?

no_cache deny QueryString

maximum_object_size 320010 KB

maximum_object_size_in_memory 100 KB

dns_nameservers 192.168.0.100

cache_mgr gaojinbo@dayang.com

#/usr/local/squid/sbin/squid -k parse
可以根据这个测试命令用来验证squid.conf的语法和配置(下面是OK的如果不OK会有相应的提示根据提示来修改配置文件)
2008/03/19 15:29:48| Processing Configuration File: /etc/squid.conf (depth 0)

#squid -z
用来Creating Swap Directories

还有测试命令如:squid -CNd1

[root@www ~]# cat /var/log/squid/access.log |grep TCP_MEM_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到内存中,并返回给访问用户

[root@www ~]# cat /var/log/squid/access.log |grep TCP_HIT
该指令可以看到在squid运行过程中,有那些文件被squid缓存到cache目录中,并返回给访问用户

[root@www ~]# cat /var/log/squid/access.log  |grep TCP_MISS
该指令可以看到在squid运行过程中,有那些文件没有被squid缓存,而是现重原始服务器获取并返回给访问用户

可以查看下命中率及其他相关信息
#squidclient -p 80 -h localhost mgr:info

三.配置客户端访问

1.修改HOSTS文件,将svr-ekp.broad-ocean.com的地址设置为192.168.0.193

2.修改DNS记录,将svr-ekp.broad-ocean.com的地址设置为192.168.0.193

3.浏览器访问svr-ekp.broad-ocean.com

注:第一步骤可省略,使用现在WEB服务器.

常用命令整理如下:
查看主板的序列号: dmidecode | grep -i ’serial number’

用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)

查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]

查看内存信息:cat /proc/meminfo [free -m][vmstat]

查看板卡信息:cat /proc/pci

查看显卡/声卡信息:lspci |grep -i ‘VGA’[dmesg | grep -i 'VGA']

查看网卡信息:dmesg | grep -i ‘eth’[cat /etc/sysconfig/hwconf | grep -i eth][lspci | grep -i 'eth']
<!--more-->
查看PCI信息:lspci (相比cat /proc/pci更直观)

查看USB设备:cat /proc/bus/usb/devices

查看键盘和鼠标:cat /proc/bus/input/devices

查看系统硬盘信息和使用情况:fdisk & disk – l & df

查看各设备的中断请求(IRQ):cat /proc/interrupts

查看系统体系结构:uname -a

查看及启动系统的32位或64位内核模式:isalist –v [isainfo –v][isainfo –b]

dmidecode查看硬件信息,包括bios、cpu、内存等信息

测定当前的显示器刷新频率:/usr/sbin/ffbconfig –rev \?

查看系统配置:/usr/platform/sun4u/sbin/prtdiag –v

查看当前系统中已经应用的补丁:showrev –p

显示当前的运行级别:who –rH

查看当前的bind版本信息:nslookup –class=chaos –q=txt version.bind

dmesg | more 查看硬件信息
lspci 显示外设信息, 如usb,网卡等信息
lsnod 查看已加载的驱动
lshw
psrinfo -v 查看当前处理器的类型和速度(主频)
prtconf -v 打印当前的OBP版本号
iostat –E 查看硬盘物理信息(vendor, RPM, Capacity)
prtvtoc /dev/rdsk/c0t0d0s 查看磁盘的几何参数和分区信息
df –F ufs –o i 显示已经使用和未使用的i-node数目
isalist –v

对于“/proc”中文件可使用文件查看命令浏览其内容,文件中包含系统特定信息:
Cpuinfo 主机CPU信息
Dma 主机DMA通道信息
Filesystems 文件系统信息
Interrupts 主机中断信息
Ioprots 主机I/O端口号信息
Meninfo 主机内存信息
Version Linux内存版本信息

备注: proc – process information pseudo-filesystem 进程信息伪装文件系统

from:http://www.jakee.cn/index.php/archives/501.html

[base]
name=CentOS-$releasever - Base
baseurl=http://mirrors.sohu.com/centos/5.5/os/$basearch/
http://centos.candishosting.com.cn/5.5/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

#released updates

[update]
name=CentOS-$releasever - Updates
baseurl=http://mirrors.sohu.com/centos/5.5/updates/$basearch/
http://centos.candishosting.com.cn/5.5/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

#packages used/produced in the build but not released

[addons]
name=CentOS-$releasever - Addons
baseurl=http://mirrors.sohu.com/centos/5.5/addons/$basearch/
http://centos.candishosting.com.cn/5.5/addons/$basearch/
gpgcheck=1
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

#additional packages that may be useful

[extras]
name=CentOS-$releasever - Extras
baseurl=http://mirrors.sohu.com/centos/5.5/extras/$basearch/
http://centos.candishosting.com.cn/5.5/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

#additional packages that extend functionality of existing packages

[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.sohu.com/centos/5.5/centosplus/$basearch/
http://centos.candishosting.com.cn/5.5/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

#contrib - packages by Centos Users

[contrib]
name=CentOS-$releasever - Contrib
baseurl=http://mirrors.sohu.com/centos/5.5/contrib/$basearch/
http://centos.candishosting.com.cn/5.5/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.sohu.com/centos/RPM-GPG-KEY-CentOS-5

smartmontools介绍

smartmontools是一款开源的磁盘控制,监视工具,可以运行在 Linux,Unix,BSD,Solaris,Mac OS,OS/2,Cygwin和Windows上,同时它还可以从启动光盘或启动软盘运行,支持ATA/ATAPI/SATA-3(到-8)位的硬盘和 SCSI硬盘,另外还支持磁带设备,它的老家在smartmontools.sourceforge.net,实际上它是一个软件包,包括了两个实用程 序:smartctl和smatd。它监控的硬盘必须具有S.M.A.R.T特性,目前所有硬盘都有这个特性,但默认情况下通常没有开启这个功能,有两种 方法来开启这个特性:1)通过BIOS设置选项2)通过smartctl命令。利用它可以测试硬盘的健康状况,并在发生故障前进行预警。

准备工作

在开始测试或监控之前,先检查一下目标硬盘是否支持S.M.A.R.T,以root登陆(Windows下以系统管理员身份登陆),运行下面的命令:

#smartctl -i -d ata /dev/sda

这里的参数-i指出显示设备信息,-d指出设备类型,这里指定的设备类型为ata,当然,如果是SCSI硬盘,就指定scsi了,最后的/dev/sda就是设备了,这个命令返回:

smartctl version 5.37 ‘i686-pc-linux-gnu‘ Copyright (C) 2002-6
Bruce Allen
Home page is http://smartmontools.sourceforge.net/=== START OF INFORMATION SECTION ===
Model Family: Western Digital Caviar SE (Serial ATA) family
Device Model: WDC WD800JD-00MSA1
Serial Number: WD-WMAM9S474555
Firmware Version: 10.01E01
User Capacity: 80,026,361,856 bytes
Device is: In smartctl database ‘for details use: -P show‘
ATA Version is: 7
ATA Standard is: Exact ATA specification draft version not
indicated
Local Time is: Thu Feb 7 13:09:37 2008 PST
SMART support is: Available - device has SMART capability.
SMART support is: Disabled

从返回的信息中,可以看到硬盘的生产厂家,型号,序列号,容量,是否支持SMART,目前SMART开启没有。结果的最后两行就是我们需要的信息,从这里可以看出,这块硬盘是支持SMART技术的,但目前还没有开启它。

转载:http://server.zol.com.cn/170/1708162.html   

RAID对服务器的要求

既然应用到服务器中,就对服务器产品也会有所要求。由于RAID技术可以使多块磁盘同时读写,就对服务器CPU、内存、I/O带宽的方面性能提出要求。对于处理器支持,当SCSI演变到Ultra 2,80Mbps速度要求时,处理器最起码要在奔腾处理器以上,而对于RISC架构的服务器要应用在专用处理器上,但如今最新的处理器都可以支持目前的RAID技术。

在操作系统方面,主流的windows、Linux系统都支持RAID 0,RAID 1,RAID 5级别阵列模式。要实现数据安全冗余,对于阵列中的硬盘还有一定要求。如何确保数据安全,则取决磁盘阵列设计和品质。其中主要考虑的是:是否有对温度、电压、电源、磁盘状态监控的系统?磁盘有没有提供热插拔,在电路设计上就可以体现有没有保护路线的设计,80针的SCSI磁盘支持热插拔,而68针的SCSI磁盘不支持热插拔。此外,磁盘托架也有真假热插拔的区别。

而值得注意的是,在配置磁盘阵列时,阵列中磁盘顺序。就是说,有些RAID阵列卡在磁盘拔出后,只有按照顺序插回阵列中才可以保证数据被正常存取。

RAID的实现方式

针对技术的产生,除了提供使用环境以外,如何实现其最大的特点是关键。RAID有几种实现类型分为: 软件 RAID和硬件 RAID。硬件方式就是通过RAID控制器实现,而软件方式通过软件把磁盘组合起来,实现条带化快速数据存储和安全冗余。

对于硬件RAID通常就是主板集成RAID控制器或者单独RAID卡,连接多个磁盘实现。而硬件RAID性能较好,应用广泛,对于高速数据存储和安全冗余环境应用合适。软件就相对简单,无需购买RAID卡,通过第三方软件实现低成本应用,但是配置复杂而且性能较低,目前RAID卡是主流的应用方式。


RAID模式对比

除此之外,主要阵列模式实现所需的基本要求,通过上面表格比较可以清楚知道每种RAID模式。

引用:http://teamojiao.javaeye.com/blog/456795

系统

# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# lspci -tv # 列出所有PCI设备
# lsusb -tv # 列出所有USB设备
# lsmod # 列出加载的内核模块
# env # 查看环境变量 资源
# free -m # 查看内存使用量和交换区使用量
# df -h # 查看各分区使用情况
# du -sh # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载 磁盘和分区
# mount | column -t # 查看挂接的分区状态
# fdisk -l # 查看所有分区
# swapon -s # 查看所有交换分区
# hdparm -i /dev/hda # 查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE # 查看启动时IDE设备检测状况 网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息 进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态 用户
# w # 查看活动用户
# id # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户 # cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务 服务
# chkconfig –list # 列出所有系统服务
# chkconfig –list | grep on # 列出所有启动的系统服务 程序
# rpm -qa # 查看所有安装的软件包

以下转载自(http://hi.baidu.com/lueson/blog/item/200215018b500109728da529.html)

虽然不知道原创作者是谁了,超级感谢这位大仙,要不是他,恐怕我硬盘的数据会很麻烦。

-----------------------------------------------------------------------------------------

硬盘变动态的数据恢复,常见原因有重新安装操作系统,导致原本联机状态的动态分区,变成不可用的状态了,还有就是从基本磁盘转换成动态磁盘,比较容易也不丢失数据,但是要转换回来,在windows下就转不回来了,本文将介绍这两种情况的恢复方法。

有的朋友在升级硬盘的时候,老硬盘,有时会挂在电脑上做从盘,从盘初始化的时候有的初始化成动态磁盘,或者本来是基本磁盘,在好奇心的驱使下,转换成动态磁盘了,当你以后在拿这个动态磁盘挂在别的机器上用,就直接不能用了,或者在你重新装系统后,这个从盘直接就是动态外部的,不是联机状态。转动态磁盘容易,半分钟就完事了,动态转回基本磁盘,就不那么简单了。但是也用不了几分钟,方法有很多种,在这里介绍个和本站自己恢复《系统分区结构恢复修复数据恢复法》中恢复动态分区,稍微麻烦那么一点点的方法。但是那个是直接用软件,这个可是软件和手工恢复结合着用的哦,不信就往下看。

重装系统前第二块盘的状态,动态磁盘,联机,5个分区。

重装系统后,进入系统看到,原来的动态磁盘变成,外部了,分区全部不见了。
下面介绍恢复的方法,首先我们用分区表医生去重建分区表,但是当打开分区表医生,选了这个盘以后,工具栏竟然全部变成灰色不可用的状态,这个家伙,看到是动态分区,就吓的不敢动它了。
我们下面利用Winhex来帮帮这个家伙的忙。首先打开动态磁盘。
看到动态磁盘的0扇区,看下面红色框住的数字,那是动态分区的标志。我们只要把它改改,分区表医生就不会怕了。
我们这里把0扇区偏移量00000001C2的42改成07,改好以后,点击文件,保存。
然后打开分区表医生,这家伙,现在工具栏不是灰色了,好了。直接点重建分区表,自动,交互随便选一个。自动,软件智能做出选择
交互,会列出所有搜索到的分区信息,然后根据以前分区情况手动做出选择。
确认分区结构以后,直接点击保存。

linux下有sync, windows下也有类似的软件,就是cwRsync,此软件分为服务器端/客户端。
目前能找到的最新的版本是4.0.1。下载地址:cwRsync下载

主服务器:A 192.168.0.10

从服务器:B 192.168.0.20

 

1、主服务器A安装

主服务器A安装cwRsyncServer_4.0.1_Installer.zip,server 包括了 client 的功能。

安装完后,会在 系统服务 中增加 RsyncServer 和 ssh 服务,进入服务管理,设置为自动启动。安装成功后,要备份的文件目录必须加上 SvcwRsync 这个用户可读权限。

2、主服务器A配置

进入cwRsync安装目录,配置 rsyncd.conf 如下。

程序代码:

port = 9999 #默认端口是873,做了端口限制的要开启cwRsync所使用的端口。

use chroot = false

strict modes = false

hosts allow = *

log file = rsyncd.log #LOG

pid file = rsyncd.pid

# Module definitions

# Remember cygwin naming conventions : c:\work becomes /cygwin/c/work

#

[web]

path = /cygdrive/d/web/test #注意格式,这说明是D盘WEB目录下的test目录

read only = true #只读

list = no

auth users = username  #指定用户名, 如果没有这行,则表明是匿名

secrets file=/cygdrive/d/rsyncd.secrets  这里指定了认证文件目录,名字叫 rsyncd.secrets,其内容是txt编辑为 username:123456 前面是用户名,后面是密码

transfer logging = no #是否记录详细的传输情况

rsyncd.conf相关解释:

use chroot = no        # 不使用chroot

max connections = 4    # 最大连接数为4

pid file = /cygdrive/d/rsyncd.pid

lock file = /cygdrive/d/rsync.lock

log file = /cygdrive/d/log/rsyncd.log    # 日志记录文件

[web]            # 这里是认证的模块名 client端需要根据此名字进行同步

path = /cygdrive/d/web/test    # 需要做镜像的目录

comment = BACKUP CLIENT IS SOLARIS 8 E250

ignore errors           # 可以忽略一些无关的IO错误

read only = yes         # 只读

list = no               # 不允许列文件

hosts allow=192.168.0.20         #允许连接IP,不限制则填写 *

auth users = username      # 认证的用户名,如果没有这行,则表明是匿名

secrets file = /cygdrive/d/rsyncd.secrets    # 认证文件名