基于共享储存的负载均衡网站架构

什么是共享存储?

基于共享储存的负载均衡网站架构

共享存储是指两个或多个处理机共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。

简单点:多台WEB服务器本地的内容都存在放在一台专门用来储存的服务器上。

什么是负载均衡?

负载均衡(Load Balance)其意思就是分摊到多个操作单元上进行执行。

简单点:用户通过URL进行访问网站,第一次访问到A服务器上,第二次访问到B服务器上,这样就称为负载均衡。

需要了解的知识点

如何实现WEB服务器的内容一致?

多台WEB服务器同时指向同一台用于数据存储的服务器。通过文件共享的方式解决内容一致的问题。例如:NFS服务。这样不管是哪一台WEB服务器进行读写操作,都能够进行内容的一个同步。

如何实现负载均衡?

利用DNS解析,设置两个地址指向www。DNS轮循解析,会将相同的域名解析到不同IP的WEB服务器,从而实现负载均衡。

当用户通过URL访问网站,DNS会进行工作,解析到不同的IP地址,但是不同IP地址的WEB服务器由于储存的内容都是一致的,用户看不出区别。网站访问量大了,管理员只需要通过增加WEB服务器,将WEB服务器内容放在专门用于存储的服务器上,然后添加DNS解析就可以解决问题。

当然这是一个最基础,也是最老的一种负载均衡解决方案,仅供新手学习,实验。

基于共享储存的负载均衡网站架构缺点?

理论上WEB服务器的内容都是放在专门用于存储的服务器上,所以可以无限的去增加WEB服务器,来解决流量大的问题。但是当需要设置50台WEB服务器?1000台WEB服务器?或者是更多的时候,DNS你得写很多条,这个算是一个缺点。

什么是跳板机(堡垒机)?

本次实验文档不会进行演示,但是你得了解学习一下!跳板机是通过跳板(软件)来操作远程设备的。一个公司最重要的内容就是数据,这次我们的架构,内容都是放在一台专门用于存储的服务器上,如果外来者可以直接在存储服务器上进行操作,那安全性就极低,极不安全!但是如果增加一个跳板机,那安全性就能够增加很多!

什么是LVS(Linux 虚拟服务器)?

本次试验也不会进行演示,但是你得了解学习一下!使用集群技术和Linux操作系统实现一个高性能、高可用的服务器.很好的可伸缩性(Scalability)很好的可靠性(Reliability)很好的可管理性(Manageability)。

试验环境

VMware 、Red Hat Enterprise Linux 6、WIndows XP

实验拓扑图

实验拓扑图

Node1,Node2有两块网卡,均作为WEB服务器且为NFS服务器(让Node3存储服务器向WEB服务器提供内容),由于环境有限,Node1在充当WEB服务器的同时也充当DHCP服务,为物理机(客户机)提供IP地址。Node2在充当WEB服务器的同时也充当DNS,为物理机(客户机)提供域名解析,实现负载均衡。

Node3就是存储服务器了,WEB服务器上的内容实际上都是来源于它,它作为NFS服务器,为WEB服务器提供内容。从而实现共享储存,可读可写,内容永远同步且一致!

值得注意的是,黄色圈为192.168.142.0网段(内部网络,局域网)。红色圈为192.168.42.0网段(外部网络,互联网)。有网络基础的话你就知道这两个网络通过交换机是无法互相通信的。所以我们让Node1,Node2有两块网卡。192.168.42.0网段的网卡对外提供服务,你可以理解为互联网。192.168.142.0网络对内提供服务,你可以理解为局域网,且主要用于NFS文件传输,获取Node3服务器上的内容。

假如Node1最大访问量为1000,Node2也为1000,两台WEB服务器都在向Node3访问,那Node3的访问量岂不是2000,该卡顿的还是得卡顿,该崩溃的还是得崩溃?

解释:Node1,Node2在与Node3进行文件传输是用的是同一网络,同一个局域网内传输内容,损耗可以忽略不计。

项目配置要求

项目配置要求

某公司新购三台服务器,服务器上均已安装Linux操作系统,现要求搭建基于共享存储的负载均衡网站。项目配置要求如下:

一、利用node1完成DHCP服务搭建,确保可以为“192.168.42.0”网络中的客户端主机(物理机)动态配置主机IP信息。服务配置要求为:

地址范围可满足100台客户端需要;

1)DNS服务器地址为192.168.42.2;

2)域名为czh.com;

3)网关为192.168.42.254;

4)广播地址为192.168.42.255;

5)默认租约时间为12小时;

6)最大租约时间为24小时。

二、利用node2完成DNS服务搭建,可实现对czh.com域和czh.net域中的WEB服务器实现正向解析。服务配置要求为:

1)仅在192.168.42.2接口上提供DNS名称解析服务。

2)czh.com域资源记录

czh.com域资源记录

3)czh.net域资源记录

czh.net域资源记录

三、利用node3完成NFS服务搭建,可实现为WEB服务器提供共享存储空间及网站数据文件。服务配置要求为:

1)共享/webdir/czh.com目录,使之成为czh.com域对应网站的主目录,仅192.168.142.0网段主机可访问,访问权限均为可读可写;

2)共享/webdir/czh.net目录,使之成为czh.net域对应网站的主目录,仅192.168.142.0网段主机可访问,访问权限均为可读可写。

四、利用node1和node2完成WEB服务搭建,可实现客户端对网站www.czh.com和www.czh.net的浏览。服务配置要求为:

1)创建基于域名的虚拟主机;

2)域名为www.czh.com的虚拟主机对应的主目录为/var/www/html/czh.com,挂载共享目录中对应的目录,创建首页文件index.html,内容为“Welcome to www.czh.com”

3)域名为www.czh.net的虚拟主机对应的主目录为/var/www/html/czh.net,挂载共享目录中对应的目录,创建首页文件index.html,内容为“Welcome to www.czh.net”。

4)不同的虚拟主机对应的主目录不同,首页文件的内容也不同。

这么多内容确实都有点大,但是把它拆解为DHCP服务DNS服务WEB服务NFS服务,你会舒服很多!

由于内容过多,不会过多的贴图,很多步骤会省略,不同的地方欢迎留言板提出,或者访问上面4个服务的详细学习文档进行学习~!

初始化配置

1.Linux主机需要修改正确网卡标识

2.Linux主机需要修改主机名

3.Linux主机需要关闭和禁用防火墙

4.物理机需要关闭防火墙

5.Linux主机需要禁用Selinux

6.Linux服务器端均需要配置本地YUM源仓库

7.Linux主机初始化配置完成后需要确保各直连网段可连通

初始化配置不进行过多演示。需要用到的几个服务,如果Linux主机上没有则需要配置YUM源仓库。为了方便实验,需要关闭防火墙,禁用Selinux。修改主机名,为了见名知义,快速知道是哪一台设备!网卡相关配置设置完后也得进行测试同网段是否能够正确通信。

如果你的设备配置不够高,建议将三台Linux主机的运行内存设置为512M,同时VMware自带DHCP服务,所以你得记得把DHCP自动获取给关闭掉!否则WinXP物理机(客户机)将无法正确的获取到IP地址。

Node1初始化配置(部分)

# vim /etc/sysconfig/network    //修改主机名
# vim /etc/sysconfig/network-scripts/ifcfg-eth0    //修改第一块网卡相关信息

ifcfg-eth0

# cp /etc/sysconfig/network-scripts/ifcfg-eth0    /etc/sysconfig/network-scripts/ifcfg-eth1
//==========复制第一块网卡配置信息并建立第二块网卡ifcfg-eth1信息
# vim /etc/sysconfig/network-scripts/ifcfg-eth1        //修改第二块网卡相关信息

ifcfg-eth1

DEVICE后面对于的这个名字得和你复制后新建的文件名一直如ifcfg-eth1你就得设置eth1,同时记得修改IP地址,Node1和Node2都是两块网卡,且网络均不一致!

# rm /etc/udev/rules.d/70-persistent-net.rules

由于是克隆出来的机器,所以我们得删除上面这个文件来保证网卡名是正确的

我只演示了一部分,所以Node1还有一些你得自己去配置,且Node2,Node3你也得去配置!

查看Node1,Node2,Node3初始化配置

Node1初始化配置

Node2初始化配置

Node3初始化配置

测试三台主机的连通性

经测试,Node1,Node2,Node3主机名,网卡相关信息,关闭防火墙,禁用Selinux均已配置成功,且能够互相通信。YUM源没有进行测试,你可以通过下面的命令进行测试一下。如果没有配置后面安装相关服务软件包的时候你会很头疼!

# yum repolist

由于我在Linux——DHCP服务中将初始化都进行过讲解,所以本地文档不进行过多演示。只演示了几个相对重要的部分。Node3只有一块网卡,只需要配置ifcfg-eth0就好了,不需要去复制一个ifcfg-eth1文件。最最最重要的是VMware自带的DHCP功能你得关闭掉,如何关闭,我在DHCP服务中的开头也进行讲解了。

Node1配置DHCP服务

# rpm -qa | grep dhcp    //查看是否安装
# yum -y install dhcp        //没有安装就安装一下

检测DHCP是否安装

# cp /usr/share/doc/dhcp*/dhcpd.conf.sample /etc/dhcp/dhcpd.conf     //复制模板配置文件
# vim /etc/dhcp/dhcpd.conf    //修改dhcp配置文件
# cat /etc/dhcp/dhcpd.conf    //修改完后直接查看

我这里以及配置好了,且将不必要的内容全部删除掉了,所以直接查看,大家可以以我这个文件作为参考,全部都是按照任务需求来配置的。满足100台客户机需要。DNS服务器地址为192.168.42.2;域名为czh.com;网关为192.168.42.254;广播地址为192.168.42.255;默认租约时间为12小时;最大租约时间为24小时。

DHCP配置文件

# service dhcpd start    //启动DHCP服务

最好的检测就是去WinXP物理机(客户机)上测试一下,就知道DHCP是否配置成功!

# ipconfig /all                //物理机(客户机)上

物理机(客户机)检验DHCP服务

检测说明,DHCP服务器配置成功!

最后的最后,不要忘记将Node1上的DHCP服务设置为开机自启!

# chkconfig dhcpd on    //将DHCP设置为开机自启
# chkconfig --list dhcpd    //重点关注3和5是否为关闭

Node2配置DNS服务

# rpm -qa | grep bind    //查看是否安装
# yum -y install bind        //没有安装就安装一下

检验NFS服务是否安装

修改主配置文件

# vim /etc/named.conf     //修改主配置文件
# grep -v "//" /etc/named.conf    | grep -v ^$    //查看主配置文件生效行

由于我已经配置成功,就直接进行查看贴图了。过滤双斜杠以及空格开头的行(显示所有生效行)

查看NFS主配置文件生效行

# vim /etc/named.rfc1912.zones    //修改子配置文件
# tail -8 /etc/named.rfc1912.zones    //查看子配置文件后8行

由于子配置文件我已经修改好了,且只需要在子配置文件后面进行添加内容,所以我只显示子配置文件的后8行(我添加的内容)进行展示

查看NFS子配置文件

# cp -p /var/named/named.localhost    /var/named/czh.com.zone        //复制正向解析数据库模板文件
# cp -p /var/named/named.localhost    /var/named/czh.net.zone        //复制正向解析数据库模板文件
# ll /var/named        //查看/var/named目录下文件的详细信息

在复制解析数据库模板文件的时候记得属性带一个-p,代表着复制文件且保持文件属性

如果忘记加上-p你在查看/var/named目录下文件的详细信息时会发现数据库解析文件的所属组为root并非named,这会导致DNS服务无法解析,也是非常容易错的一个地方

当然解决办法为下面的命令,root:named 前者代表文件所属用于,后者代表文件所属组用户。我们目的是将文件所属组用户改为named来解决问题!

# chown root:named /var/named/czh.com.zone    //如果复制文件忘记保持文件属性就执行这两条
# chown root:named /var/named/czh.net.zone    //如果没有则不需要执行

查看数据库配置文件详细信息

# vim /var/named/czh.com.zone    //修改解析数据库配置文件
# vim /var/named/czh.net.zone    //修改解析数据库配置文件

# cat /var/named/czh.com.zone    //查看解析数据库配置文件
# cat /var/named/czh.net.zone    //查看解析数据库配置文件

由于我这边已经配置好了,就直接进行查看解析数据库配置文件

查看解析数据库配置文件

# service named start    //启动DNS服务

最好的检测就是去WinXP物理机(客户机)上测试一下,就知道DNS是否配置成功!

# nslookup www.czh.com
# nslookup www.czh.net

物理机(客户端)检测DNS解析

测试表明,www.czh.com dns1.czh.com 解析配置成功!

物理机(客户端)检测DNS解析

测试表明,www.czh.net dns1.czh.net解析配置成功!

且每一个解析都测试了两遍,你会发现解析地址有两个,且两次测试的顺序都不一致。

不要忘记将Node2上的DNS服务设置为开机自启!

# chkconfig named on

Node3配置NFS服务

# rpm -qa | grep "rpcbind"        //检测是否安装rpcbind软件包
# rpm -qa | grep "nfs-utils"    //检测是否安装nfs-utils软件包

# yum install -y rpcbind        //如果没有安装就安装
# yum install -y nfs-utils        //如果没有安装就安装

多数情况下,Linux 是自带安装好了NFS服务的,当然也不排除没有安装的情况!

检测NFS是否安装

# mkdir -p /webdir/czh.{com,net}    //创建/webdir目录并在目录下创建czh.com和czh.net两个目录
# chmod o+w /webdir/czh.{com,net}    //将两个目录其他者权限设为可读可写
# ll -d /webdir/*        //查看/webdir目录下的相关目录及文件信息

创建一个/webdir目录以及/webdir目录下的两个目录,且其他者权限为可读可写,为后续的NFS服务文件共享做准备

NFS服务器创建共享目录

# vim /etc/exports    //修改NFS配置文件
# cat /etc/exports    //查看NFS配置文件

NFS配置文件为空白的,得自己写入。所以文件名一定不要打错!我这边配置好了就直接贴图!

查看NFS配置文件

# service rpcbind restart    //重启rpcbind软件
# service nfs    restart        //重启nfs软件

最好的检测就是去Node1或者Node2检测一下NFS是否成功

# showmount -e 192.168.42.3

物理机(客户端)测试NFS服务

经测试,可以看到共享的两个目录文件!

老规矩,不要忘记了设置NFS服务开启自启

# chkconfig rpcbind on
# chkconfig nfs on

Node1,Node2进行挂载NFS共享

# mkdir /var/www/html/czh.{com,net}        //在/var/www/html目录下创建两个目录用来接收挂载
# ll -d /var/www/html*        //查看/var/www/html目录下的目录及文件详细信息

Node1,Node2准备共享目录

# vim /etc/fstab    //编辑挂载配置文件

编辑挂载配置文件

编辑好挂载配置文件后执行下面的命令

# mount -a         //将/etc/fstab的所有内容重新加载
# df -hT        //查看挂载内容
# ll -d /var/www/html/*        //查看/var/www/html目录下的目录及文件的详细信息

挂载NFS服务,并查看挂载目录权限

当挂载成功后,去查看/var/www/html目录下的目录及文件的详细信息,你会发现权限会与NFS服务器上共享的文件目录权限一致,所以这时候我们的其他者变为了可读可写!

# echo "Welcome to www.czh.com" > /var/www/html/czh.com/index.html
# echo "Welcome to www.czh.net" > /var/www/html/czh.net/index.html

向/var/www/html目录下的两个网站目录内创建一个名为index.html的文件,并放入内容!

以上为Node1挂载的演示,请在Node2上重复做一次,完成挂载!

此步后的内容,默认您已经完成了Node2 NFS的挂载操作

# ll /var/www/html/*        //查看/var/www/html目录下的所有内容
# cat /var/www/html/czh.com/index/html    //查看/var/www/html/czh.com目录下的index.html文件内容
# cat /var/www/html/czh.net/index/html    //查看/var/www/html/czh.net目录下的index.html文件内容

查看共享文件内容

测试证明挂载成功,且完成了共享存储的同步。无论你在哪一台WEB服务器(Node1,Node2)上进行读或写操作,都会进行同步!

Node1,Node2配置WEB服务

# rpm -qa | grep httpd    //检测是否安装WEB服务
# yum -y install httpd    //如果没有安装就安装一下

检测是否安装WEB服务

# vim /etc/httpd/conf/httpd.conf

WEB服务配置文件

注意点,在WEB服务配置文件最底部添加你需要解析的网站,当需要实现多域名多网站访问的时候记得将NameVirtualHost *:80前面的注释给去掉!

# service httpd start    //启动WEB服务

到此WEB服务的配置就完成了,同时请重复以上步骤在Node2上也配置一遍!

配置是否成功,去WindowsXP上检验一下就知道了!

物理机(客户端)测试WEB服务

经过检验,网站访问成功!当你访问www.czh.com时如果访问的是Node1那么再访问一次就一定是Node2服务器了,这个在DNS检验是也验证了!

最后的最后还是记得回到两台WEB服务器上Node1,Node2将WEB服务设置为开机自启

# chkconfig httpd on

到此就完成了基于共享存储的负载均衡网络架构的所有操作!

拍错小技巧

当物理机(客户机)访问网站无法访问如何拍错?

1.看看自己本地IP地址是否有误?(是否能够与互联网、广域网、外网进行通信)

2.测试一下解析,是否都能够正确的进行解析(能够解析说明是WEB配置的问题,不能解析就去解决DNS的问题)

3.测试一下WEB服务是否正常

如果IP可以访问WEB,但是域名无法访问,大几率问题出现在DNS服务上。

如果IP都无法访问WEB,那你得感觉去找找WEB服务上配置的问题!

NFS死活挂在不上去?

中午有个同学问我两台WEB服务器在对NFS进行挂载的时候死活挂载不上去,当时也没有找到错误的地方,晚上自己重新做了一次也碰到了同样的问题,所以我认为是有必要去记录一下的!

1.搞清楚架构,两台WEB服务器是通过第二块网卡192.168.142.*与NFS服务器进行文件传输的,所以你必须得保证能够通信,当然这不是问题所在。

2.showmount -e 192.168.42.3 通过这个命令查看一下是否能够看到NFS服务器共享的文件,这里我能看到,这个时候就自闭了,很难找到问题所在。为了更直观,我模拟一下错误环境,然后贴图供大家查看!同时我确保问题不是在WEB服务器的配置上。

NFS挂载错误问题

3.看看NFS服务器NFS服务配置文件==>/etc/exports

20190520174935.jpg

NFS配置文件配置起来很简单,书写格式上很自信的说不会出现问题!!!!那么问题在.....?

4.分析错误点。WEB服务器无法挂载NFS,但是能够查看NFS,同时我能够确保WEB服务器挂载写法是正确的,问题聚焦在NFS服务器上。但是NFS服务配置文件对了几遍写法确实没问题,所以我们得回到架构图,分析一下此次试验的架构!

本次实验,两台WEB服务器有两块网卡分别为192.168.42.和192.168.142.。NFS服务器只有一块网卡地址为192.168.142.3。WEB服务器与NFS服务器用来传输是在模拟局域网也就是192.168.142.0网段。我们上图配置文件写的是NFS共享到192.168.42.0网段。两台WEB服务器有42网段的网卡,自然是能够实现查看到共享的文件的,但是无法挂载。

无法挂载原因是NFS服务器只有一个网卡,并且为192.168.142.0网段。它向将文件传输给192.168.42.0网段,有网络基础知识的同学应该就能明白,不同网段默认情况下是无法进行文件传输的,这样就有了路由器,然后这个不在本次实验的范围中。

NFS挂载错误拍错

# service rpcbind restart
# service nfs restart

重启一下NFS服务相应软件,然后去WEB服务器上检验一下,会发现挂载成功!

WEB服务死活启动不了

Starting httpd: Warning: DocumentRoot does not exist

碰到过几次,身边同学也碰到过几次,后来百度了一下,发现是Selinux的问题,一定要记得关闭掉!!!

df与df -hT区别?

human-readable :人类可读的,人性化的

type:类型

df -ht功能

对比一下!多出了类型这一栏,可以清晰的看出挂载文件的类型,同时人性化的将默认K为单位的大小变为了G为单位的大小!

总结一下

Node1,Node2的WEB服务,Node1的DHCP,Node2的DNS,Node3的NFS这些服务在测试成功后都记得去设置开机自启,不然机器重启后服务不会自动运行,用户自然也就无法正常的访问网站了!最后的最后感谢浩哥的指导。本文由程志辉原创独自编辑,难免会出现一些错误,欢迎大家在评论区指出,同时转载请留下版权!

知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议

  Previous post 红鲤鱼与绿鲤鱼与驴
Next post   MYSQL数据库基础语句

添加新评论

已有 13 条评论

  1. 刚好看到负载均衡不知道什么意思。虽然现在还算不知道..

    1. 哈哈,我也忘得差不多了。简单点:用户通过URL进行访问网站,但是公司业务服务器配置又有限,可以选择让多台服务器结合起来工作。第一次访问到A服务器上,第二次访问到B服务器上,这样就称为负载均衡。

  2. 换主题啦!linux这块好久没看过了,我。不过看了你的,还有印象

    1. 嘿嘿~linux还是有必要学习一下的~

  3. 好长,看得有点懵逼

  4. 好长的文章。

  5. 看了前面几段,太烧脑了,看不懂了。

    1. 嘿嘿,多刷几遍应该就差不多了~

  6. 我真服了你这博客框架,把我骁龙835卡死机了。

    1. emmm..... 不至于吧,顶多文章太长导致卡顿,其它锅我不背.....

  7. 看不懂看不懂~~~

    1. 哭辽.....肯定是重要的地方没有写通透

      1. 可乐 可乐

        写的很好,只是我看不懂,哈哈哈