头班车
冬日的5点还是一片漆黑中
头班车有如黑暗中的灯光照射过来
它是如此的早
赶车的每个人似乎都有很着急的事情一般
不然他们也不会赶这个车
农村的广袤土地上
车窗外一片漆黑
只有汽车的车灯照亮着前方
等在车站的人们
当汽车靠近的时候
一种欣喜的感觉透在脸上
来了,终于来了
虽然等待的时候也许很长了
冬日的5点还是一片漆黑中
头班车有如黑暗中的灯光照射过来
它是如此的早
赶车的每个人似乎都有很着急的事情一般
不然他们也不会赶这个车
农村的广袤土地上
车窗外一片漆黑
只有汽车的车灯照亮着前方
等在车站的人们
当汽车靠近的时候
一种欣喜的感觉透在脸上
来了,终于来了
虽然等待的时候也许很长了
首先需要在新服务器上安装系统,最好是跟原来的被迁移服务器上操作系统相同,这样就省的在新服务器上重新编译系统软件了。但是如果你要从linux迁移到freebsd平台上那真的需要重新编译了。
其次要理清所有需要迁移的服务器上相关域名和系统平台软件,比如apache, nginx, lighttpd, mysql, php, lucent等等,如果相同系统平台,那只需要把相关软件目录打包传到新服务器上就可以了。当然也有个前提是以前安装都要通过–prefix来指定目录,如果默认安装那就会把这些系统软件分散到系统其它目录之中。
再次是迁移程序数据,这些如网站,数据库等等,这些一般是先通过打包再传输到新服务器上,然后在旧服务器上启动rsyncd服务端,然后再在新服务器上通过rsync来同步数据。这样是为了防止漏传输相关数据。
接着是让开发修改相关配置文件,比如修改连接数据库地址等等,但是这些最好在系统hosts里做,这样可以为以后再次迁移节省很多时间。
然后我们需要修改crontab,logrotated等等这些系统配置,特别对于不同系统平台,那更是要修改更多的系统配置文件。
在本地指下hosts来访问网站,如果有时间还可以再次进行压力测试。
关闭原有网站的动态内容,如果有CDN,那让CDN进行强制缓存。然后我们再次同步网站数据,千万别把新的配置文件给覆盖掉。以及同步数据库等等。
最后让重新指下网站的A记录,或者让CDN指向新的源站。
func最近好像热的很。安装也很方便。分为master和client,两端都需要安装func和certmaster
首先是下载func和certmaster
wget http://download.fedora.redhat.com/pub/epel/5/i386/func-0.21-1.el5.noarch.rpm wget http://download.fedora.redhat.com/pub/epel/5/i386/certmaster-0.20-2.el5.noarch.rpm rpm -ivh certmaster-0.20-2.el5.noarch.rpm rpm -ivh func-0.21-1.el5.noarch.rpm
master:
然后配置 /etc/certmaster/certmaster.conf 主要是 listen addr = 最好为空,这样你的所有网卡的 51235 都被监听
minion.conf 设置主机名certmaster = www.zauc.com
nginx也算是可以根据来源IP来进行负载均衡了。
nginx默认安装就是支持geo模块的。
安装完成后编辑nginx.conf这个主配置文件如下:
user nobody; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; sendfile on; keepalive_timeout 65; geo $cncip { default 1; #未定义IP的默认为1 include cnc.conf; #包含进cnc.conf文件 } server { listen 80; server_name www3.zauc.com; location / { if ($cncip) { rewrite ^ http://www.baidu.com; #未定义在cnc.conf文件中的IP重定向到www,baidu.com } root /home/zauc/web; index index.wml index.html; } } }
然后创建cnc.conf文件如下
#192.168.30.0/24 0;
192.168.21.0/24 0;
nginx 的wiki对于这个模块的说明在http://wiki.codemongers.com/NginxHttpGeoModule有粗略的说明。我们可以发现在nginx.conf主控制文件内也可以进行分类。
首先是在一开始定义好
geo $country { default no; include conf/geo.conf; 127.0.0.0/24 us; 127.0.0.1/32 ru; 10.1.0.0/16 ru; 192.168.1.0/24 uk; }
这个是apache2.2以后增加的新的特性。
首先我们这边有2个域名。一个是www.timo.com还有一个是mail.timo.com这两个域名。同时www.zauc.com内网有2台机器 (192.168.0.10和192.168.0.11),当然也可以是外网.mail.zauc.com这个域名的内网IP为 (192.168.0.20)
要使用proxy和blance一定要在编译的时候加入proxy和blance.
./configure --prefix=/usr/local/apache2 --enable-mods-shared=all --enable-modules=all --enable-proxy --enable-proxy-connect --enable-proxy-ftp --enable-proxy-http --enable-proxy-ajp --enable-proxy-balancer --enable-vhost-alias make make install
安装完成后在extra/httpd-vhosts.conf中进行如下配置。
ServerAdmin [email protected] ServerName www.timo.com ProxyPass / balancer://www.timo.com/ ErrorLog "logs/www.timo.com-error_log" CustomLog "logs/www.timo.com-access_log" common
首先是下载awstats,这个现在是有中文网站了
解压后后放到/usr/local下
然后运行tools/awstats_configure.pl
按照提示进行配置,主要是网站的名字配置
然后是是nginx进行配置,如果是APACHE或者是IIS就不用这样麻烦了。
首先是配置nginx的日志格式
1 | log_format main '$remote_addr - $remote_user [$time_local] "$request" ' |
这个要注意其中的标点和空格。
在nginx上跑awstats需要支持fastcgi和perl才可以
fastcgi这个安装方法很多,一般是编译php5的时候直接放进去就可以了。当然我们现在为了方便就直接使用nginx-fcgi脚本http://www.nginx.eu/nginx-fcgi.html
使用脚本前需要安装下列perl模块
cacti本身自带了很多监控插件,如cpu,系统负载,磁盘等等。但是对于一些服务我们就必须另外找插件了。
现在我这边有用到的有nginx, apache, mysql, memcached, iis这几种
先说nginx插件。
http://forums.cacti.net/about26458.html
首先要在被监控服务器的nginx.conf文件中加上如下内容
location /nginx_status {
stub_status on;
# disable access_log if requared
access_log off;
#allow XX.YY.AA.ZZ;
#allow YY.ZZ.JJ.CC;
#deny all;
}
最后再重启下nginx就可以了。上面内容可以根据自己需求进行更改的。
在监控服务器上
cp get_nginx_clients_status.pl /scripts/
cp get_nginx_socket_status.pl /scripts/
chmod 0755 /scripts/get_nginx_socket_status.pl
chmod 0755 /scripts/get_nginx_clients_status.pl
vsftpd虚拟用户安装手册 目的:所有帐户存在一个文件内,而不是系统内。每个虚拟帐户都可以拥有自己独立的目录 安装过程不说了。
1 | #cat vsftpd.conf |
还需要安装的软件是db4-util,根据各自系统不同来进行安装
首先是建立一个ftp总的帐户
useradd virtual_user -d /home/ftp/ -s /sbin/nologin
vi /etc/vsftpd/vsftpd_login
tom //用户名
123 //密码
#建立用户数据库
db_load -T -t hash -f vsftpd_login /etc/vsftpd/vsftpd_login.db
#改变文件属性
chmod 600 /etc/vsftp/vsftpd_login.db
建立PAM文件,告诉系统你要使用自己的数据库了)
看看另一个文件vsftpd.pam,它有两行内容:
http://www.hiadmin.com/cacti%E8%BF%9B%E9%98%B6%E5%BA%94%E7%94%A8%E4%B8%80%EF%BC%9A%E6%B1%87%E6%80%BB%E6%B5%81%E9%87%8F%E5%9B%BE-%E5%B0%86%E6%95%B0%E6%8D%AE%E5%90%88%E5%B9%B6%E5%90%8E%E4%BD%9C%E5%9B%BE/ 上面是我参考的原文。 但是我需要的是数据的合并,并不是像原文中那种独立展示的。 在add items中原文如下: data source:数据来源就是你要汇总的流量之一; color:选择颜色这里可以任意选择; Graph Item Type:图形(我选择的是AREA区域类型,要累加的流量图请选择stack) CDEF Function:这里一定要选择“Turn bytes into Bits” 在第二项中Graph Item Type中,原文中说如果要累加的话要使用stack,但是在实践过程中我发现,在第一个item必须使用AREA,而不是stack,第二个开始启用stack类型。
mysql的master和slave是一般系统上经常使用到的一个。 但是这个模式有个很大的问题,slave机器一直都是通过单线程模式来运行,这个其实就已经算是瓶颈了。 第二,涉及到网络环境,如果交换机网络广播较多,或者跨交换机,那同步的速度也还是非常慢的。 第三,slave机器CPU和内存起码得跟master一样才行。 第四:sql语句优化,以及数据库的优化。经常查看下slow log会是很有帮助的。其实这个是最重要的对于数据库层面的同步。如果在master 经常通过show full processlist会出现语句,那只能说明SQL写的太烂了。 第五:数据库引擎的选择,这个要根据业务类型来选择。 第六:是选择state replication还是row replication还是混合也是根据自己的业务类型来选择,可以通过监控线程中是select还是update以及insert多来考虑。 http://forums.mysql.com/read.php?26,225394,225394 这里介绍了一种新的replication方式。但是国内还甚少看到有人用这个,所以出了问题一般也就在mail list中找答案了。 同时mysql已经准备发布replication的第二版本,已经能够支持多线程了。试目以待