最近一直在找工作,好久都没有更新博客了。希望从这篇博客开始,自己继续以培训时的热情和动力去学习新的知识与技术;也希望自己从不自信和自卑中走出来,以自信饱满的姿态迎接以后的生活。同时也警示自己——快点找到工作吧,不然该饿肚子了。

    这篇博客就是上篇博客中提到的夭折了的我的第一份毕业实训报告,为了以后能快速的找到就放在这里吧!和绝大多数计算机专业的毕业报告一样,前面的内容都是借鉴网上和其他人的毕业报告拼凑起来的,实在没什么营养,这里就略过了。下面所写的都是经过试验做出来的,然后写出来的,可靠性还是有保证的。废话不多说了,开始吧!

简单说明:

本网站架构设计方案采用LVS+Hearbeat实现Web集群的负载均衡和高可用;LNAMP架构提供Web服务;rsync+inotify实现数据的同步。 

参考文献:高俊峰老师的《高性能Linux服务器构建实战》

操作系统:RHEL5.4——32位

第一部分 网站架构设计

1.1 网站架构设计

本网站大致使用了三个层次:第一层:LVS+Heartbeat的Director服务器,来实现负载均衡能力;第二层:提供Web服务的服务器,用来提供用户真正访问的服务;第三层:MySQL数据库层,提供数据的存储与查询,这里仅对MySQL服务器做主从设置,未采用高可用集群技术,因为没有用到共享存储,不过在实际应用环境中,是很有必要对MySQL做高可用的。

1.1.1 规划图

简单的网站架构设计方案_第1张图片

图1-1 逻辑示意图

IP命名规则:

   
   
   
   
  1. DIP:配置在Director网卡上用来与后方RealServer通信的IP地址; 
  2. VIP:配置在Director网卡别名上用来提供服务的公有IP地址; 
  3. RIP:配置在RealServer上,用来与Director和其它服务器通信的IP地址; 

1.1.2 IP地址规划

IP地址规划如表1-1所示:

服务器 IP 说明
Master Director DIP:192.168.1.11 与后端Realserver通信
Master Director VIP:192.168.1.100 提供服务的网络地址
Master Director eth1:10.10.10.1 用于与Slave Director传递心跳信息
Slave Director DIP:192.168.1.12 与后端Realserver通信
Slave Director eth1:10.10.10.2 用于与Master Director传递心跳信息
RealServer 1 RIP:192.168.1.21 与前端Director通信
RealServer 1 VIP:192.168.1.100 用来直接响应客户端的请求
RealServer 2 RIP:192.168.1.22 与前端Director通信
RealServer 2 VIP:192.168.1.100 用来直接响应客户端的请求
Master MySQL 192.168.1.23  
Slave MySQL 192.168.1.24  

 

主机命名规范,如表1-2所示 

Server Hostname
Master Director node1.rrl.com
Slave Director node2.rrl.com
RealServer 1 r1.rrl.com
RealServer 2 r2.rrl.com
Master MySQL master.mysql.com
Slave MySQL slave.mysql.com


 第二部分 实现与测试

本部分将按上面分的层次分别实现,并对其进行必要的测试。网站的构建采用的是Linux操作系统,为什么采用Linux系统作为服务器的理由就不多说了,你懂的。我们采用的是RedHat发行版的Linux----RHEL5.4系统上构建。

2.1 MySQL数据库

注:MySQL从服务器的MySQL数据库版本必须与主服务器的版本相同或更新,因为软件一般都是向下兼容的,如果主服务器的版本比从服务器的高,可能某些特性无法使从服务器识别,从而导致数据的不一致现象,这种事情是不应该也不允许发生的。

2.1.1 MySQL的安装与配置

Master MySQL Server and Slave MySQL Server的安装与配置相同。

参见我的另一篇博客:架设LAMP平台的WEB服务器第二小节MySQL的安装。

2.1.2 MySQL主从配置

1、主MySQL服务器配置

1)、登陆MySQL数据库,为从服务器创建用户账户:

   
   
   
   
  1. mysql>GRANT REPLICATION CLIENT,REPLICATION SLAVE ON *.* TO replay@’192.168.1.24’ IDENTIFIED BY '123456';  
  2. mysql>FLUSH PRIVILEGES; 
  3. mysql>FLUSH MASTER; 

复制需要REPLICATION CLIENT权限;监视和管理复制需要REPLICATION SLAVE权限。

2)、查看下二进制日志的信息:

   
   
   
   
  1. mysql> SHOW MASTER STATUS; 
  2. +------------------+--------+--------------+------------------+ 
  3. | File             |Position| Binlog_Do_DB | Binlog_Ignore_DB | 
  4. +------------------+--------+--------------+------------------+ 
  5. | mysql-bin.000003 |   107  |              |                  | 
  6. +------------------+--------+--------------+------------------+ 
  7. 1 row in set (0.00 sec) 

2、从MySQL服务器配置

1)、编辑/etc/my.cnf配置文件

   
   
   
   
  1. #log_bin         = mysql-bin         #关闭二进制日志 
  2. server-id        = 10 
  3. relayrelay_log   = relay-bin     #开启中继日志 

注:从服务器的server-id的值必须不能与主服务器的相同。

2)、登陆MySQL数据库,执行下列命令

   
   
   
   
  1. mysql> CHANGE MASTER TO  
  2.     -> MASTER_HOST='192.168.1.23',  
  3.     -> MASTER_USER='replay',  
  4.     -> MASTER_PASSWORD='123456',  
  5. mysql>FLUSH SLAVE; 
  6. mysql>START SLAVE;  

2.1.3 MySQL的测试与验证

1)、在从服务器上使用下面命令查看状态信息:

   
   
   
   
  1. mysql>SHOW SLAVE STATUS\G 

简单的网站架构设计方案_第2张图片

图2-1 从服务器状态图

如图,如果Slave_IO_Running与Slave_SQL_Running状态为Yes,说明MySQL主从服务器配置正常

2)、测试数据是否可以同步

首先,在主服务器上创建一个数据库,如图2-2所示

简单的网站架构设计方案_第3张图片

图2-2 主服务器创建数据库

从服务器上查看数据库信息,如图2-3所示

简单的网站架构设计方案_第4张图片

图2-3 从服务器数据库信息

从图2-1、图2-2以及图2-3可以看出MySQL主从服务器配置成功,且能实现数据同步,至此,MySQL主从服务器配置宣告结束。至于其它配置,等需要到时候会有所提及。

2.2 RealServer的实现

RealServer即真正提供服务的服务器,也就是真正意义上的Web Server。这里Web Server采用LNAMP架构构建,并采用rsync+inotify的机制实现Web页面的同步。需要注意的是我们将MySQL服务单独分离出去,所以,在RealServer上不提供MySQL服务。


2.2.1 Apache的安装与配置
2.2.2 PHP的安装与配置
这两部分同样参见我的另一篇博客: 架设LAMP平台的WEB服务器 一小节Apache的安装和第三小节PHP的安装

2.2.3 PHP的测试与验证

1)、测试数据库的连通性

修改/usr/local/httpd/htdocs/index.php文件

   
   
   
   
  1. [root@r1 ~]#vim index.php  
  2. php  
  3. $link=mysql_connect(‘192.168.1.23’,’root’,’123456’);  
  4. if ($link)  
  5.       echo “Successful”;  
  6. else  
  7.       echo “Failure”;  
  8. mysql_close();  
  9. ?>  

在Master MySQL Server 和Slave MySQL Server为两台Realserver创建授权用户。由于命令相同,所以仅给出在Master MySQL Server授权的命令。

   
   
   
   
  1. [root@master ~]#mysql -uroot -p123456 
  2. mysql>GRANT ALL PRIVILEGES ON *.* TO root@’192.168.1.21’ IDENTIFIED BY ‘123456’ 
  3. mysql>GRANT ALL PRIVILEGES ON *.* TO root@’192.168.1.22’ IDENTIFIED BY ‘123456’ 

通过浏览器分别对其访问,如图2-4,访问Realserver1。图2-5,访问Realserver2

简单的网站架构设计方案_第5张图片

图2-4  

简单的网站架构设计方案_第6张图片

图2-5

从测试结果说明数据库连接正常。

2.2.4 Nginx

1、编译安装Nginx

1)、首先为nginx添加用户,实现以这个用户的身份来安全的运行nginx服务进程:

   
   
   
   
  1. [root@r1 ~]#groupadd -r nginx  
  2. [root@r1 ~]#useradd -r -g nginx -s /sbin/nologin -M nginx  

2)、执行下列命令

   
   
   
   
  1. [root@r1 ~]#tar xf nginx-1.0.13.tar.gz  
  2. [root@r1 ~]#cd nginx-1.0.13   
  3. [root@r1 nginx-1.0.13]#./configure --prefix=/usr/nginx \  
  4. --sbin-path=/usr/sbin/nginx \  
  5. --conf-path=/etc/nginx/nginx.conf \ 
  6. --error-log-path=/var/log/nginx/error.log \  
  7. --http-log-path=/var/log/nginx/access.log \  
  8. --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock \  
  9. --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module \  
  10. --with-http_stub_status_module --with-http_gzip_static_module \  
  11. --http-client-body-temp-path=/var/tmp/nginx/client/ 、 
  12. --http-proxy-temp-path=/var/tmp/nginx/proxy/ \  
  13. --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ 、 
  14. --http-uwsgi-temp-path=/var/tmp/nginx/uwsgi \  
  15. --http-scgi-temp-path=/var/tmp/nginx/scgi --with-pcre  
  16. [root@r1 nginx-1.0.13]#make && make install  

2、配置Nginx

为nginx提供SysV服务脚本/etc/rc.d/init.d/nginx,这样使我们可以使用service命令进行对其进行操作,因为在编译安装nginx的时候,默认是不提供这个服务脚本的。我们需要手动添加,脚本参见另一篇博客:RHEL5.4下实现LNMP中配置Nginx。

然后执行下列命令:

   
   
   
   
  1. [root@r1 ~]#chmod +x /etc/rc.d/init.d/nginx  
  2. [root@r1 ~]#chkconfig --add nginx  
  3. [root@r1 ~]#chkconfig nginx on                #设置为开机启动  
  4. [root@r1 ~]#service nginx start  

2.2.5 Nginx的测试与验证

通过浏览器分别访问Realserver1和Realserver2的Web服务,结果如图2-6,图2-7所示

简单的网站架构设计方案_第7张图片

图2-6 访问Realserver1

简单的网站架构设计方案_第8张图片

图2-7 访问Realserver2

从测试结果可以看出nginx工作正常。

2.2.6 Nginx的反向代理与缓存配置

这里将所有的动态请求转给Apache进行处理,静态页面直接通过Nginx进行响应。

1、编辑Nginx的配置文件/etc/nginx/nginx.conf,如没有特殊说明,则表示Realserver1和Realserver2的配置是一样的。

   
   
   
   
  1. [root@r1 ~]#vim /etc/nginx/nginx.conf 
  2. 在http容器下,server容器外添加如下内容: 
  3. proxy_cache_path    /var/nginx/cache        levels=1:2 keys_zone=STATIC:10m inactive=24h max_size=1g
  4. 修改server容器中的server_name 字段 
  5. Realserver1的修改为:server_name r1.rrl.com; 
  6. Realserver2的修改为:server_name r2.rrl.com; 
  7. 在server容器中添加如下内容: 
  8. location ~ \.php?$ { 
  9.             proxy_pass http://127.0.0.1:8080; 
  10.             proxy_set_header    Host $host; 
  11.             proxy_cache         STATIC; 
  12.             proxy_cache_valid   200 1d; 
  13.             proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504; 
  14.         }  
  15.  
  16.         location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ { 
  17.             expires     30d; 
  18.         }  
  19.  
  20.         location ~ .*\.(js|css)?$ { 
  21.             expires     1h; 
  22.         } 

保存退出,创建缓存目录:

   
   
   
   
  1. [root@r1 ~]#mkdir /var/nginx/cache –pv 
  2. [root@r1 ~]#chown –R nginx.nginx /var/nginx/cache 
  3. [root@r1 ~]#service nginx configtest       #检查配置文件是否有语法错误 
  4. [root@r1 ~]#service nginx restart          #重启nginx服务 

2.2.7 Nginx的反向代理与缓存的验证

1)、验证代理功能

查看分别查看Nginx和Apache的网页存放位置下有哪儿些文件。如图2-8所示

图2-8

通过浏览器访问Web页面,如图2-9所示

简单的网站架构设计方案_第9张图片

图2-9 Web访问页面

从图中可以看出通过浏览器访问Realserver1的动态请求转发给Apache处理,并返回结果。而静态请求直接从Nginx返回。由此可以验证反向代理功能已经正常工作。

2)、验证缓存功能

查看/var/nginx/cache缓存目录下是否有缓存文件存在,如图2-10所示

图2-10

由图中结果,可以看出,缓存已经生效。Realserver2的验证不再给出。

2.3 rsync+inotify实现数据同步

为了方便管理与维护,将Nginx与Apache的Web页面放置在/var/www目录下。具体配置不再给出。

2.3.1 安装rsync与inotify-tools

inotify-tools是用来监控文件系统变化的工具,因此必须安装在内容发布节点,服务节点无需安装inotify-tools,另外需要在Realserver1和Realserver2节点上安装rsync。在这个案例中,内容发布节点充当了rsync客户端的角色,而服务节点充当了rsync服务器端的角色,整个数据同步的过程,其实就是一个从客户端向服务端推送数据的过程。这里讲Realserver1配置为内容分发节点,Realserver2为服务节点。 编译安装rsync
   
   
   
   
  1. [root@r1 ~]#tar xf rsync-3.0.4.tar.gz 
  2. [root@r1 ~]#cd rsync-3.0.4 
  3. [root@r1 rsync-3.0.4]#./configure 
  4. [root@r1 rsync-3.0.4]#make && make install 
编译安装inotify-tools
   
   
   
   
  1. [root@r1 ~]#tar xf inotify-tools-3.14.tar.gz 
  2. [root@r1 ~]#cd inotify-tools-3.14 
  3. [root@r1 inotify-tools-3.14]#./configure 
  4. [root@r1 inotify-tools-3.14]#make && make install 

2.3.2 Realserver2服务节点的rsync配置文件的配置

这个配置文件默认是没有的,需要手动创建。
   
   
   
   
  1. [root@r2 ~]# vim /etc/rsyncd.conf 
  2. uid = nobody 
  3. gid = nobody 
  4. use chroot = no 
  5. max connections = 10 
  6. strict modes = yes 
  7. pid file = /var/run/rsyncd.pid 
  8. lock file = /var/run/rsync.lock 
  9. log file = /var/log/rsyncd.log 
  10.  
  11. [web] 
  12. path = /var/www/ 
  13. comment = web file 
  14. ignore errors 
  15. read only = no 
  16. write only = no 
  17. hosts allow = 192.168.1.21 
  18. hosts deny = * 
  19. list = false 
  20. uid = root 
  21. gid = root 
  22. auth users = webuser 
  23. secrets file = /etc/web.pass 
创建认证文件
   
   
   
   
  1. [root@r2 ~]# vim /etc/web.pass 
  2. webuser:123456  
  3. [root@r2 ~]# chmod 600 /etc/web.pass  
  4. [root@r2 ~]# /usr/local/bin/rsync –daemon  
  5. [root@r2 ~]# echo "/usr/local/bin/rsync --daemon" >> /etc/rc.local

2.3.3 Realserver1上的配置

编写一个脚本来将文件同步到Realserver2上的/var/www目录中。脚本如下:
   
   
   
   
  1. [root@r1 ~]# vim rsync.sh 
  2.  
  3. #!/bin/bash  
  4. host=192.168.1.22    
  5. src=/var/www/  
  6. dst=web  
  7. user=webuser 
  8.  
  9. /usr/local/bin/inotifywait -mrq --timefmt '%d/%m/%y %H:%M' --format '%T %w%f%e' -e close_write,delete,create,attrib $src | while read files  
  10. do  
  11. /usr/bin/rsync -vzrtopg --delete --progress --password-file=/etc/web.pass $src $user@$host::$dst 
  12.  
  13.         echo "${files} was rsynced" >> /tmp/rsync.log 2>&1  
  14. done 
创建相应的认证文件
   
   
   
   
  1. [root@r1 ~]# vim /etc/web.pass 
  2. 123456 
  3. [root@r1 ~]# ./rsync.sh & 
  4. [root@r1 ~]# echo "rsync.sh &" >> /etc/rc.local 

2.3.4 文件同步验证

在Realserver1的/var/www目录下创建一个文件,如图2-11

简单的网站架构设计方案_第10张图片

图2-11

从图中可以看出文件正在传输,我们再来看Realserver2的/var/www目录,如图2-12

图2-12

在Realserver2上已经同步到了相应的文件,由此可以看出,rsync+inotify配置成功。

2.4 LVS负载均衡的安装与配置

LVS是通过IPVS模块来实现的。IPVS是LVS集群系统的核心软件,主要用于完成用户的请求到达负载调度器后,如何将请求发送给每一个Realserver节点、Realserver节点如何响应数据给用户等。这里采用的是DR模型。

在配置之前,首先应该查看内核是否支持IPVS模块
   
   
   
   
  1. [root@node1 ~]# modprobe -l | grep ipvs   
  2. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs.ko   
  3. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_dh.ko   
  4. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_ftp.ko   
  5. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lblc.ko   
  6. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lblcr.ko   
  7. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_lc.ko  
  8. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_nq.ko  
  9. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_rr.ko   
  10. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_sed.ko  
  11. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_sh.ko   
  12. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_wlc.ko   
  13. /lib/modules/2.6.18-164.el5/kernel/net/ipv4/ipvs/ip_vs_wrr.ko  

如果有上面这些信息输出,表明内核支持IPVS模块。接下来就可以安装IPVS管理软件,并进行集群配置了。

2.4.1 安装ipvsadm管理软件

这里采用yum方式安装,yum源的配置上面已经给出,这里直接安装。

   
   
   
   
  1. [root@node1 ~]# yum install ipvsadm -y  

2.4.2 两台Director建立双机互信

1)、Master Director的配置生成一对密钥:(私钥).ssh/id_rsa,.ssh/id_rsa.pub

   
   
   
   
  1. [root@node1 ~]# ssh-keygen -t rsa  
把公钥.ssh/id_rsa.pub复制到Slave Director的root用户的家目录下的.ssh目录中的authorized_keys文件中去
   
   
   
   
  1. [root@node1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]  

2)、Slave Director的配置

生成一对密钥:(私钥).ssh/id_rsa,.ssh/id_rsa.pub
   
   
   
   
  1. [root@node2 ~]# ssh-keygen -t rsa  
把公钥.ssh/id_rsa.pub复制到Master Director的root用户的家目录下的.ssh目录中的authorized_keys文件中去
   
   
   
   
  1. [root@node2 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub [email protected]  

2.4.3 安装Heartbeat2.1.3

Heartbeat的安装需要安装libnet软件包,所以先编译安装libnet。Libnet是一个高层次的API工具,可以从http://sourceforge.net/projects/libnet-dev/下载。

1)、安装libnet
   
   
   
   
  1. [root@node1 ~]# tar xf libnet-1.1.6.tar.gz   
  2. [root@node1 ~]# cd libnet-1.1.6   
  3. [root@node1 libnet-1.1.6]# ./configure   
  4. [root@node1 libnet-1.1.6]# make && make install  
2)、安装heartbeat
   
   
   
   
  1. [root@node1 ~]# tar xf heartbeat-2.1.3.tar.gz  
  2. [root@node1 ~]# cd heartbeat-2.1.3  
  3. [root@node1 heartbeat-2.1.3]# ./ConfigureMe configure --disable-swig --disable-snmp-subagent  
  4. [root@node1 heartbeat-2.1.3]#make  
  5. [root@node1 heartbeat-2.1.3]#make install  
  6. [root@node1 heartbeat-2.1.3]# cp doc/ha.cf doc/haresources doc/authkeys /etc/ha.d/  
  7. [root@node1 heartbeat-2.1.3]# cp ldirectord/ldirectord.cf /etc/ha.d/  
  8. [root@node1 heartbeat-2.1.3]# groupadd -g 256 haclient  
  9. [root@node1 heartbeat-2.1.3]# useradd -u 256 -g haclient hacluster 
为了保证ldirectord插件可用,需要安装perl-MailTools的rpm包
   
   
   
   
  1. [root@node1 ~]# yum localinstall perl-MailTools-1.77-1.el5.noarch.rpm --nogpgcheck -y 

2.4.4 配置集群服务

1、配置heartbeat的主配置文件/etc/ha.d/ha.cf

将下面列出的字段启用或做相应更改:
   
   
   
   
  1. logfile /var/log/ha-log  
  2. keepalive 2  
  3. deadtime 30  
  4. warntime 10  
  5. initdead 120  
  6. udpport 694  
  7. bcast     eth1  
  8. node    node1.rrl.com  
  9. node    node2.rrl.com 
  10. ping 192.168.1.1 

2、配置heartbeat的资源文件/etc/ha.d/haresources

Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源。文件每一行可以包含一个活多个资源脚本名,资源脚本名之间用空格隔开,参数之间使用两个冒号隔开。
   
   
   
   
  1. node1.rrl.com   IPaddr::192.168.1.100/24/eth0 ldirectord 

3、配置heartbeat的认证文件/etc/ha.d/authkeys

Authkeys文件用于设定heartbeat的认证方式,该文件有3种可用的认证方式:crc、sha1和md5,这里使用sha1认证方式。设置如下:
   
   
   
   
  1. #auth 1 
  2. #1 crc 
  3. #2 sha1 HI! 
  4. #3 md5 Hello! 
  5. auth 1 
  6. 1 sha1 f661f9b61ad0fdcbc2e20a5578ef089d 
而且这个文件的权限必须是600,所以执行下列命令:
   
   
   
   
  1. [root@node1 ~]#chmod 600 /etc/ha.d/authkeys 

4、配置Ldirectord的配置文件/etc/ha.d/ldirectord.cf

将相关选项修改为下面内容
   
   
   
   
  1. virtual=192.168.1.100:80  
  2.         real=192.168.1.21:80 gate  
  3.         real=192.168.1.22:80 gate  
  4.         fallback=127.0.0.1:80 gate  
  5.         service=http  
  6.         request=".test.html"  
  7.         receive="OK"  
  8.         scheduler=rr  
  9.         #persistent=600  
  10.         #netmask=255.255.255.255  
  11.         protocol=tcp  
  12.         checktype=negotiate  
  13.         checkport=80 
5、将上面修改的配置文件复制到Slave Director上
   
   
   
   
  1. [root@node1 ~]# scp -p /etc/ha.d/haresources /etc/ha.d/ldirectord.cf /etc/ha.d/authkeys /etc/ha.d/ha.cf 192.168.1.12:/etc/ha.d/ 

6、Realserver上的配置

在LVS的DR模型下,用户的访问请求到达Realserver后,是直接返回给用户的,不再经过前端的Director Server,因此,需要在每个Realserver节点上增加虚拟的VIP地址,这样数据才能直接返回给用户。增加VIP的操作可以通过创建脚本的方式来实现。创建文件/etc/init.d/lvsrs.脚本内容如下:

   
   
   
   
  1. [root@r1 ~]# vim /etc/init.d/lvsrs  
  2. #!/bin/bash  
  3.  
  4. # Script to start LVS DR real server.  
  5. # description: LVS DR real server  
  6.  
  7. .  /etc/rc.d/init.d/functions  
  8. VIP=192.168.1.100  
  9. host=`/bin/hostname`  
  10. case "$1" in  
  11. start)  
  12.        # Start LVS-DR real server on this machine.  
  13.         /sbin/ifconfig lo down  
  14.         /sbin/ifconfig lo up  
  15.         echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  16.         echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  17.         echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore  
  18.         echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce  
  19.         /sbin/ifconfig lo:0 $VIP broadcast $VIP netmask 255.255.255.255 up  
  20.         /sbin/route add -host $VIP dev lo:0  
  21. ;;  
  22. stop)  
  23.         # Stop LVS-DR real server loopback device(s).  
  24.         /sbin/ifconfig lo:0 down  
  25.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore  
  26.         echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce  
  27.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_ignore 
  28.         echo 0 > /proc/sys/net/ipv4/conf/all/arp_announce  
  29. ;;  
  30. status) 
  31.         # Status of LVS-DR real server.  
  32.         islothere=`/sbin/ifconfig lo:0 | grep $VIP`  
  33.         isrothere=`netstat -rn | grep "lo:0" | grep $VIP`  
  34.         if [ ! "$islothere" -o ! "isrothere" ];then  
  35.             # Either the route or the lo:0 device  
  36.             # not found.  
  37.             echo "LVS-DR real server Stopped."  
  38.         else  
  39.             echo "LVS-DR real server Running."  
  40.         fi  
  41. ;;  
  42. *)  
  43.             # Invalid entry.  
  44.             echo "$0: Usage: $0 {start|status|stop}"  
  45.             exit 1  
  46. ;;  
  47. esac 
并在nginx的页面目录下创建.test.html文件
   
   
   
   
  1. [root@r1 ~]# vim /usr/nginx/html/.test.html 
  2. OK 

3.4.5 LVS的负载均衡的验证

1)、通过浏览器访问192.168.1.100,结果如图2-13所示

简单的网站架构设计方案_第11张图片

图2-13

查看集群资源,如图2-14所示

简单的网站架构设计方案_第12张图片

图2-14

查看虚拟IP,如图2-15所示

简单的网站架构设计方案_第13张图片

图2-15

从上面的内容可以看出配置的集群已经正常工作了。所有配置工作完成。