什么是共享存储?
共享存储是指两个或多个处理机共用一个主存储器的并行体系结构。每一个处理机都可以把信息存入主存储器,或从中取出信息。处理机之间的通信通过访问共享存储器来实现。
简单点:多台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域资源记录
3)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 //修改第一块网卡相关信息
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth1
//==========复制第一块网卡配置信息并建立第二块网卡ifcfg-eth1信息
# vim /etc/sysconfig/network-scripts/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主机名,网卡相关信息,关闭防火墙,禁用Selinux均已配置成功,且能够互相通信。YUM源没有进行测试,你可以通过下面的命令进行测试一下。如果没有配置后面安装相关服务软件包的时候你会很头疼!
# yum repolist
由于我在Linux——DHCP服务中将初始化都进行过讲解,所以本地文档不进行过多演示。只演示了几个相对重要的部分。Node3只有一块网卡,只需要配置ifcfg-eth0就好了,不需要去复制一个ifcfg-eth1文件。最最最重要的是VMware自带的DHCP功能你得关闭掉,如何关闭,我在DHCP服务中的开头也进行讲解了。
Node1配置DHCP服务
# rpm -qa | grep dhcp //查看是否安装
# yum -y install 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小时。
# service dhcpd start //启动DHCP服务
最好的检测就是去WinXP物理机(客户机)上测试一下,就知道DHCP是否配置成功!
# ipconfig /all //物理机(客户机)上
检测说明,DHCP服务器配置成功!
最后的最后,不要忘记将Node1上的DHCP服务设置为开机自启!
# chkconfig dhcpd on //将DHCP设置为开机自启
# chkconfig --list dhcpd //重点关注3和5是否为关闭
Node2配置DNS服务
# rpm -qa | grep bind //查看是否安装
# yum -y install bind //没有安装就安装一下
修改主配置文件
# vim /etc/named.conf //修改主配置文件
# grep -v "//" /etc/named.conf | grep -v ^$ //查看主配置文件生效行
由于我已经配置成功,就直接进行查看贴图了。过滤双斜杠以及空格开头的行(显示所有生效行)
# vim /etc/named.rfc1912.zones //修改子配置文件
# tail -8 /etc/named.rfc1912.zones //查看子配置文件后8行
由于子配置文件我已经修改好了,且只需要在子配置文件后面进行添加内容,所以我只显示子配置文件的后8行(我添加的内容)进行展示
# 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
测试表明,www.czh.com dns1.czh.com 解析配置成功!
测试表明,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服务的,当然也不排除没有安装的情况!
# 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服务文件共享做准备
# vim /etc/exports //修改NFS配置文件
# cat /etc/exports //查看NFS配置文件
NFS配置文件为空白的,得自己写入。所以文件名一定不要打错!我这边配置好了就直接贴图!
# service rpcbind restart //重启rpcbind软件
# service nfs restart //重启nfs软件
最好的检测就是去Node1或者Node2检测一下NFS是否成功
# showmount -e 192.168.42.3
经测试,可以看到共享的两个目录文件!
老规矩,不要忘记了设置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目录下的目录及文件详细信息
# vim /etc/fstab //编辑挂载配置文件
编辑好挂载配置文件后执行下面的命令
# mount -a //将/etc/fstab的所有内容重新加载
# df -hT //查看挂载内容
# ll -d /var/www/html/* //查看/var/www/html目录下的目录及文件的详细信息
当挂载成功后,去查看/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 //如果没有安装就安装一下
# vim /etc/httpd/conf/httpd.conf
注意点,在WEB服务配置文件最底部添加你需要解析的网站,当需要实现多域名多网站访问的时候记得将NameVirtualHost *:80前面的注释给去掉!
# service httpd start //启动WEB服务
到此WEB服务的配置就完成了,同时请重复以上步骤在Node2上也配置一遍!
配置是否成功,去WindowsXP上检验一下就知道了!
经过检验,网站访问成功!当你访问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服务器的配置上。
3.看看NFS服务器NFS服务配置文件==>/etc/exports
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网段,有网络基础知识的同学应该就能明白,不同网段默认情况下是无法进行文件传输的,这样就有了路由器,然后这个不在本次实验的范围中。
# service rpcbind restart
# service nfs restart
重启一下NFS服务相应软件,然后去WEB服务器上检验一下,会发现挂载成功!
WEB服务死活启动不了
Starting httpd: Warning: DocumentRoot does not exist
碰到过几次,身边同学也碰到过几次,后来百度了一下,发现是Selinux的问题,一定要记得关闭掉!!!
df与df -hT区别?
human-readable :人类可读的,人性化的
type:类型
对比一下!多出了类型这一栏,可以清晰的看出挂载文件的类型,同时人性化的将默认K为单位的大小变为了G为单位的大小!
总结一下
Node1,Node2的WEB服务,Node1的DHCP,Node2的DNS,Node3的NFS这些服务在测试成功后都记得去设置开机自启,不然机器重启后服务不会自动运行,用户自然也就无法正常的访问网站了!最后的最后感谢浩哥的指导。本文由程志辉原创独自编辑,难免会出现一些错误,欢迎大家在评论区指出,同时转载请留下版权!
感觉知识已经都还给了学校。。。
我也是,感觉都忘了,记笔记很重要啊
刚好看到负载均衡不知道什么意思。虽然现在还算不知道..
哈哈,我也忘得差不多了。简单点:用户通过URL进行访问网站,但是公司业务服务器配置又有限,可以选择让多台服务器结合起来工作。第一次访问到A服务器上,第二次访问到B服务器上,这样就称为负载均衡。
换主题啦!linux这块好久没看过了,我。不过看了你的,还有印象
嘿嘿~linux还是有必要学习一下的~
好长,看得有点懵逼
好长的文章。
看了前面几段,太烧脑了,看不懂了。
嘿嘿,多刷几遍应该就差不多了~
我真服了你这博客框架,把我骁龙835卡死机了。
emmm..... 不至于吧,顶多文章太长导致卡顿,其它锅我不背.....
看不懂看不懂~~~
哭辽.....肯定是重要的地方没有写通透
写的很好,只是我看不懂,哈哈哈