要求:通过使用LVS的直接路由来实现服务器的负载均衡。 注:在做实验之前一定要先关闭每台主机的防火墙与SELinux 拓扑图如下:
LVS服务器配置: 1> 开启转发功能 [root@localhost ~]# echo 1 > /proc/sys/net/ipv4/ip_forward 2> 安装lvs控制软件ipvsadm [root@localhost ~]# mount /dev/cdrom /mnt/cdrom mount: block device /dev/cdrom is write-protected, mounting read-only [root@localhost ~]# cd /mnt/cdrom/Cluster [root@localhost Cluster]# rpm -ivh ipvsadm-1.24-10.i386.rpm warning: ipvsadm-1.24-10.i386.rpm: Header V3 DSA signature: NOKEY, key ID 37017186 Preparing... ###################################### [100%] 1:ipvsadm ###################################### [100%] 3> 创建规则 [root@localhost Cluster]# ipvsadm -A -t 192.168.2.11:80 -s rr [root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.20 -g [root@localhost Cluster]# ipvsadm -a -t 192.168.2.11:80 -r 192.168.2.30 -g 4> 保存规则并启动服务 [root@localhost Cluster]# service ipvsadm save Saving IPVS table to /etc/sysconfig/ipvsadm: [ OK ] [root@localhost Cluster]# service ipvsadm start Clearing the current IPVS table: [ OK ] Applying IPVS configuration: [ OK ] Http server 1 配置 1> 安装http服务器软件 [root@localhost ~]# mount /dev/cdrom /mnt/cdrom mount: block device /dev/cdrom is write-protected, mounting read-only [root@localhost ~]# cd /mnt/cdrom/Server/ [root@localhost Server]# rpm -ivh httpd- warning: httpd- Preparing... ################################## [100%] 1:httpd #################################### [100%] [root@localhost Server]# 2> 开启服务 [root@localhost Server]# service httpd start Starting httpd: [ OK ] 3> 为http服务创建一个主页 [root@localhost Server]# echo "111111" > /var/www/html/index.html 4> 开启arp过滤 先查看arp支持的状态 [root@localhost Server]# sysctl -a | grep arp dev.parport.parport0.devices.lp.timeslice = 200 dev.parport.parport0.devices.active = none dev.parport.parport0.modes = PCSPP,TRISTATE dev.parport.parport0.dma = -1 dev.parport.parport0.irq = 7 dev.parport.parport0.base-addr = 888 0 dev.parport.parport0.spintime = 500 dev.parport.default.spintime = 500 dev.parport.default.timeslice = 200 net.ipv4.conf.eth1.arp_accept = 0 net.ipv4.conf.eth1.arp_ignore = 0 net.ipv4.conf.eth1.arp_announce = 0 net.ipv4.conf.eth1.arp_filter = 0 net.ipv4.conf.eth1.proxy_arp = 0 net.ipv4.conf.eth0.arp_accept = 0 net.ipv4.conf.eth0.arp_ignore = 0 net.ipv4.conf.eth0.arp_announce = 0 net.ipv4.conf.eth0.arp_filter = 0 net.ipv4.conf.eth0.proxy_arp = 0 net.ipv4.conf.lo.arp_accept = 0 net.ipv4.conf.lo.arp_ignore = 0 net.ipv4.conf.lo.arp_announce = 0 net.ipv4.conf.lo.arp_filter = 0 net.ipv4.conf.lo.proxy_arp = 0 net.ipv4.conf.default.arp_accept = 0 net.ipv4.conf.default.arp_ignore = 0 net.ipv4.conf.default.arp_announce = 0 net.ipv4.conf.default.arp_filter = 0 net.ipv4.conf.default.proxy_arp = 0 net.ipv4.conf.all.arp_accept = 0 net.ipv4.conf.all.arp_ignore = 0 net.ipv4.conf.all.arp_announce = 0 net.ipv4.conf.all.arp_filter = 0 net.ipv4.conf.all.proxy_arp = 0 对其进行过滤 [root@localhost ~]# echo "net.ipv4.conf.all.arp_ignore = 2" >> /etc/sysctl.conf [root@localhost ~]# echo "net.ipv4.conf.eth0.arp_announce = 1" >> /etc/sysctl.conf 5> 添加到主机192.168.2.11的路由 [root@localhost ~]# route add -host 192.168.2.11 dev lo:0 Http server 2 配置 1> 安装http服务器软件及开启服务都与client 1的作法相同,所以就不同重复,自己操作。 2> 为http服务创建一个主页 [root@localhost Server]# echo "222222" > /var/www/html/index.html 3> 开启arp过滤 先查看状态,如上,再过滤 [root@localhost Server]# echo "net.ipv4.conf.all.arp_ignore = 2" >> /etc/sysctl.conf [root@localhost Server]# echo "net.ipv4.conf.eth1.arp_announce = 1" >> /etc/sysctl.conf 4> 添加到主机192.168.2.11的路由 [root@localhost ~]# route add -host 192.168.2.11 dev lo:0 测试 找一台在192.168.2.0网段的主机进行测试
刷新一下页面
现在我们来想像一种情况,如果我们一个用户在server 1上注册了一个帐户,而等到他再次再次登录的时候,他却进入了第二个server2的数据库,那么他可能登录进自己的帐户吗?这显然是不可以的,因为这两个server各自有自己的数据库,他们之间的数据不能相互传送,那么对这种情况我们应该怎么做呢,其实我们可以让这两个servers的数据库放在同一个地方,让这两个server在工作的时候都读取一个数据库,这样这个数据库不同步的问题就可以解决了,基于上面的实验,我们可以把这两个server的数据放在一个主机中,通过共享的方式,让两个server服务器读取同一个数据。 因为我们现在只是做一个实验,所以我们并不把这两个网站的数据库进行重合,我们只是把这两个网站主页分别挂载到远程数据库主机的一个目录.(在进行lvs负载均衡的时候,两个网站是一样的,基于实验的明确性,我们才使用了不同的网页内容,所以在实际使用中不能这样做) Data server 配置 1> 我们有两种方法进行网站主页的挂载操作,一种是静态挂载,另一种是自动挂载,因为网站是不间断的访问的,所以我们直接设置成开机静态挂载就行了,并且我们使用NFS服务器进行共享操作 2> 创建共享目录/var/www/server1与/var/www/server2,并添加主页 [root@localhost ~]# mkdir -p /var/www/server1 [root@localhost ~]# mkdir -p /var/www/server2 [root@localhost Server]# echo "aaaa" > /var/www/server1/index.html [root@localhost Server]# echo "bbbb" > /var/www/server2/index.html 3> 设置共享目录 [root@localhost Server]# vim /etc/exports //添加如下内容 /var/www/server1 *(ro) /var/www/server2 *(ro) 4> 开启NFS服务 [root@localhost Server]# service nfs restart Shutting down NFS mountd: [ OK ] Shutting down NFS daemon: [ OK ] Shutting down NFS quotas: [ OK ] Shutting down NFS services: [ OK ] Starting NFS services: [ OK ] Starting NFS quotas: [ OK ] Starting NFS daemon: [ OK ] Starting NFS mountd: [ OK ] 5> 设置开机启动 [root@localhost ~]# chkconfig nfs on Http server 1 配置 1> 现在我们可以对dataserver中的共享目录来进行挂载了 首先查看一下要共享的目录 [root@localhost ~]# showmount -e 192.168.3.3 Export list for 192.168.3.3: /var/www/server2 * /var/www/server1 * [root@localhost ~]# 2> 开始进行静态挂载 [root@localhost ~]# vim /etc/fstab //添加如下一行 192.168.3.3:/var/www/server1 /var/www/html nfs defaults,soft,intr 0 0 3> 使用mount –a来重新挂载 [root@localhost ~]# mount –a 再使用mount命令查看一下是否挂载成功 [root@localhost ~]# mount //出现下面的一句就说明挂载成功 192.168.3.3:/var/www/server1 on /var/www/html type nfs (rw,soft,intr,addr=192.168.3.3 Http server 2 配置 1> http server2上的操作和http server 1 的操作大体相似,我们只是简短来说明一下 2> 设置挂载 [root@localhost ~]# vim /etc/fstab //添加如下一行 192.168.3.3:/var/www/server2 /var/www/html nfs defaults,soft,intr 0 0 3 > 重新挂载一下 [root@localhost ~]# mount –a 测试 因为在挂载了远程的目录之后本地的目录就被覆盖掉了,所以服务器上的主页不用再删除,当然如果你感觉怕出差错,也是完全可以删除的。
刷新一下
本试验测试成功,结束! |
不良信息举报Q:2000617|Archiver|ROS软路由论坛 ROSABC.com 网络方案网络工程交流
GMT+8, 2025-10-28 02:26 , Processed in 0.032119 second(s), 15 queries .
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.