Archive for the "技术-Linux&PHP" Category

9
8

DRBD 的安装和配置
目前流行的Linux中只有Centos有预编译好的安装包和对应内核。
如果不想用Centos可以选择从源码安装。DRBD有两种安装模式:直接编译进内核,作为一个可加载的内核模块编译。 无论哪种方式都是有些痛苦的 – 解决各种依赖,准备内核源码树。我是根据官方文档http://www.drbd.org/users-guide/s-build-from-source.html 一步一安装的。依赖的软件或库make, gcc, the glibc development libraries, 和 flex。GCC必须和你编译内核使用的是同一版本。

本文使用的是Centos
1.    准备分区
在两台机器上划分等大的分区供DRBD使用。不要格式化也不要mount.我使用的是/dev/hda2
2.    安装
只要一行命令;
Yum install DRBD
3.    配置IP地址和主机名。
我的/etc/hosts 文件内容如下

127.0.0.1        localhost.localdomain        localhost
192.168.0.113        jack.etop.biz            jack
192.168.0.114        rose.etop.biz            rose

4.    配置
[teddy@jack]$ vim /etc/drbd.conf
drbd.conf内容如下:

global {
usage-count yes;
}
common {
syncer { rate 40M;}
protocol C;
}
resource r0 {
on jack {
device    /dev/drbd1;
disk      /dev/hda2;
address   192.168.0.114:7789;
meta-disk internal;
}
on rose {
device    /dev/drbd1;
disk      /dev/hda2;
address   192.168.0.113:7789;
meta-disk internal;
}
}

每部分的详细含义见官方文档http://www.drbd.org/users-guide/ch-configure.html

然后把上面配置文件拷贝到节点rose的相同目录下 。
scp  /etc/drbd.conf teddy@rose:/etc/
5.    激活前面配置的drbd资源“r0”(两个节点都要执行)
drbdadm create-md r0
drbdadm attach r0
drbdadm connect r0

6.    初始化(这步只要在主节点上操作)
drbdadm —overwrite-data-of-peer primary r0
/etc/init.d/drbd start
然后等待同步完成
然后用下面的命令查看DRBD的运行状态
cat /proc/drbd
建立文件系统
mkfs.ext3 /dev/drbd1
加载分区
mkdir /data  (两个节点都执行)
mount -o rw /dev/drbd0 /data (只要在主节点上操作)

基本配置到这里就完成了。

7.    测试
写点数据到hda1上
[teddy@jack]$echo “I’m a genie in a bottle baby.” >> /data/test_file
接下来你需要将DRBD的主从机互换一下.
可以执行下面的操作:
在主机上,先要卸载掉DRBD设备.
[teddy@jack]$ umount /data
将主机降级为”备机”.
[teddy@jack]$ drbdadm secondary r0
[teddy@jack]$ cat /proc/drbd
现在,两台主机都是”备机”.
在备机rose上,将它升级为”主机”.
[teddy@rose]$ drbdadm primary r0
[teddy@rose]$ cat /proc/drbd
现在,“rose”成为了”主机”. 察看下/data/下写的数据是有同步过来了。

7
8

http://drupal.org/project/zen

http://drupal.org/project/basic

各有各的好处, 但是绝对不要自己从头写起, 也不要试图修改garland…经验所得

7
7

本周花了不少时间研究HA集群,在忘记以前赶紧记录下来。 顺便鄙视一下redhatEL,不厚道, 搞了个yum但又不能用。

维持最长的系统正常运行时间对随需应变计算的成功来说越来越重要。不幸的是,很多现成即用(off-the-shelf)的高可用性(high availability,HA)解决方案 价格昂贵,而且需要专门的硬件。

本文介绍的是HA 服务的廉价替代方案--Heartbeat + DRBD + Linux实现一个双节点的高可用集群。假设该HA集群上提供的服务为apache和mysql. 当主节点出现故障时,自动的通过备份节点继续提供服务。

高可用性的概念
高可用性 是在系统、组件或者应用程序发生故障时快速恢复基本服务的系统管理策略。其目的是最大程度地减少服务中断,而不是容错。用来解决关键商务操作的系统执行故障的最常见解决方案是,使用另一个系统来等待并接管出故障的系统的负载,使商务操作继续进行下去。

HA集群构架

HA可以由两台数据同步的linux节点结成, 两个节点通过冗余的私有的物理连接进行数据同步和节点状态监视。

软件组件

  • Heartbeat

名为 High-Availability Linux 的开源项目的目标是,通过社区开发努力提供一个提升 Linux 可靠性(reliability)、 可用性(availability)和可服务性(serviceability)(RAS)的群集解决方案。Linux-HA 项目得到了广泛的应用,是很多有 趣的高可用性解决方案的重要组成部分。

heartbeat 是可以从 Linux-HA 项目 Web 站点公开获得的软件包之一。它提供了所有 HA 系统所需要的基本功能,比如 启动和停止资源、监测群集中系统的可用性、在群集中的节点间转移共享 IP 地址的所有者等。它通过串行线、以太网接口 或者同时使用二者来监测特定服务(或多个服务)的健康状况。当前版本支持两节点配置,使用专门的 heartbeat“pings”来检查 服务的状态和可用性。

  • DRBD

DRBD 是由LINUX内核模块和相关脚本而构成,用以构建高可用性的集群。其实现方式是通过网络来镜像整个设备。您可以把它看作是一种网络RAID. DRBD 负责接收数据,把数据写到本地磁盘,然后发送给另一个主机。另一个主机再将数据存到自己的磁盘中。

  • Linux 什么 ! 不知道是什么东东? 赶快去做几个俯卧撑吧。

硬件

两台普通x86架构的PC机,双网卡,交叉网线。 如果只是为了测试评估,可以使用虚拟机模拟。

待续。。。。。

28
6

Cluster introduction

Author: keys

A cluster is two or more computers (called nodes or members) that work together to perform a task. There are four major types of clusters:

  • Storage
  • High availability
  • Load balancing
  • High performance

Storage clusters provide a consistent file system image across servers in a cluster, allowing the servers to simultaneously read and write to a single shared file system. A storage cluster simplifies storage administration by limiting the installation and patching of applications to one file system. Also, with a cluster-wide file system, a storage cluster eliminates the need for redundant copies of application data and simplifies backup and disaster recovery.

High-availability clusters provide continuous availability of services by eliminating single points of failure and by failing over services from one cluster node to another in case a node becomes inoperative. Typically, services in a high-availability cluster read and write data (via read-write mounted file systems). Therefore, a high-availability cluster must maintain data integrity as one cluster node takes over control of a service from another cluster node. Node failures in a high-availability cluster are not visible from clients outside the cluster. (High-availability clusters are sometimes referred to as failover clusters.)

Load-balancing clusters dispatch network service requests to multiple cluster nodes to balance the request load among the cluster nodes. Load balancing provides cost-effective scalability because you can match the number of nodes according to load requirements. If a node in a load-balancing cluster becomes inoperative, the load-balancing software detects the failure and redirects requests to other cluster nodes. Node failures in a load-balancing cluster are not visible from clients outside the cluster.  LVS (Linux Virtual Server).

High-performance clusters use cluster nodes to perform concurrent calculations. A high-performance cluster allows applications to work in parallel, therefore enhancing the performance of the applications. (High performance clusters are also referred to as computational clusters or grid computing.)

7
6

搞了一天Drupal

Author: 乌鱼

基本玩熟了, 这种开源项目, 学习方式

  • 首先是尽量用它的default功能, 把它的能力彻底摸透
  • Go through所有的extension和plugin, 熟悉它的社区
  • 抓本电子书快速扫一遍

发现了如下很cool的功能, 确实drupal的灵活度是joomla不可比拟的, 哪怕joomla使用sobi做后端data model.

  • CCK(Content Construction Kit) - 最大的特色plugin了, 自定义dynamic fields
  • 围绕CCK, 有很多plugin, 诸如Email Field, Image Field, Related Node Field 还是个autocomplete
  • Drupal的JS是基于JQuery的, 一个典型的例子就是External Link, 能把在所有externel link变成a link, 同时加上个link icon, 后台还能配置是open new window还是当前window
  • Menu system显然没有joomla的强, 不过有两个比较cool的, 一个是前台的DHTML menu, 一个是后台admin的Super Nav
  • Drupal的体系很好, 万事万物都是Nodes, 只不过拥有不同的”ContentType”, 当自己建立了自己的Content Type, 就可以为这个Content Type设置Fields, 每个Fields还有Content Template与之对应, 可谓相当爽啊
  • Image gallery和缩略图之类的common功能都有, Flash Slide show也有
  • Video的支持有点郁闷了, 作者说要等CCK不是beta的时候, 才会port到6.x上…
  • 有个Image Import功能, 停爽的, 但是不能区分用户, 可能要改改src才能搞定
  • Page Ear, 就是页面右上角mouse放上去象翻书一样翻过来半页, 里面是广告页, 一个flash的plugin, 有点意思
  • 有个Flash Chart的, 不支持drag事件, 不过比image的已经漂亮多了, 看了作者介绍真牛啊, 因为去买了一个Flash Chart, 然后有bug, 对方耽搁了4周, 作者火大了, 就自己搞了一两周做了一个出来, 然后opensource, 那个卖flash chart的公司就没的混了. 说是给人的教训就是, dont piss off your customer. 比较强势, 我喜欢
  • Blog Theme的plugin, 就是可以让不同用户设置不同的theme, 非常符合social networking的需要
  • Friend, FriendFeed plugin, 可以添加好友
  • PM Lite, private message
  • User Points, 因为drupal有内置的Action list,其实是用来做syslog的, 但是这个User points使用这些actions, 然后可以自定义计算公式, 最后能得出成员的分数出来, 很有用的一个plugin
  • User Relationship, 顾名思义
  • Wiki support

从整个过程看出, Drupal的自己功能还是plugin功能, 都强调高度灵活性, 比joomla不是一个级别的. 里面的Action List, ACL, Module的运行方式, 各种Hooks都比Joomla强劲, 但是UI效果确实一般. 不过追求功能的今天, 更重要的其实是你的web能否便利的为用户解决一些困难. Common的UI用户也能接受.. hehe

6
6

PHP世界的Cluster

Author: 乌鱼

一直做Java系统的cluster, apache, app server之流,  也曾经考察过.Net环境下windows自己的NLB (Network Load Balance)

现在来到PHP世界, 也有类似的东西, 昨天跟阿蔡聊起来, 就不要忘了, 记录一下

一个是squid http://www.squid-cache.org/ , 一个是操作系统层面的LVS http://www.linuxvirtualserver.org/

这也就解释通了, drupal, joomla, wordpress都把session default保存到数据库里去, 为了方便在cluster环境下工作, 不用在不同机器复制session了

4
6

PHP里报表库 JpGraph

Author: 乌鱼

http://www.aditus.nu/jpgraph/features_gallery.php

26
5

Drupal的两本电子书

Author: 乌鱼

building powerful and robust websites with drupal 6

apress pro drupal development apr 2007

25
5

一篇很不错的关于如何配置邮件服务器的文章
Howto: ISP-style Email Server with Debian-Etch and Postfix 2.3

http://workaround.org/articles/ispmail-etch/#abstract

16
5

配置Mail的一些经验

Author: 乌鱼

apt-get install courier
apt-get install postfix
/etc/courier 里面的几个文件
/etc/postfix 里面
数据库里, 需要maildb表结构

花了非常多的时间, 大概两整天吧
有如下一些教训:
找官方文档总是最棒最准的, 各种乱七八糟的tutorial, 里面一个比较夸张的错误是
smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2
官方文档说 smtpd_sasl_path = smtpd
折腾了不知道多少时间, 这个问题, 带来的现象是, 基本找不到那个smtpd.conf, 所以用了它自己的default conf, 老去找什么Berke的db
另外一个, local_transport = virtual, 也在postfix官方文档上找到的, 不加的话, 不是用virtual的策略处理account的.

总结一下:
1. DNS那里的MX需要设置到自己主机
2. sasl是做smtpd的验证, imap的验证被它自己的authdaemonrc搞定了
3. mail主目录是自己创建的
新建一个帐号, 有如下几件事
a. mkdir $mail_home/will
b. maildirmake will/Maildir (Maildir是在imap里配置的)
c. chown -R virtual:virtual … chmod -R 700 … 修改权限
d. insert一条记录到users表里
4. alias里是配置别名的
5. 多看mail.log, 基本普通的错没什么问题.

其实应该先看完那本postfix的ebook, 太急了点.

关于hotmail收不到信, 有个说法是需要设置一个SPF的东东
http://www.openspf.org/
然后弄到bind的zone里去. 反正有点不明白为什么. 搞了之后似乎也没好
http://www.microsoft.com/mscorp/safety/content/technologies/senderid/wizard/default.aspx
http://vweb.nass.com.au/cgi-bin/dnslookup?data=trealm.com&server=
http://postmaster.live.com/Guidelines.aspx

哪些支持TXT spf
http://technet.microsoft.com/en-us/exchangehelp/exchangelabsedu/bb980649.aspx