LAMP+NFS+Nginx+varnish+Haproxy+keepalived服务搭建

Posted 不负流年

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LAMP+NFS+Nginx+varnish+Haproxy+keepalived服务搭建相关的知识,希望对你有一定的参考价值。

  

    关键词        操作系统,linux,web

Linux内核最初只是由芬兰人李纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。这是一款开源免费的类unix操作系统,Linux本身是网络操作系统,支持所有的TCP/IP协议,支持多用户进程,功能大而稳定,导致linux系统作为服务器越来越成为企业心目中的首选,本文主要以linux系统为主,对企业的web服务架构做出规划与配置,保证web能稳定而又高效的提供服务,本文将涉及到的知识keepalived,haproxy,lamp,nginx,varnish,nfs等进行详细的讲解与配置。

 

 

前言

 

 

Linux系统有多个发行版:RedHat,Ubuntu,Debian,Fedora,CentOS等,其中RedHat是具有版权的,需要收费的,而红帽公司也会为其提供一些商业服务,一般是大型企业的首选,而CentOS作为RedHat的克隆体,具有稳定,高效,免费开源,长期更新等特点,CentOS 可以得到 RHEL 的所有功能,甚至是更好的软件。这对中小型企业来说,无疑是心目中的首选,但 CentOS 并不向用户提供商业支持,当然也不负上任何商业责任。但这也不影响他们对CentOS的喜爱,本文以CentOS系统来搭建企业级web架构,保证web服务能高效,稳定的运行

 

一、Linux系统的介绍

(一)linux系统由来

在Linux诞生之前,一直是unix的天下,只不过当时Unix并不是免费获取的,要想使用,必须购买先购买授权,这在当时是非常昂贵的,很少人能承担得起。

    在这种背景下,很多计算机爱好者非常渴望有一个便宜或者免费的操作系统供大家学习专研,1983年,计算机的牛人Richard Sallman发起了一个计划,目的就是构建一套完全自由的操作系统,这个计划就是GNU计划,所谓完全自由,就是要求加入GNU计划的所有软件都必须自由使用,自由更改,自由发布,也就是说,软件发布必须要发布它的源代码,这个源代码可以供别人自由使用,也可以自由更改,但必须要把更改后的代码发布,且有一套明文规定许可协议来制定大家如何自由,这套规定许可就是著名的GPL协议

    GNU计划发布后,有很多支持者,所以在这期间产生了许多非常棒的软件,但遗憾的是一直没有一个比较完美的操作系统出现,知道1991年,芬兰大学生林纳斯.本纳第克特.托瓦兹基于兴趣开发了一个类Unix操作系统,一经发布便得到广大爱好者的追捧,这个系统就是Linux。1994年,Linux加入GNU计划并采用GPL协议发布。

(二)linux系统特点

一.开放性

    系统遵循世界标准规范,特别是遵守开放系统互联(OSI)国际标准,

二.多用户

    Linux系统可以设立多个用户,每个用户拥有自己的资源且具有完全权限,与其它用户隔开,互不影响

三.多任务

    能同时执行多个任务,且每个任务之间是互相独立的,不受其他任务的影响。

四.源码公开免费

    Linux系统是开源的,是一套完全免费的操作系统,如果需要的话用户可以在网上下载源代码并进行修改。

五.兼容Uinx

    Linux下可以兼容Unix操作系统,这也是企业使用Linux的重要原因之一

六.良好的用户界面

    Linux系统给用户提供的图形界面和命令行界面,用户可以根据喜欢随时修改

    

 

  1. 公司web服务架构需求分析

 

(一)业务需求

某公司web站点用户量,访问量比较多,并且在不断的增加,急需一套能够举要高并发,高可用,安全,高效率的web服务架构

 

(二)需求设计

根据业务需求,设计了一套能够符合公司业务需要的方案:前端服务器用keepalive+lvs实现高可用负载均衡调度,在用户访问时web时服务器能能及时通过指定算法调度给四层负载给后端的haproxy,haproxy用来实现根据URL负载来处理前端keepalived送来的客户请求,后端服务运用常见的web服务架构lamp提供web服务,服务资源可以使用nfs服务提供,为了提高服务响应效率,减少后端主机的压力,可以使用varnish缓存服务器提供缓存服务等

 

(三)服务架构图

 

 

三、LAMP的实现

(一)LAMP的原理

LAMPLinux-Apache-mysql-php)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,PerlPHP或者Python编程语言,所有组成产品均是开源软件,是国际上成熟的架构框架,很多流行的商业应用都是采取这个架构,其工作原理是:浏览器向服务器发送http请求,服务器 (Apache) 接受请求,由于php作为Apache的组件模块也会一起启动,它们具有相同的生命周期。Apache会将一些静态资源保存,然后去调用php处理模块进行php脚本的处理。脚本处理完后,Apache将处理完的信息通过http response的方式发送给浏览器,浏览器解析,渲染等一系列操作后呈现整个网页。此httpphp之间的通信为传统的cgi模式,PHP也可以单独运行为一个守护进程,监听于套接字,开启几个空闲进程来通过fastcgi协议执行httpd送来的请求,而不像上述那样将php编译成http的一个模块来处理操作,此时为fastcgi模式。

图示:

(二)LAMP的安装

先关闭防火墙和selinux,防止请求被拦截

systemctl stop firewalld

setenforce 0

安装lamp所需要的软件:

yum install -y httpd php mariadb-server php-mysql

http:web服务器软件

php:编译成httpd模块,能实现httpd执行php脚本

mariadb-server:一种关系型数据库,mysql的一个分支

php-mysql:提供了php连接数据库的一个驱动

查看http的MPM模式以及对应需要开启的模块:

查看路径/etc/httpd/conf.modules.d/10-php.conf,如果httpd的MPM是prefork(默认),则加载libphp5.so模块,如果是event,worker,这加载libphp5-zts.so模块

编辑vi /var/www/html/index.php

    <?php

phpinfo();

?>

这是个php的测试页

启动服务:systemctl start httpd

出现测试页面即为成功

php只识别以php结尾的文件,所有换成别的后缀名,无法识别

 

接下来是部署数据库能与httpd通信:

启动服务:systemctl start mariadb.service

查看3306端口是否处于监听状态:ss -tnl |grep "3306"

直接键入mysql进入命令行接口

远程连接:mysql -uroot -h127.0.0.1 -p

授权能远程的连接用户:

mysql>GRANT ALL PRIVILEGES ON db_name.tbl_name TO username@host IDENTIFIED BY "PASSWD";

比如:GRANT ALL PRIVILEGES ON testdb.* TO testuser1@\'192.168.%.%\' IDENTIFIED BY "12341234";

testdb.*:指允许访问testdb这个数据库里的所有表,.*指所有表格

testuser1:允许此用户访问

192.168.%.%:允许此网段访问此数据库;%表示所有的主机,单独写\'%\'指任意主机

12341234:指用户密码

创建完后需要重读:FLUSH PRIVILEGES;

如果mysql反解IP地址,无法登录,则需要修改文件:

vim /etc/my.cnf:

键入symbolic-links=0下面:

skip_name_resolve = ON

如图配置数据库mysql:

然后编辑测试页:vi /var/www/html/index.php

<?php

$conn = mysql_connect(\'192.168.29.70\',\'testuser1\',\'12341234\');

if ($conn)

echo "OK";

else

echo "failure";

?>

此测试页的意思是如果连接到192.168.29.70的数据库,就显示OK,如果不能,则显示failure

显示成功

Lamp搭建成功

 

                        

 

四、NFS资源共享

(一)文件系统简介:

它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。而linux下的文件系统一般有ext2,ext3,ext4,sysfs,rootfs,nfs等

 

(二)NFS简介

NFS(Network File System,网络文件系统),是文件系统中的一种,由sun公司研发,内核级文件系统,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。它的主要功能是通过网络让不同的机器系统之间可以彼此共享文件和目录。NFS服务器可以允许NFS客户端将远端NFS服务器端的共享目录挂载到本地的NFS客户端中。在本地的NFS客户端的机器看来,NFS服务器端共享的目录就好像自己的磁盘分区和目录一样。

 

(三)NFS的配置

NFS文件系统无须安装,已经编译进内核,系统自带

先关闭防火墙Iptables和selinux

Systemctl stop firewalld

Setenforce 0

编辑vim /etc/exports

/exports 192.168.29.0/24(rw):

其中表示的意思分别是:指能共享挂载的目录/exports 允许访问的主机IP 权限RW

启动nfs服务

Systemctl start nfs.service

 

(四)LAMP服务器挂载NFS

 

NFS服务器:

官网下载个开源软件WordPress压缩包并使用放到/exports目录下,用来nfs服务器提供给LAMP服务器的动态资源,如图

修改wordpress的配置文件:

cd /exports/wordpress

cp wp-config-sample.php wp-config-sample.php.bak

mv wp-config-sample.php wp-config.php

编辑 wp-config.php

如图所示:

testdb:数据库名称

testuser1:访问mysql数据库的用户

12341234:访问mysql数据库的用户密码

192.168.29.70:mysql数据库的IP地址

 

http服务:

使用mount命令挂载NFS服务

    mount -t nfs 192.168.29.90:/exports /mnt

 

编辑配置文件/etc/httpd/conf/http.conf

重启http服务:systemctl restart httpd

访问WordPress网页:

访问成功,NFS提供WordPress资源成功

 

                            

五、Nginx服务

 

(一)Nginx介绍

Nginx (engine x) 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。

其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。

Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

 

(二)Nginx特性

nginx做为HTTP服务器,有以下几项基本特性和基本功能:

Nginx的特性:

模块化设计,较好的扩展性;

高可靠性

master/worker.相当于prefork的主进程/子进程,但是worker可以同时处理多个请求

支持热部署:

不停机更新配置文件,更换日志文件,更新服务器程序版本

低内存消耗:

10000个keep-alive连接模式下的非活动连接仅消耗2.5M内存

Nginx的基本功能:

静态资源的web服务器

http协议反向代理服务器

pop3/imap4协议反射代理服务器

FastCGI(lnmp),uWSGI等协议

模块化(非DSO),著名的由zip,ssl,....;

 

(三)Nginx的安装

nginx在epel源中,需要配置epel源再执行安装

配置完epel源后,执行命令:

yum repolist

yum clean all && yum makecache

接下来就是安装nginx:

yum install –y nginx

编辑nginx的配置文件:

vim /etc/nginx/nginx.conf

worker_processes 4:表示有几个CPU核数

worker_cpu_affinity 0001 0010 0100 1000:表示每个worker进程绑定指定的cpu的核数

listen:表示监听的端口

charset utf-8:中文字符集

root:指明默认的主页路径

 

保存退出后,关闭防火墙和selinux

 

接下来就是设计默认主页文档:

编辑/usr/share/nginx/html/index.html

    输入你想要的内容,我这里用的是朱自清的<<背影>>文章

 

访问nginx的IP地址:192.168.29.60:

成功

 

 

  1. Varnish缓存服务器

 

(一)缓存服务器简介

缓存指的是将需要频繁访问的网络内容存放在离用户较近、访问速度更快的系统中,以提高内容访问速度的一种技术。缓存服务器就是存放频繁访问内容的服务器。

缓存提供了比将访问对象放在Internet Web服务器上更好的方法,它将需要频繁访问的Web页面和对象保存在离用户更近的系统中,当再次访问这些对象的时候加快了速度。无论企业有多大,Web缓存都有助于优化性能和节省宽带。而且如果选择了正确的缓存解决方案,它可以随着企业网络的增长而扩大,而无需进行昂贵且耗时的重建。通过提高重复访问内容的命中率,可以有效地改善网站的访问速度和整体性能,以弥补带宽的不足。随着中国互联网网站和网民数量的剧增,互联网用户经常会遇到网站服务器因超负载链接而出现反应时间很慢的情况。对于网站运营商来说,增加昂贵的带宽并不是唯一的解决方法,有一种费用相对较为低廉,而效果又非常理想的服务方式正在广为人们所接受,那就是Web高速缓存技术。

Web高速缓存基于以下事实: 特定的WWW对象经常被多个网络用户再次请求时,缓存设备会监视Web请求,检索它们,当第一次传送对象时把它存储到缓存设备中, 在以后的请求中发送缓存设备中(而不是目标站点)的对象。

常用的缓存技术有memcache、redis、squid、varnish、web cache、 CDN等等

 

(二)varnish缓存简介

Varnish Configuration Language (VCL)是varnish配置缓存策略的工具,它是一种基于"域"(domain specific)的简单编程语言,它支持有限的算术运算和逻辑运算操作、允许使用正则表达式进行字符串匹配、允许用户使用set自定义变量、支持if判断语句,也有内置的函数和变量等。使用VCL编写的缓存策略通常保存至.vcl文件中,其需要编译成二进制的格式后才能由varnish调用。事实上,整个缓存策略就是由几个特定的子例程如vcl_recv、vcl_fetch等组成,它们分别在不同的位置(或时间)执行,如果没有事先为某个位置自定义子例程,varnish将会执行默认的定义。

 

(三)varnish缓存特性

1.可以基于内存缓存,也可以在磁盘上缓存,但是就算存放在磁盘上,也不能实现持久缓存

2.可以利用虚拟内存方式,IO性能会非常好

3.支持设置0-60秒 精确缓存时间

4.支持VCL

5.独特的日志存储及管理机制

6.支持使用varnish状态引擎

 

(四)varnish安装

varnish收入在epel源中,需要安装epel源才可以下载

安装完epel源后,使用下面命令安装varnish

Yum install –y varnish

 

Varnish的配置文件在/etc/varnish目录下

secret:varnishadm工具与命令行通行的密钥

default.vcl:用来定义vcl规则

varnish.params:用来配置守护进程varnish

 

Varnish有三种缓存机制:

1.file:自管理的文件系统,黑盒,无法持久保存

2.malloc:使用malloc()库调用在varnish启用时内在申请指定大小的空间;无法持久保存

3.persistent:与file功能相同,仍处于测试期,可以持久保存,可以在缓存器重启后缓存依然有效

 

编辑配置文件:varnish.params

VARNISH_LISTEN_PORT:表示监听的端口

VARNISH_ADMIN_LISTEN_PORT_6082:表示管理进程监听的地址

VARNISH_STORAGE="malloc,256M":使用malloc机制来存储缓存

 

编辑配置文件:default.vcl

表示后端主机的IP地址,这里有两台后端主机,分别是192.168.29.60和192.168.29.65,其都监听在80端口上

这里表示如果hit(命中)的次数大于0的话,就给响应报文添加首部X-Cache = HIT 192.168.29.50,如果小于0,则添加 X-Cache = MISS 192.168.29.50

这里表示如果客户端访问url含有/lx,则把请求发送的RS2这台服务器,否则则发送给default这台服务器

启动服务器:

    systemctl start varnish

查看监听端口80是否开启:

    ss –tnl |grep \':80\'

 

使用命令行工具varnishadm连接varnish管理程序:

varnishadm –S /etc/varnish/secret –t 127.0.0.1:6082

进入varnish管理界面后:

help:获取帮助

vcl.list:获取vcl配置列表

vcl.load:读取vcl列表

vcl.use:使用指定vcl配置文件

 

这里我们要把刚刚配置的vcl策略加载仅varnishadm中,使用以下命令:

vcl.load test100 default.vcl

vcl.use test100

vcl.list

如图:

然后就可以使用客户端访问varnish服务器了:

第一次访问/lx时,varnish缓存未命中,显示\'X-Cache:MISS 192.168.29.50\',varnish把请求调度给后端RS2这台服务器

第二次请求调度varnish命中,首都显示X-Cache:\'HIT 192.168.29.50\'

 

第一次请求url/zzq时,varnish未命中,首部显示为\'X-Cache:MISS 192.168.29.50\',varnish把请求调度给后端default这台服务器

第二次请求时,varnish命中,首部显示为X-Cache:\'HIT 192.168.29.50\'

varnish搭建成功

 

  1. Haproxy服务

 

(一)正反向代理服务简介

正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。

反向代理:是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

 

(二)haproxy反向代理简介

HAProxy提供高可用(对后端服务器的安全检查,本身并不提供高可用),负载均衡以及基于TCP和HTTP应用的代理,支持虚拟主机,它是免费,快速并且可靠的一种解决方案。HAProxy特别适用于哪些负载特大的web站点,这些站点通常又需要会话保持或七层处理。HAProxy运行在时下的硬件上,完全可以支持数以万计的并发连接。并且它的运行模式使得它可以完全很简单安全的整合进您当前的架构,同时保护你的web服务器不被暴露到网络中

HAProxy实现了一种事件驱动,单一进程模型,即全程序就一个进程同时处理多个请求,此模型支持非常大的并发连接数。多进程或多线程模型受内存限制,系统调度器限制以及不出不在的锁限制,很少能处理数千并发连接。事件驱动模型因为在有更好的资源和时间管理的用户端实现所有任务,所以没有这些弊端,此模型的弊端是:在多核系统上,这些程序通常扩展性较差,这就是为什么他们必须进行优化以及使每个CPU时间片做更多的工作;

 

(三)haproxy特性

1.支持原声SSL,同时支持客户端和服务器的SSL.

2.支持IPv6和UNIX套字节(sockets)

3.支持HTTP Keep-Alive

4.支持HTTP/1.1压缩,节省宽带

5.支持优化健康检测机制(SSL、scripted TCP、check agent...)6.支持7层负载均衡。

7.可靠性和稳定性非常好。

8.并发连接40000-50000个,单位时间处理最大请求20000个,最大数据处理10Gbps.

9.支持8种负载均衡算法,同时支持session保持。

10.支持虚拟主机。

11.支持连接拒绝、全透明代理。

12.拥有服务器状态监控页面。

13.支持ACL.

 

(四)haproxy安装

centos 6.4后就收入base源中,可以直接使用yum命令安装

    yum install –y haproxy

配置文件:/etc/haproxy/haproxy.cfg

环境配置:/etc/sysconfig/haproxy

配置文件的框架:

配置框架:

global:

进程及安全配置相关的参数

性能调整相关参数

Debug参数

Proxies:

defaults:默认的配置参数

listen:当前端的请求都调度到同一个服务器时使用

frontend:与backend搭配使用,用于监听前端请求的配置

backend:与fronted搭配使用,用户调度后端服务器的配置

 

为了能根据需求调度到后端的动态服务器或缓存服务器,需要编辑配置文件/etc/haproxy/haproxy.cfg

这配置是能显示haproxy内置的web管理界面,其中指令:stats auth admin:12341234指登录时需要用户认证,admin为用户名,12341234为密码,如图所示:

haproxy服务的IP地址是192.168.29.30

输入用户和密码后显示界面如下图所示:

 

接下来就是配置haproxy服务能反代后端的varnish缓存服务器和lamp服务器了

 

如上图所示,这一条是配置当有符合条件的请求时调度给192.168.29.70这个后端服务器

 

如上图所示:这一条是配置当有符合条件的请求是调度给192.168.29.50这个后端服务器

 

如上图所示,这一条是配置监听在haproxy服务器上的80端口上,如果有以.php请求时则调度给phpsrvs,其他默认调度给htmlsrvs

 

配置完成

启动服务:systemctl start haproxy

关闭防火墙:systemctl stop firewalld

关闭selinux:setenfore 0

 

访问192.168.29.30/zzq,看是否能调度给varnish服务,且资源是缓存与varnish中,结果如下图:

如上图所示,访问资源成功,且第一次访问时,varnish服务器没有缓存资源,首部显示X-Cache:MISS 192.68.29.50,需要到后端主机获取资源,并缓存下来再响应给用户

 

当我们访问第二次时,结果如下图所示

如上图所示,访问同个url第二次说,缓存被命中,首部显示X-Cache:HIT 192.168.29.50,说明了缓存被命中,且是由缓存服务器响应给用户的,成功

 

访问url为/lx的资源也如此:

访问没命中

 

如上图所示:第二次访问同个url时命中了

 

 

访问以.php资源时,结果如下图所示:

如上图所示:当访问.php资源时,haproxy根据请求调度给后端lamp的服务器

 

综上展示,haproxy+varnish+lamp+nginx+nfs搭建成功

 

接下来就是提供另一台相同配置的haproxy服务器,以提供负载均衡服务

第二台haproxy服务器的地址是192.168.29.40

在192.168.29.30这台服务器上使用scp把配置文件发送给第二台haproxy服务器:

scp /etc/haproxy/haproxy.cfg root@192.168.29.40:/etc/haproxy/haproxy.cfg

在第二台服务器上启动服务:

systemctl start haproxy

systemctl stop firewall

setenfore 0

访问第二台haproxy服务,如下图所示:

第二台haproxy搭建成功

 

  1. keepalived

 

(一)高可用HA简介

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。

假设系统一直能够提供服务,我们说系统的可用性是100%。

如果系统每运行100个时间单位,会有1个时间单位无法提供服务,我们说系统的可用性是99%。

很多公司的高可用目标是4个9,也就是99.99%,这就意味着,系统的年停机时间为8.76个小时。

百度的搜索首页,是业内公认高可用保障非常出色的系统,甚至人们会通过www.baidu.com 能不能访问来判断"网络的连通性",百度高可用的服务让人留下啦"网络通畅,百度就能访问","百度打不开,应该是网络连不上"的印象,这其实是对百度HA最高的褒奖。

 

(二)keepalived简介

Keepalived是Linux下一个轻量级别的高可用解决方案。Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

后来Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied 一方面具有服务器状态检测和故障隔离功能,另外一方面也有HA cluster功能

 

(三)keepalived安装

keepalived服务器的IP地址:

master:

    VIP:192.168.29.100

    RS:192.168.29.10

Backup:

    VIP:192.168.29.100

    RS:192.168.29.20

 

centos 6.4+后,keepalived由base源提供,所有直接用yum命中安装就行

    yum install –y keepalived

 

主配置文件:/etc/keepalived/keepalived.conf

Unit file:/usr/lib/systemd/system/keepalived.service

配置文件:/etc/sysconfig/keepalived

 

在master服务器上编辑配置文件/etc/keepalived/keepalived.conf

如下图所示

其中:

lb_algo rr:表示使用轮询算法

lb_kind DR: 表示使用lvs中的DR模式

delay_loop 1: 定义服务轮询时间间隔

 

配置完成后把配置文件发送给另一台keepalived服务器:

然后在另一台keepalived服务器的配置文件中修改几项就可,如下图所示:

其他不用变化

两台服务器都启动服务:

systemctl start keepalived

systemctl stop firewalld

setenfore 0

此时master服务器的ip地址上会多出一个ip地址是:192.168.29.100,这是个虚拟的IP地址(VIP),backup服务器没有这个VIP地址,当用户访问这个VIP时,keepalived会调度根据请求调度给后端服务器,如图所示:

当这台服务器故障时,服务不可用,此时VIP会游离到backup服务器上,如下图所示:

 

此时客户端访问VIP:192.168.29.100/zzq,如下图所示:

访问VIP:192.168.29.100/lx,如下图所示:

访问VIP:192.168.29.100/wp-admin/install.php,如下图所示:

如果此时把master服务关闭,此时VIP是游离到backup服务上,此时用户可以照常访问。

 

 

至此:web服务架构:keepalived+lvs+haproxy+varnish+lamp+nginx+nfs服务搭建成功

以上是关于LAMP+NFS+Nginx+varnish+Haproxy+keepalived服务搭建的主要内容,如果未能解决你的问题,请参考以下文章

LAMP+NFS+Nginx+varnish+Haproxy+keepalived服务搭建

Nginx +keepalived+varnish+lamp实现高可用负载均衡集群

nginx反代+varnish缓存+后端LAMP平台集群实现

linux Nginx +keepalived+varnish+lamp实现高可用负载均衡集群

Nginx+NFS+LAMP主从架构

Heartbeat-Gui V2 实现HA LAMP 搭建wordpress博客