keepalived+nginx高可用web架构实践

阅读更多

上一篇文章  《 keepalived+nginx打造高可用web应用的架构方案》 写了web server高可用架构的方案思路。

但是,

陆游教育我们纸上得来终觉浅,绝知此事要躬行。不操作一遍就是不会。

 

所以,这一篇是我对DNS+(keepalived & nginx反向代理)+web server三层架构的实践操作记录。

 

首先,我需要4台机器。两台做keepalived-nginx代理,两台做web server。哪儿来四台机器呢?靠vagrant 。 个人电脑上安装vagrant、virtualbox。vagrant是跨平台虚拟机管理工具,通过下载虚拟机镜像box文件和Vagranfile可以配置以启动N台虚拟机,非常方便。我这里用centos7.box启动四台虚拟机分别是keepalived1、keepalived2、web1、web2 。配置文件如下: 

keepalived+nginx高可用web架构实践_第1张图片

 

第二,安装keepalived & nginx。 

登录keepalived1,先安装各种依赖

yum -y install gcc gcc-c++ autoconf automake make

 

yum -y install zlib zlib-devel openssl openssl-devel pcre pcre-devel

yum -y install ipvsadm

 

最后安装keepalived和nginx

   yum -y install keepalived

  下载nginx包,解压安装即可。

 

下面是master机器keepalived.conf配置。

keepalived+nginx高可用web架构实践_第2张图片

设置vip 192.168.200.18 

 

机器192.168.2.11和192.168.2.12上配置keepalived.conf有区别,backup机器需要修改如下:

 

 

vrrp_instanceVI_1 {
    state BACKUP //初始化状态
    interface eth0
    virtual_router_id 51
    priority 99      //优先级,一定要比master的优先级要低
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        172.16.2.8
    }
}
 

 

 

然后是nginx负载均衡配置,负载量不大的时候这其实是master-backup配置,nginx自带服务检测。

 keepalived+nginx高可用web架构实践_第3张图片

 

机器192.168.2.11和192.168.2.12上nginx配置完全一致。

 

 第三,启动测试web server

web server测试机的准备我打算用docker,下载安装启动docker,因为国内下载镜像实在太慢了,所以配置docker镜像加速。创建 /etc/docker/daemon.json 文件配置如下:

 

{

"registry-mirrors": [

"https://kfwkfulq.mirror.aliyuncs.com",

"https://2lqq34jg.mirror.aliyuncs.com",

"https://pee6w651.mirror.aliyuncs.com",

"https://registry.docker-cn.com",

"http://hub-mirror.c.163.com"

],

"dns": ["8.8.8.8","8.8.4.4"]

}
 

 

这样就快多了,分别下载php-fpm和apache镜像:

 

dmiseev/php-fpm7.1        latest              a496a8708389        12 months ago       675MB

httpd                     2.4-alpine          141bb8d01fbd        3 weeks ago         127MB

 

然后就是启动docker,并且关联两个容器。

启动php-fpm 命令是: 

docker run -d --rm --name fpm -v "/data1/apache2/www:/php" a496a8708389  

-v参数是把镜像中php命令关联到宿主机项目路径下。

 

启动apache命令是:

 

docker run -d -p 80:80  --link fpm:php --rm --name httpd-service -v "/data1/apache2/www:/usr/local/apache2/htdocs/" 141bb8d01fbd

 

对外暴露80端口

-v命令关联项目和容器项目路径

 

配置apache。 需要让apache进行fcgi代理关联,本来可以在宿主机写好httpd.conf 通过-v命令管理,但是不知道为什么我加上 -v "/data1/apache2/conf/:/usr/local/apache2/conf/"  参数dockers启动一直失败。只好先启动docker,然后进入容器修改httpd.conf,然后重启apache。

 

首先测试web server。分别访问http://192.168.2.13/index.php  http://192.168.2.14/index.php 看到如下结果,表示web server启动成功。

keepalived+nginx高可用web架构实践_第4张图片

 keepalived+nginx高可用web架构实践_第5张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

最后,启动nginx机器上keepalived,用ip 命令查看虚拟ip已经添加到eth0:,如下图:

 

 keepalived+nginx高可用web架构实践_第6张图片

 

 配置虚拟域名,进行访问测试,配置为 192.168.200.18 web.me  浏览器访问呢 web.me,结果如下:

keepalived+nginx高可用web架构实践_第7张图片keepalived+nginx高可用web架构实践_第8张图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

多次刷新发现13 、14两个web server依次被访问,这是nginx的反向代理没有设置负载均衡访问配置,默认轮询。  

 

登陆到192.168.2.11 或者 192.168.2.12 机器上kill掉nginx, 刷新浏览器发现web server依然可以访问,keepalived起到检测自动故障转移的功能。

 

这就保证了DNS+(keepalived & nginx反向代理)+web server三层架构的高可用性。

 

  • keepalived+nginx高可用web架构实践_第9张图片
  • 大小: 41.3 KB
  • keepalived+nginx高可用web架构实践_第10张图片
  • 大小: 27.8 KB
  • keepalived+nginx高可用web架构实践_第11张图片
  • 大小: 38.7 KB
  • keepalived+nginx高可用web架构实践_第12张图片
  • 大小: 10.6 KB
  • keepalived+nginx高可用web架构实践_第13张图片
  • 大小: 10 KB
  • keepalived+nginx高可用web架构实践_第14张图片
  • 大小: 53.6 KB
  • keepalived+nginx高可用web架构实践_第15张图片
  • 大小: 9 KB
  • keepalived+nginx高可用web架构实践_第16张图片
  • 大小: 8.9 KB
  • 查看图片附件

你可能感兴趣的:(虚拟机)