joeの小窝

Loading...

keepalived+nginx高可用

实验环境

一个客户端,一个主nginx,一个备用的nginx,2个后端服务器

主备的keepalived

实验目的

当有大量的流量的请求时nginx,会负载均衡将这个请求分发到后端服务器上

当nginx服务器出现了故障,备用服务器会出来接收请求,保证了服务的高可用

keepalived+nginx(主备模式)

  • 一个master,一个backup

  • 使用的nat模式,后端服务器需要指定网关是lvs节点上的,我对这个内网网关也做一个vip漂移

  • 当然也可以使用DR模式

img

[root@server keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id lvs1
}

vrrp_instance VI_1 {
    state MASTER
    interface ens160
    virtual_router_id 77
    priority 255
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.50.77/24
    }
}

vrrp_instance rs_gw {
    state MASTER
    interface ens224
    virtual_router_id 78
    priority 255
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.77/24
    }
}


virtual_server 192.168.50.77 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
  #  persistence_timeout 1
    protocol TCP

    real_server 192.168.100.12 81 {
        weight 1
        HTTP_GET {
            url {
              path /
	      status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.100.12 82 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

}

backup节点

[root@node1 keepalived]# cat keepalived.conf
! Configuration File for keepalived

global_defs {
   router_id lvs2
}

vrrp_instance VI_1 {
    state BACKUP 
    interface ens160
    virtual_router_id 77
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
	192.168.50.77/24
    }
}

vrrp_instance rs_gw {
    state  BACKUP
    interface ens224
    virtual_router_id 78
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.100.77/24
    }
}

virtual_server 192.168.50.77 80 {
    delay_loop 6
    lb_algo rr
    lb_kind NAT
   #  persistence_timeout 1
    protocol TCP

    real_server 192.168.100.12 81 {
        weight 1
        HTTP_GET {
            url {
              path /
	      status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

    real_server 192.168.100.12 82 {
        weight 1
        HTTP_GET {
            url {
              path /
              status_code 200
            }
            connect_timeout 3
            retry 3
            delay_before_retry 3
        }
    }

}

ipvsadm 查看信息

[root@server keepalived]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.50.77:80 rr
  -> 192.168.100.12:81            Masq    1      0          0         
  -> 192.168.100.12:82            Masq    1      0          0      

keepalived+nginx (主主模式)

img

  • 这样的话,2个节点都在运行,没有节点空闲

  • 但是了这个nginx负载均衡器挂掉的话,业务就没有了,对这个nginx做一个高可用

  • 或者是不要这个nginx负载均衡器,直接指定一个域名,A记录里面指向2个vip地址即可

高可用

对谁都可以实现高可用

比如一个nginx网页地址,对这个地址进行高可用,就是访问这个地址就能实现业务的访问,但是如果有一个机器故障的话,可以实现自动的切换

如果想要实现高可用的话,可以对谁都实现

keepalived+lvs 这个lvs自带检测后端服务器的健康检查的机制,如果后端服务器出现了故障的话,自动的移除掉ipvsadm -ln 列表中

因此的话,这个高可用的话,非常的方便,实现了业务的冗余性,就是保证了业务持续工作的一个状态

posted @ 2026-03-15 20:41  乔的港口  阅读(29)  评论(0)    收藏  举报