分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]
这个可是线上的真实案例,拿出来分享下。
转载注明乾子's BLOG  http://www.6xuan.com

感谢linuxtone,linuxfans,51cto网站的会员朋友分享的资料。

哎哟宝贝亲子网(www.aiyobaby.com)的LVS方案实施步骤(LVS+IPVSADM+keeplived)。(而且该方案成功的用在韩国JAMY,OGAGE中国公司)

客户公司哎哟宝贝亲子网,由于业务增长过快。访问量过大。目前独享带宽100M,依旧是有时候解决不了网站打开延迟问题。

查看了下。原因有以下几个。

1.业务增长快,硬件没有跟上,虽然目前来说是五洲的机器,而且web+mysql一台机器,另一台是图片服务器,还有1台是备份服务器。这样子依旧解决不了访问量一大,网站卡死现象。

2.图片链接太多,由于该网站有众多的加盟商,各自的图片链接都是来自于哎哟宝贝网,所以造成盗链严重。即使图片服务器遵循IE浏览器中,每次显示两个TABLE原理,但是还是解决不了。

3.一台服务器单点故障,以及web-server中使用apache,优化不得当也会造成网站访问量激增卡死现象。

4.哎哟宝贝融资后,有很多钱来做这些。所以呢,多余的话不说了。大概就是这个样子。直接上图说话。

=======================================================================

废话:LVS的三种模式,这里依旧是最高效的。LVS-DR模式。全部都是公网IP。
一直考虑是用LVS+HA模式还是使用LVS+KEEPALIVED或者RH自带的IPVS+Piranha 模式,原来也是一直在做HA方案,我的blog里面写过LVS+HA的方案,但是只是实验环境。而且如果使用心跳机制,就需要涉及的文件ipvsadm,ha.cf ,authkeys,ldirectord,arptables,还有真实服务器里面配置脚本。机房的环境特殊,所以为了安全没有使用。

如果是IPVS+Piranha ,虽然我也见到身边很多朋友在使用这个方案,但是Piranha我并不是很熟悉,还是没有选择。

但是如果使用keepalived后,只要使用一个配置文件就可以了。配置语法简单,上手快。而且kepalived采用VRRP机制,一台做LVS,一台做LVS-bak,可以解决单点故障的问题。并且检查LB机器中的真实服务器。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
具体方案等我测试1周后,稳定了继续完善这篇文档。。

点击在新窗口中浏览此图片

=======================================================
公网IP就不说了。用内网IP来说明吧。

方案说明:利用LVS,虚拟出两个IP,每个IP对应一组业务群。一个对应WEB,一个对应IMAGE,客户的DB使用磁盘柜,放在最后端,不需要公网IP的。另外客户还有一台API服务器,一台SSO服务器,这两台目前来说没有特别需要,不需要用户访问的,所以不用放在LVS里面(这里感谢linuxtone版主netseek给的指导)

方案规划:
两台LVS服务器使用 SUN x4150
后端服务器全部都是DELL1950。

虚拟出俩IP :  VIP1:192.168.0.20 ------------------->对应web服务器(www.aiyobaby.com)

                     VIP2:192.168.0.21--------------------->对应img服务器(img.aiyobaby.com)

LVS服务器:  LVS1(MASTER): 192.168.0.23
                   LVS2(BACKUP):192.168.0.24

WEB1:192.168.0.30
WEB2:192.168.0.31

IMG1:192.168.0.40
IMG2: 192.168.0.41

web1和web2,img1和img2都进行数据同步,这个方案太多了。
一开始想数据库单独设立,也进行数据同步,但是客户数据库至少都在10G左右,mysql replication进行测试时候,小数据量也可以,但是大的话延迟是经常的。因为客户是购物网,所以数据至少保证在5秒内同步。所以将数据库放在最后端,一起读数据从后端开始读取。解决了数据库问题。
=========================================================================
方案实施:
所有机器安装CENTOS5.2-64BIT,最小化安装就可以了。
1.在LVS1和LVS2上安装ipvsadm(可以用yum安装),和keepalived。
keepalived支持内核2.4以上,如果小于这个的话,那么需要打内核补丁。
下载keepalived
#wget http://www.keepalived.org/software/keepalived-1.1.15.tar.gz

可以查看系统是不是支持ipvs转发
#lsmod |grep ip_vs
安装keepalived

#ln -s /usr/src/kernels/2.6.18-53.el5PAE-i686/  /usr/src/linux
#tar zxvf keepalived-1.1.15.tar.gz
#cd keepalived-1.1.15
#./configure  && make && make install
#cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/
#cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
#mkdir /etc/keepalived
#cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/
#cp /usr/local/sbin/keepalived /usr/sbin/

这样子便可以使用
#/etc/init.d/keepalived 开启或者停止。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.直接编辑keepalived.conf,(LVS+keepalived模式,只需要配置keepalived.conf就可以了,其余的不用管)

LVS1的:



! Configuration File for keepalived

global_defs {
   notification_email {
     tinkoko@126.com
   }
   notification_email_from tinkoko@126.com
   smtp_server 127.0.0.1
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.0.20
        192.168.0.21
    }
}

virtual_server 192.168.0.20 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
  inhibit_on_failure
    protocol TCP

real_server 192.168.0.30 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.0.31 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }

}
virtual_server 192.168.0.21 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

real_server 192.168.0.40 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.0.41 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }

}


LVS2的:

! Configuration File for keepalived

global_defs {
   notification_email {
     tinkoko@126.com
   }
   notification_email_from tinkoko@126.com
   smtp_server 127.0.0.1
   router_id LVS_DEVEL
}

vrrp_instance VI_1 {
    state BACKU
    interface eth0
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1234
    }
    virtual_ipaddress {
        192.168.0.20
        192.168.0.21
    }
}

virtual_server 192.168.0.20 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
  inhibit_on_failure
    protocol TCP

real_server 192.168.0.30 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.0.31 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }

}


virtual_server 192.168.0.21 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    persistence_timeout 50
    protocol TCP

real_server 192.168.0.40 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.0.41 80 {
        weight 3
        TCP_CHECK {
        connect_timeout 10
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80
        }
     }

}



~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
3.启动keepalived服务。
#/etc/init.d/keepalived start

到此为止,基本上LVS的设置就算完成了。所有这些东西就牵扯到一个keepalived.conf文件,足够了。使用vrrp机制。
如果有朋友想更加了解keepalived原理,文档下载地址:http://www.6xuan.com/keepalived-guide--FinalBSD.pdf

还有些朋友觉得好像没有用到ipvsadm,那么是不是可以不装。
绝对不行的,keepalived算是ipvsadm的一个套件,所以一定是要安装的。(在此谢谢linuxtone提供的文档)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

4.剩下的东西就是在后端真实服务器上运行的脚本了。脚本如下。自己根据相应的改就可以了。


#!/bin/bash
#2009-06-02 by tinkoko  http://www.6xuan.com   http://www.aiyonet.com http://www.aiyobaby.com

VIP=192.168.0.20

/etc/rc.d/init.d/functions

case "$1" in
start)
       ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP
       /sbin/route add -host $VIP dev lo:0
       echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce
       sysctl -p >/dev/null 2>&1
       echo "RealServer Start OK"

       ;;
stop)
       ifconfig lo:0 down
       route del $VIP >/dev/null 2>&1
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/lo/arp_announce
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_ignore
       echo "0" >/proc/sys/net/ipv4/conf/all/arp_announce
       echo "RealServer Stoped"
       ;;
*)
       echo "Usage: $0 {start|stop}"
       exit 1
esac

exit 0



完了后给这个脚本755权限,运行。

#ifconfig lo:0 查看虚拟IP是不是已经绑定在本机回环网卡上。

===================================================================
此文档目前暂时告一段落。原因是既然是大容量图片服务器,一定少不了缓存服务器。
那么在img图片服务器前端放置一台varnish机器是必要的。要么将图片交给CDN去做。目前正在测试一台BSD的varnish服务器。
过阵子即将上线,等全部稳定了,缓存服务器的文档我会整理发布。。
哇哈哈哈~~~~

========================================================
2009年10月20号最新加入多个域名来进行LVS负载均衡,测试成功。

1.将你的域名统一都指向到虚拟IP上。
2.在后端的真实web服务器上(nginx或者apache-server),绑定该域名。类似于一台服务器里面的虚拟主机一样,尽量让两台服务器的配置文件都是一样的,还有新建的目录。
3.几台服务器数据同步尽量走内网,因为延迟是必须得。
原来做过一个

Prpftpd+Mysql在centos4下的配置
地址
http://www.6xuan.com/read.php/23.htm

但是 不是很完善!今天重新写了!~
嘿嘿!----------------------------------------AIYONETWORK_Tinkoko
centos5.1

proftpd1.3.1.tar.bz2(自带mod_sql和mod_quota不用额外下载)

增加mysql认证,增加quota

分三步
1。配置proftpd让他支持系统帐户和匿名帐户
2。增加mysql认证功能
3。增加quota限制功能



首先安装proftpd-1.3.1

我的LAMP环境都是系统自带的!没有编译!
所以里面有些地方可能会有些出处!
安装
./configure --prefix=/usr/local/proftpd -with-modules=mod_sql:mod_sql_mysql:mod_quotatab:mod_quotatab_sql:mod_ratio --with-includes=/usr/include/mysql --with-libraries=/usr/lib/mysql/

make && make install

------------------------------------------------------------------------------------------------------
ps:如果这个时候出错!什么erroe.1或者2 或者mod-sql_mysql出错!建议安装zlib,另外察看mysql的安装路径!如果是tar包安装的mysql,那么
vi /etc/ld.so.conf

添加下面一行:
/usr/local/mysql/lib/mysql

然后使用

ldconfig

生效!

vi mod_sql_mysql.c

找到#include 这一行,将mysql.h改成你的系统中此文件所在的路径,如

incldue </usr/local/mysql/include/mysql/mysql.h>

---------------------------------------------------------------------------------
==================================
第一部:


安装好了后
启动/usr/local/proftp/sbin/proftpd

如果出现nogroup找不到

别着急
接下来

先建立FTPGRP组:
groupadd –g 1000 –r ftpgrp
建立FTPUSER用户:
adduser –u 1000 –g 1000 –d /wwwroot –s /bin/bash –r ftpuser (我准备让所有ftp目录在/wwwroot,个人根据自己的配置)
mkdie /wwwroot

chown ftpuser:ftpgrp /wwwroot

然后
[root@mail wwwroot]# vi /usr/local/proftpd/etc/proftpd.conf

修改
Group ftpgrp

然后再重新启动!
此时系统帐户和匿名帐户可以登陆了!
别忘记防火墙打开相应端口!~~


================================================================
============================================
第二步
增加mysql认证


vi /usr/local/proftpd/etc/proftpd.conf

最下面添加
SQLConnectInfo
ftp@localhost:21 root pwssword
上面是用户信息保存在ftp数据库,和ftp数据库有效的用户和密码访问

SQLAuthTypes Backend Plaintext
上面是认证
SQLUserInfo ftpuser userid passwd uid gid home shell
上面是ftp数据库的ftp用户表,以及里面的字段名成
SQLGroupInfo ftpgrp groupname gid members
上面是数据库中ftp组名以及字段名成

RequireValidShell off

SQLAuthenticate users groups usersetfast groupsetfast

SQLHomedirOnDemand on
上面是主动建立用户目录

然后保存退出!
接下来就是进入数据库了!创建ftp数据库,以及ftpuser和ftpgrp这两个表!

create databases ftp;
use FTP;

创建ftpuser这个表
create table ftpuser (
userid TEXT NOT NULL,
passwd TEXT NOT NULL,
uid INT NOT NULL,
gid INT NOT NULL,
home TEXT,
shell TEXT
);

创建ftp组

CREATE TABLE ftpgrp (
groupname varchar(255) binary NOT NULL default '',
gid int(11) NOT NULL default '0',
members text NOT NULL,
PRIMARY KEY (groupname);

然后向里面插入数据

INSERT INTO ftpuser (userid, passwd, uid, gid, home, shell)
VALUES (‘user1’, ‘123456’, ‘1000’, ‘1000’, ‘/wwwroot/user1’, ‘’);

INSERT INTO ftpgrp VALUES ('ftpgroup', '1000', 'ftpuser');

然后你可以重新启动proftp,用user1去登陆!它会在/wwwroot下自动创建自己的目录!


======================================================
=====================================================
第三步:

下面增加quota配额

修改下proftpd.conf

最下面增加

QuotaEngine on
QuotaDirectoryTally on
QuotaDisplayUnits Kb
QuotaShowQuotas on
QuotaLog "/var/log/quota"

SQLNamedQuery get-quota-limit SELECT "name, quota_type, per_session, limit_type, bytes_in_avail, bytes_out_avail, bytes_xfer_avail, files_in_avail, files_out_avail, files_xfer_avail FROM ftpquotalimits WHERE name = '%{0}'AND quota_type = '%{1}'"
SQLNamedQuery get-quota-tally SELECT "name, quota_type, bytes_in_used, bytes_out_used, bytes_xfer_used, files_in_used, files_out_used, files_xfer_used FROM ftpquotatallies WHERE name = '%{0}' AND quota_type = '%{1}'"
SQLNamedQuery update-quota-tally UPDATE "bytes_in_used = bytes_in_used + %{0}, bytes_out_used = bytes_out_used+ %{1}, bytes_xfer_used = bytes_xfer_used + %{2}, files_in_used = files_in_used + %{3}, files_out_used = files_out_used + %{4}, files_xfer_used = files_xfer_used + %{5} WHERE name = '%{6}' AND quota_type = '%{7}'" ftpquotatallies


SQLNamedQuery insert-quota-tally INSERT "%{0},%{1},%{2},%{3},%{4},%{5},%{6},%{7}" ftpquotatallies
QuotaLimitTable sql:/get-quota-limit
QuotaTallyTable sql:/get-quota-tally/update-quota-tally/insert-quota-tally


然后继续增加mysql两个表
一个ftpquotalimits

一个ftpquotatallies



CREATE TABLE `ftpquotalimits` (
`name` varchar(30) default NULL,
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`per_session` enum('false','true') NOT NULL default 'false',
`limit_type` enum('soft','hard') NOT NULL default 'soft',
`bytes_in_avail` float NOT NULL default '0',
`bytes_out_avail` float NOT NULL default '0',
`bytes_xfer_avail` float NOT NULL default '0',
`files_in_avail` int(10) unsigned NOT NULL default '0',
`files_out_avail` int(10) unsigned NOT NULL default '0',
`files_xfer_avail` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;




CREATE TABLE `ftpquotatallies` (
`name` varchar(30) NOT NULL default '',
`quota_type` enum('user','group','class','all') NOT NULL default 'user',
`bytes_in_used` float NOT NULL default '0',
`bytes_out_used` float NOT NULL default '0',
`bytes_xfer_used` float NOT NULL default '0',
`files_in_used` int(10) unsigned NOT NULL default '0',
`files_out_used` int(10) unsigned NOT NULL default '0',
`files_xfer_used` int(10) unsigned NOT NULL default '0'
) TYPE=MyISAM;



然后向里面插入数据:
只要往ftpquotalimits这个表中插入就好了!另外一个是自动记录!~~~~~~~~~~~`

insert into ftpquotalimits (name,quota_type,per_session,limit_type,bytes_in_avail,bytes_out_avail,bytes_xfer_avail,files_in_avail,files_out_avail,files_xfer_avail) VALUES('test1','user','true','hard','1048576','1048576','1048576','100','100','100');

然后就可以针对这个用户使用quota功能了!

只要要限制多少!随你自己了!

另外转一个关于quotalimits表的说明

name: - 用户帐号
quota type: - user, group, class, all (we use user)
per_session: - true or false (we use true)
limit_type: - 硬限制 or 软限制 (我们一般用硬限制)
bytes_in_avail: - 允许上传的字节数
bytes_out_avail: - 允许下载的字节数
bytes_xfer_avail: - 允许传输的字节数(包括上传/下载)
files_in_avail: - 允许上传的文件数
files_out_avail: - 允许下载的文件数
files_xfer_avail: - 允许传输的文件数(包括上传/下载)


========================================================
==================================================

好了,差不多ok了!


祝好运

经过几天折腾!终于搞定了!~~

由于只是利用企业邮局发信,并不是专业的搭建一台完整的企业邮局出来,关于mailscanner,spam,fprot都没有装!
包括mysql的认证!回头我继续作了!补充上来

娘的,太球累了~~出的都是莫名其妙的问题!~~

环境centos5.1
企业域名aiyonet.com

邮件服务器 mail.aiyonet.com

ip:1.1.1.1
------------------------------------------------------------------------------
----------------------------------------------------------------------------------------------
第一步,设置好DNS,这个很重要!

由于没有和客户良好的沟通!~~很多情况dns问题都不知道怎么解决!~

利用新网的dns。 web服务器和mail服务器不在同一台!

dns里面增加
mail.aiyonet.com A 1.1.1.1
aiyonet.com MX mail.aiyonet.com

完成后,可以利用nslookup查看!或者到
http://www.checkdns.net/quickcheckdomainf.aspx
去查看!

nslookup
> set type=mx
> aiyonet.com

DNS好了之后!
我们开始配置服务器!
----------------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
1。修改mail服务器的hostname
vi /etc/sysconfig/hostname

HOSTNAME=mail.aiyonet.com

reboot

在/etc/hosts里面添加相关纪录
1.1.1.1 mail.aiyonet.com localhost

然后用
hostname查看!~
--------------------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------------
2.安装postfix

yum install postfix

3。配置/etc/postfix/main.cf

修改或者去掉注释
myhostname = mail.aiyonet.com

修改或者去掉注释

mydomain = stylepifa.com

修改或者去掉注释


myorigin = $mydomain


修改或者去掉注释
inet_interfaces = all

修改或者去掉注释
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain,
mail.$mydomain, www.$mydomain, ftp.$mydomain


修改或者去掉注释

mynetworks_style = subnet

修改
mynetworks = 127.0.0.0/8, localhost, 192.168.0.0/24

修改

relay_domains = $mydestination

修改或者去掉注释:
home_mailbox = /Maildir/ 这一步可以先不做!因为每个人的环境不一样!设置邮件存储的目录不一样!就是因为这一步,折腾了我好久!。后面再说


现在因该差不多配置完了!~~~
然后启动postfix看看!别忘记打开25端口,还有停止sendmail进程!

telnet localhost 25

是不是正常!

不对的话,察看配置文件的错误!还有日志!
---------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
第二

接下来配置认证!~~由于邮件客户不是很多!用系统自带的shadow认证!

yum安装cycus-sasl*

vi /etc/sysconfig/saslauthd

修改

SOCKETDIR=/var/run/saslauthd

MECH=shadow



vi /usr/lib/sasl2/smtpd.conf

修改或者添加
pwcheck_method: saslauthd
mech_list: PLAIN LOGIN
log_level:3

然后重新启动/etc/init.d/saslauthd start

用 /usr/sbin/testsaslauthd -u 系统用户 -p 密码

是不是返回
ok,successd

---------------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------
继续回到postfix的main.cf
最后面添加
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_recipient_restrictions = permit_sasl_authenticated,reject_unauth_destination,permit_mynetworks
smtpd_client_restrictions = permit_sasl_authenticated


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

第三
配置dovecot.conf

vi /etc/dovecot.conf

修改protocols = pop3 imap pop3s


启动dovecot

别忘记打开防火墙端口
110和143

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

现在基本配置完了!可以手动创建用户看看!
然后用outlook是不是可以收发!
至于搭建webmail
可以参考http://www.6xuan.com/read.php/7.htm

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


出错的话!请查看相应的日志文件!

我把我遇到的问题出错说错来!~

1。如果出现不能发信,smtp错误之类的!

查看配置文件的
mynetworks = x.x.x.x  添加相应的网段!
main.cf最后添加的规则的reject都去掉测试。
还是查看认证是否通过。


2。如果相应服务不能启动。
查看谁占用了25.110.143这些端口!
然后配置文件是不是规范。

3。如果可以发信,但是不能收信!

请查看日志,是否信件已经到达服务器上了!

如果到了话,那就是收信目录或者权限不对影响!

我的收信都在/home/Maildir     

修改main.cf

home_mailbox = /Maildir/

4。有时候能发,有时候能收!发信和收信很不规范
查看dns设置,以及是不是被列入垃圾邮件


服务器集群和lvs是两种方案,但是很多实际环境中将他们结合起来。来提高的网络流量的负载还有灾难容错。

第一方案: 双机热备(算是ha集群的一种)

方案拓扑:


方案思路:
如图所示。R1R2是真实存在的服务器。并且都配置双网卡。一个连接公网,一个用于连接心跳线。数据服务器在后端,用于存放R1或者R2的数据。V1是虚拟服务器,做成双机热备后,V1就是一个浮动IP


具体配置:
R1R2都是五洲服务器。XEON3.0/1G/73SCSI/CENTOS4.4-KENREL2.6.9

R1: eth0 192.168.0.100(公网) eth1:10.0.0.100(内网)

R2 eth0 192.168.0.200(公网) eth1:10.0.0.200(内网)

数据库服务器: 192.168.0.121(这里我临时使用NFS来作数据共享服务器)

V1: 192.158.0.222 (虚拟浮动ip)


由于我这里面是实验环境,所以大概思路交待清楚。心跳线由于没有交叉线,就用一个交换机代替。


R1
R2都要安装libnet, pkgconfig glib2-devel e2fsprogs
开始配置:
R1需要配置的内外网ip

Vi /etc/sysconfig/network
修改自己的主机名,我这里是R1,记得重起生效。
Vi /etc/hosts
里面添加R1和R2的主机名对应的IP地址。记得重新启动网卡。
R2和共享存储服务器一样的设置。
Ok。接下来安装heartbeat软件(R1和R2安装,共享数据库不用安装了,只要装nfs就好),下载地址
http://www.ultramonkey.org/download/heartbeat/
我使用heartbeat-2.1.3.tar.gz。解压安装,过程不在说了。
先以R1为例(我准备R1做主,R2做从):

1。
安装后,会存在/usr/local/etc/ha.d这个目录。有些朋友使用rpm包安装,可能ha.d这个目录直接生成在/etc/下了。实在找不到使用find / -name ha.d来寻找。
接下来copy源安装目录下的doc目录里面的三个文件到ha.d目录下
copy /home/tinkoko/heartbeat-2.1.3/doc/ha.cf /usr/local/etc/ha.d/
copy /home/tinkoko/heartbeat-2.1.3/doc/haresources /usr/local/etc/ha.d/
copy /home/tinkoko/heartbeat-2.1.3/doc/authkeys /usr/local/etc/ha.d/

2。
然后 vi /usr/local/etc/ha.d/ha.cf
具体要把下面的选项前的注释去掉
logfile /var/log/ha-log
logfacility local0
keepalive 2 每2秒钟 测试机发送一个广播
deadtime 30 30秒内没有反应,立即切换服务
warntime 10
initdead 120
udpport 694
bcast eth1 指明心跳连接的接口号,这个一定要写对了,内网卡
ucast eth1 10.0.0.200 心跳连接的pc的ip,写R2的
auto_failback on 主服务器恢复后是不是自动获得主权限
node R1 两个的主机名(最好用uname -n察看)
node R2
ping www.baidu.com 测试机的ip (要写外部的测试IP)

3。
Vi /usr/local/etc/ha.d/haresources(这个很重要,很多时候测试不成功都是这个文件问题)
在里面添加或者修改一句就好了.
R1 IPaddr::192.168.0.222/24/eth0 Filesystem::192.168.0.121:/home/www::/var/www/html/::nfs httpd
这句话意思是 主服务器的主机名 虚拟服务器的浮动ip地址 存储服务器NFS的源到挂载的目的 启动heartbeat顺便还要启动的服务。

4。
Vi /usr/local/etc/ha.d/authkeys
修改auth 1
#1 crc
1 sha1 HI! (sha加密方式最好,如果直接使用交叉线连接心跳的话建议用crc)
#3 md5 Hello!
最后要更改文件的权限
chmod 600 /etc/ha.d/authkeys

5。
上面就是R1的设置。R2的设置和R1差不多。唯一区别就是R2的ha.cf文件中:
ucast eth1 10.0.0.100 这个需要写R1的。
其余的两个文件内容都一致。

6。
接下来就是存储NFS服务器的设置了!先说题外话,存储服务器能用到的很多。例如NAS,RAID5/10,SAN,NFS,磁盘柜等等。建议如果要使用的话可以去选择NAS,而且目前linux有开源的nas软件,freenas,可以在www.freenas.cn下载到。官网不知道怎么了打不开了。这个软件我回头就去测试。Ok,先说NFS。
安装nfs软件。
我想把nfs服务器的/home/www/这个目录挂载到R1和R2的/var/www/html下所以
Vi /etc/exports
添加/home/www/ 192.168.0.*(rw)
然后启动nfs服务,和portmap服务。
然后再R1和R2上面测试是不是可以手动挂载过来。
在R1和 R2上输入:
Mount –t nfs 192.168.0.121:/home/www /var/www/html
然后登陆进去,里面创建文件测试。
注意如果出错,注意关掉防火墙或者允许111端口。注意给/home/www的777权限。如果关于nfs还有什么问题的话,建议去查看
http://www.chinaitlab.com/www/special/linux14.asp#(鸟哥的关于nfs设置,大概看下就知道了)

8。
ok。为了测试效果。我在192.168.0.121共享服务器的/home/www/下编辑index.html,里面写:ok this is test page!if you see this!!!!congratulation.
然后别忘记在R1和R2服务器上卸载掉挂载的目录,还有停止httpd服务。我们让heartbeat自动启动带起来。

9。
好了,然后准备好一切。在r1和r2上开启heartbeat服务把。别忘记防火墙释放相应端口。
然后我们察看/var/log/ha.log
只要不出错。观察里面的信息变化。顺便ping 192.168.0.222(虚拟ip),只要能通。Ok,就去网站访问192.168.0.222。是不是出现了我们刚才的那句话:ok this is test page!if you see this!!!!congratulation.。要使没有出现,在R1或者R2上用df –h查看是不是目录被挂载过来。在看看是不是httpd服务启动起来。只能是一个httpd服务启动。

ps:有些朋友为了更加安全期间,可以将nas服务器配置成内网卡ip,去测试


然后开始另一种方案lvs和lvs+ha


LINUX下LVS简单搭建




其中的三台服务器都是真实存在的。V1双网卡,一个外网,一个内网。对客户提供http访问服务。R1和R2都是内网服务器,用于V1的流量分流。对于客户而言,R1和R2是不透明的。
实施步骤:V1:eth0 210.51.47.123 eth1 10.0.0.1
R1:eth1 10.0.0.2
R2:eth1 10.0.0.3
V1安装ipvsadm,去下面这个网站下载
http://www.linuxvirtualserver.org/
还是centos4环境,内核2.6.9所以,不需要编译内核。接下来在v1安装ipvsadm
1. ln -s /usr/src/kernels/2.6.9.el4-i686 /usr/src/linux 不然的话后面会出错。
2. 安装ipvsadm-1.24.tar.gz
Tar zxvf ipvsadm-1.24.tar.gz
Cd ipvsadm-1.24
Make
Make && make install
3.开启转发echo "1">/proc/sys/net/ipv4/ip_forward
4.安装服务
ipvsadm -C
清空ipvsadm表
安装LVS服务
ipvsadm -A -t 210.51.47.123:80 -s rr
增加第一台服务器
ipvsadm -a -t 210.51.47.123:80 -r 10.0.0.2:80 -m -w 1
增加第二台服务器
ipvsadm -a -t 210.51.47.123:80 -r 10.0.0.3:80 -m -w 1
5.将内网服务器R1 和R2配置好ip,网关指向10.0.0.1(V1的内网卡)
6.开启r1和r2的httpd服务
7.访问210.51.47.123测试访问。并且运行ipvsadm查看转换信息。


还有高可用的集群。将lvs和双机热备结合起来。
我只是说一下思路,由于手上试验环境有限不能具体测试。可能有些出处


客户访问v1的流量,全部被后端R1.R2.R3负载均衡。R1.R2.R3共享磁盘柜,这样子可以防止数据的写入不完整,和同步出错的问题。由于v1是前端lvs服务器,如果v1down机,那么一样会引起整个web站点的无法访问。所以,用v2来做v1的备份服务器,对v1进行监听。V1v2之间进行双机热备,利用heartbeat来监听心跳。客户访问的始终是虚拟ip,后端完全隐蔽。
[不指定 2008/03/03 07:59 | by tinkoko ]

上海哎哟网络科技有限公司(哎哟信息技术有限公司)成立于2005年,是中国上海,北京,韩国基于互联网提供全面电子商务咨询与解决方案的优秀IT企业之一,拥有中华人民共和国信息产业部颁发的经营性增值电信业务(ISP/ICP沪B2-20070210)经营许可证,主要向国内外用户提供包括主机托管、主机租用、虚拟主机、域名注册,网站设计等IDC方面的专业服务。公司依托覆盖上海,北京的营销团队和技术运维团队以及强大的研发团队,以专业的水准向各大中型企业网站,各类门户网站、网络游戏运营商、电子商务网站、即时通讯、音乐网站、电影网站、博客播客威客网站、婚介交友网站、行业资讯等用户提供以下服务:

  主机托管(Colocation):提供包括各类网站的全国核心骨干机房托管
  主机租用(Dedicated server):提供各种国内外品牌服务器的租用托管
  机柜租用(Colocation Rack):提供电信、网通骨干网络为依托的精品机房机柜租用
  VPS租用(VIRTUAL PRIVATE SERVER):4线接入的虚拟独享服务器
  虚拟主机(Web Hosting):提供可管理的各种容量虚拟主机服务,自主选择操作系统
  域名注册(Domain Register):提供国内外各种域名注册服务
    网站制作:提供中韩日优秀网站设计方案
 

  哎哟网络(www.aiyonet.com)是上海地区目前唯一的一家同时提供中韩日运营商核心代理资质的IDC企业。同时和上海电信,上海网通,北京网通合作经营互联网数据中心A类机房,并且和韩国的sk企业,cafe24有着良好的合作关系。经营机房面积合计超过10000平米,运维的服务器数量超过1500台,带宽总拥有量超过15G。强大的服务团队是哎哟网络坚实的技术后盾,哎哟网络为了更好的服务于客户,自主研发了数据中心管理平台,实时监控系统、客户24小时服务平台等。哎哟网络拥有经验丰富的客户服务团队和专业的技术工程师队伍,为亚洲八千多家客户提供着“高质量、高效率、高安全”的7x24x365专业运维三高服务。

  哎哟网络专注于IDC增值服务,延续自己的7X24的服务理念,打造自己的品牌IDC业务服务,为企业网络应用、企业网络管理、企业网络营销提供最强有力的保障。为广大新老用户提供更高速,更稳定,更安全,更完善的IDC业务品牌服务。我们希望我们“专业于网络,专心于服务”的理念能服务于更多的客户.。

分页: 1/3 第一页 1 2 3 下页 最后页 [ 显示模式: 摘要 | 列表 ]