本次介绍lvs-nat集群架构的高可用实现Wordpress博客站点,lvs-nat模型原理之前介绍过也就不做介绍。

    keepalived实现高可用的原理之前介绍过,是虚拟出一个网络接口供客户端/服务器访问,在nat模型中保存VIP和DIP地址是通过两块网卡实现的,接收报文与发送报文均经过调度器转发,调度器压力十分大,很有可能宕机,所以nat模型实现高可用也便很重要。因为VIP和DIP分别在两块网卡上,所以需要通过keepalived构建出两个实例来虚拟出两个网络接口保存VIP与DIP的地址。使用四台虚拟机搭建这个环境,两台VS实现调度器的高可用,后端两台RS提供WordPress服务。lvs-nat集群架构的高可用实现WordPress博客站点_第1张图片

        keepalived配置文件中全局配置段之前有介绍过就不做介绍,看一下两个实例的配置情况:

lvs-nat集群架构的高可用实现WordPress博客站点_第2张图片

lvs-nat集群架构的高可用实现WordPress博客站点_第3张图片

这里注意两台调度器虚拟端口的设定,同一主机配置两个端口的状态要同时为MASTER或者BACKUP,想一想如果分开设定,客户端请求资源,某一台工作中的调度器收到消息要转发报文,而此时另一台主机是DIP的拥有者,报文是不是就不能转发出去了呢?

    接下来是lvs集群架构的配置部分,先来看一下这部分中的相关配置信息(里面包含三种类型的检查后端RS服务器的工作状况信息):

LVS CONFIGURATION
      Virtual server group(s)
      Virtual server(s)

      Virtual server vip vport|fwmark {
        delay_loop //服务轮询的间隔时间;
        lb_algo rr|wrr|lc|wlc|lblc|sh|dh  //lvs服务的调度算法;
        lb_kind NAT|DR|TUN //lvs服务的类型;
        persistence_timeout //开启持久连接的超时时间;
        protocol TCP  //服务协议,仅支持TCP;
        sorry_server //设定当所有RS全部不可用时的友好的错误提示;
        real_server { //向lvs服务中添加RS;
          weight //设置后端RS的权重
          notify_up |
          notify_down |
            //当RS的状态转换为UP或这DOWN时,如何发送通知消息;一般写通知脚本;

    HTTP_GET|SSL_GET {
      url {
        path   //指定进行后端RS健康检测的URL地址;
        digest    //比较被检测资源的md5值是否发生变化;
        status_code //根据响应报文的状态码校验后方RS的可用性;
      }
      nb_get_retry //健康检测重试的次数;
      delay_before_retry //重试之前的延迟时长;
      connect_ip //向当前的RS的哪个IP地址发起健康状态检测请求;
      connect_port   //向当前的RS的那二个PORT发起健康状态检测请求;
      bindto //发出健康检测时的源IP地址;
      bind_port //发出健康检测时的源端口;
      connect_timeout //连接超时时长;
    }

    TCP_CHECK {
      connect_ip //向当前的RS的哪个IP地址发起健康状态检测请求;
      connect_port   //向当前的RS的那二个PORT发起健康状态检测请求;
      bindto //发出健康检测时的源IP地址;
      bind_port //发出健康检测时的源端口;
      connect_timeout //连接超时时长;
    }

   接下来看一下我配置的信息(比较简单):

lvs-nat集群架构的高可用实现WordPress博客站点_第4张图片

    之后要将这个keepalived.conf文件拷贝到另一台调度器中,并且修改state状态信息以及优先级,启动服务,查看ipvsadm规则并测试调度情况:

lvs-nat集群架构的高可用实现WordPress博客站点_第5张图片 lvs-nat集群架构的高可用实现WordPress博客站点_第6张图片

    之后在后端RS服务器上搭建WordPress服务即可,记得php,php-mysql,mysql-server/mariadb-server的装配;接下来就是测试WordPress服务的提供情况,为了避免浏览器的缓存影响查看结果,使用两个浏览器分别查看172.16.70.1/wordpress的站点情况。通过站点名称不同也可以看出两台RS服务器提供的WordPress均正常服务。

lvs-nat集群架构的高可用实现WordPress博客站点_第7张图片

lvs-nat集群架构的高可用实现WordPress博客站点_第8张图片

    好了,至此lvs-nat集群架构的高可用实现WordPress博客站点已经完成。但是!!!如果一个用户想要使用WordPress服务,第一次访问时RS1提供服务,巧的是第二次访问时,调度器正好给调度到另一台服务器去提供用户服务,这样这个用户之前都是在RS1上进行的操作,所有数据也都保存到了RS1的数据库中去,这个用户岂不是很蒙。所以,为了解决这样的情况可以使用SH算法进行调度,但是这样也还是不保险,如果大批量用户同时二次访问并且调度器全都给分配到了同一台服务器怎么办?这样就有了另一种解决办法,搭建mysql集群,一台主机保存所有mysql资源,其他mysql服务器使用nfs将拥有mysql资源服务器的资源目录挂载至自己的主机上,实现数据库资源的共享。