keepalived+lvs+nginx搭建高可用集群

5 篇文章 0 订阅
1 篇文章 0 订阅
IP规划
  • lvs-master(DIP) : 192.168.10.177
  • lvs-backup(DIP) : 192.168.10.178
  • nginx-1 (RIP): 192.168.10.133
  • nginx-2(RIP) : 192.168.10.138
  • tomcat-1 : 192.168.10.134
  • tomcat-2 : 192.168.10.135
  • tomcat-3 : 192.168.10.136
  • VIP : 192.168.10.150
目标
  • 通过keepalived,VIP绑定在LVS的两个节点上
  • 用户请求VIP,即请求LVS节点的服务器(也是DIP节点的服务器),此时通过DIP转发请求到RIP的节点
  • LVS节点只负责接收和转发请求,RIP处理请求之后,直接将报文返回
基础预设
  • 已有3台tomcat节点,已分别部署应用“clusterTest”,http://192.168.10.134:8088/clusterTest/choc/hello,发送get请求,可以返回“hello choc”
    在这里插入图片描述
  • 已有2台nginx节点,已经分别配置好3台tomcat节点的集群,http://192.168.10.133:8088/clusterTest/choc/hello,发送get请求,可以返回“hello choc”
    在这里插入图片描述
    在这里插入图片描述
  • 访问端口均为8088
  • 本次集群采用LVS三种模式(NAT|DR|TUN)的DR
  • lvs的负载均衡策略选定为轮询
具体配置
  1. 配置lvs-master 192.168.10.177

    1. 安装keepalived,安装之后注册下系统服务,并修改下keepalived.conf,vim /etc/keepalived/keepalived.conf,如下
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述

      ! Configuration File for keepalived
      
      global_defs {
         #路由ID:当前安装keepalived节点的主机标志符,要保证全局唯一,即主备节点不能相同
         router_id keep_177
      }
      
      vrrp_instance VI_1 {
          #主节点:MASTER;备节点:BACKUP;固定的两种类型
          state MASTER
          #此服务器网卡名,要通过ip addr进行确认,
          interface ens33
          #虚拟路由ID,主备节点的此标志符要相同,keepalived就是根据当前服务器IP,虚拟一个同网段的IP,
          virtual_router_id 77
          #优先级,值越大,虚拟IP就先绑定到哪个服务器上;所以,主节点的优先级要大于备节点
          priority 100 
          #心跳检测时间间隔,每隔1秒,检测virtual_router_id相同的主备节点服务器,是否有挂掉的,有的话,则虚拟IP根据优先级进行转移
          advert_int 1
          #认证的权限密码,防止非法节点接入
          authentication {
              auth_type PASS
              auth_pass 1111
          }   
          #虚拟IP,可定义多个
          virtual_ipaddress {
              192.168.10.150
          }   
      }
      #配置集群访问的IP+端口,此处的端口需要和nginx访问的端口一致
      virtual_server 192.168.10.150 8088{
          #健康检测,间隔时间
          delay_loop 6
          #LVS负载均衡算法类型,默认轮询
          lb_algo rr
          #LVS模式,NAT|DR|TUN
          lb_kind DR
          #会话持久时间
          persistence_timeout 5
          #协议
          protocol TCP 
          #负载均衡的真实服务器,nginx的真实IP地址
          real_server 192.168.10.133 8088{
              #权重,轮询的权重默认为1,和其他节点相同
              weight 1
              #TCP健康检查
              TCP_CHECK{
                  #连接端口
                  connect_port 8088
                  #连接超时时间
                  connect_timeout 2
                  #重试次数
                  nb_get_retry 2
                  #重试间隔时间
                  delay_before_retry 3
              }
          }
           #负载均衡的真实服务器,nginx的真实IP地址
          real_server 192.168.10.138 8088{
              #权重,轮询的权重默认为1,和其他节点相同
              weight 1
              #TCP健康检查
              TCP_CHECK{
                  #连接端口
                  connect_port 8088
                  #连接超时时间
                  connect_timeout 2
                  #重试次数
                  nb_get_retry 2
                  #重试间隔时间
                  delay_before_retry 3
              }
          }
      
  2. 配置lvs-backup 192.168.10.178

    1. 安装keepalived,安装之后注册下系统服务,并修改下keepalived.conf,vim /etc/keepalived/keepalived.conf,如下
      在这里插入图片描述
      在这里插入图片描述
      ! Configuration File for keepalived
      global_defs {
         #路由ID:当前安装keepalived节点的主机标志符,要保证全局唯一,即主备节点不能相同
         router_id keep_178
      }
      
      vrrp_instance VI_1 {
          #主节点:MASTER;备节点:BACKUP;固定的两种类型
          state BACKUP
          #此服务器网卡名,要通过ip addr进行确认,
          interface ens33
          #虚拟路由ID,主备节点的此标志符要相同,keepalived就是根据当前服务器IP,虚拟一个同网段的IP,
          virtual_router_id 77
          #优先级,值越大,虚拟IP就先绑定到哪个服务器上;所以,主节点的优先级要大于备节点
          priority 80
          #心跳检测时间间隔,每隔1秒,检测virtual_router_id相同的主备节点服务器,是否有挂掉的,有的话,则虚拟IP根据优先级进行转移
          advert_int 1
          #认证的权限密码,防止非法节点接入
          authentication {
              auth_type PASS
              auth_pass 1111
          }    
          #虚拟IP,可定义多个
          virtual_ipaddress {
              192.168.10.150
          }    
      } 
      #配置集群访问的IP+端口,此处的端口需要和nginx访问的端口一致
      virtual_server 192.168.10.150 8088{
          #健康检测,间隔时间  
          delay_loop 6
          #LVS负载均衡算法类型,默认轮询
          lb_algo rr
          #LVS模式,NAT|DR|TUN
          lb_kind DR
          #会话持久时间  
          persistence_timeout 5
          #协议
          protocol TCP 
          #负载均衡的真实服务器,nginx的真实IP地址
          real_server 192.168.10.133 8088{
              #权重,轮询的权重默认为1,和其他节点相同
              weight 1
              #TCP健康检查
              TCP_CHECK{
                  #连接端口
                  connect_port 8088
                  #连接超时时间
                  connect_timeout 2
                  #重试次数
                  nb_get_retry 2
                  #重试间隔时间
                  delay_before_retry 3
              }
          }
          #负载均衡的真实服务器,nginx的真实IP地址
          real_server 192.168.10.138 8088{
              #权重,轮询的权重默认为1,和其他节点相同
              weight 1
              #TCP健康检查
              TCP_CHECK{
                  #连接端口
                  connect_port 8088
                  #连接超时时间
                  connect_timeout 2
                  #重试次数
                  nb_get_retry 2
                  #重试间隔时间
                  delay_before_retry 3
              }
          }
      }
      
  3. 配置nginx-1 192.168.10.133

    1. cd /etc/sysconfig/network-scripts/

    2. cp ifcfg-lo ifcfg-lo:1

    3. 修改ifcfg-lo:1,如下,保存保存退出
      在这里插入图片描述

      DEVICE=lo:1
      IPADDR=192.168.10.150
      NETMASK=255.255.255.255
      NETWORK=127.0.0.0
      BROADCAST=127.255.255.255
      ONBOOT=yes
      NAME=loopback
      
    4. 重启网络服务,service network restart,查看IP信息,ip addr
      在这里插入图片描述

  4. 配置nginx-2 192.168.10.133

    1. cd /etc/sysconfig/network-scripts/

    2. cp ifcfg-lo ifcfg-lo:1

    3. 修改ifcfg-lo:1,如下,保存保存退出
      在这里插入图片描述

      DEVICE=lo:1
      IPADDR=192.168.10.150
      NETMASK=255.255.255.255
      NETWORK=127.0.0.0
      BROADCAST=127.255.255.255
      ONBOOT=yes
      NAME=loopback
      
    4. 重启网络服务,service network restart,查看IP信息,ip addr
      在这里插入图片描述

  5. lvs-master 安装ipvs管理工具,yum install -y ipvsadm,安装后查看ipvs集群信息,ipvsadm -Ln,目前暂无集群信息
    在这里插入图片描述

  6. nginx-1和nginx-2两个节点安装配置ARP

    1. ARP响应级别与通告行为 的概念
      1. arp-ignore:ARP响应级别(处理请求)
        • 只要本机配置了ip,就能响应请求
        • 请求的目标地址到达对应的网络接口,才会响应请求
      2. arp-announce:ARP通告行为(返回响应)
        • 本机上任何网络接口都向外通告,所有的网卡都能接受到通告
        • 尽可能避免本网卡与不匹配的目标进行通告
        • 只在本网卡通告
    2. 配置ARP,vim /etc/sysctl.conf,配置所有网卡、默认网卡以及虚拟网卡的arp响应级别和通告行为,分别对应:all,default,lo:
      在这里插入图片描述
      # configration for lvs
      net.ipv4.conf.all.arp_ignore = 1
      net.ipv4.conf.default.arp_ignore = 1
      net.ipv4.conf.lo.arp_ignore = 1
      
      net.ipv4.conf.all.arp_announce = 2
      net.ipv4.conf.default.arp_announce = 2
      net.ipv4.conf.lo.arp_announce = 2
      
    3. 刷新配置,sysctl -p
    4. 增加一个网关,route add -host 192.168.10.150 dev lo:1,用于接收数据报文,当有请求到本机后,会交给lo去处理增加后,如下:
      在这里插入图片描述
      在这里插入图片描述
    5. 防止重启失效,echo "route add -host 192.168.10.150 dev lo:1" >> /etc/rc.local,查看,vim /etc/rc.local
      在这里插入图片描述
      在这里插入图片描述
  7. lvs-master,使用ipvsadm配置集群规则

    1. 创建LVS节点,用户访问的集群调度者,ipvsadm -A -t 192.168.10.150:8088 -s rr -p 5
      1. -A:添加集群
      2. -t:tcp协议
      3. ip地址:设定集群的访问ip,也就是LVS的虚拟ip
      4. -s:设置负载均衡的算法,rr表示轮询
      5. -p:设置连接持久化的时间
    2. 集群添加nginx两个节点,注意这里是端口对端口的,ipvsadm -a -t 192.168.10.150:8088 -r 192.168.10.133:8088 -gipvsadm -a -t 192.168.10.150:8088 -r 192.168.10.138:8088 -g
      • -a:添加真实服务器
      • -t:tcp协议
      • -r:真实服务器的ip地址
      • -g:设定DR模式
    3. 保存到规则库,否则重启失效,ipvsadm -S
    4. 检查集群,ipvsadm -Ln,查看集群状态,ipvsadm -Ln --stats,如下则表示集群添加成功
      在这里插入图片描述在这里插入图片描述
  8. 启动lvs-master和lvs-backup的keepalived服务,service keepalived restart

    在这里插入图片描述
    在这里插入图片描述

  9. 测试请求VIP(192.168.10.150),请求成功,如下,查看集群状态,ipvsadm -Ln --stats,可以看到lvs集群已经开始work了,nginx-2节点处理的,过5分钟再访问一次,可以看到是nginx-1节点处理的,因为lvs负载均衡策略是轮询,请求持久化时间是5分钟
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  10. 关闭lvs-master的keepalived服务,service keepalived stop,查看lvs-backup的ip,测试请求VIP(192.168.10.150),如下,则OK,表示keepalived+lvs+nginx的高可用集群配置完成
    在这里插入图片描述
    在这里插入图片描述

后记
  1. 本文的目的在于记录如何快速搭建一个keepalived+lvs+nginx+tomcat的高可用集群
  2. 欢迎交流,1406843473@qq.com
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值