keepalived高可用和互为主从(lvs+keepalived)

实验环境:同网段可ping通,可ping百度,--为注释,以下行无注释的照抄
MASTER_LVS:192.168.11.10
BACKUP_LVS:192.168.11.20
REALSERVER:192.168.11.21
REALSERVER:192.168.11.22

MASTER_LVS操作:yum -y install ipvsadm,yum -y install keepalived,下载完用rpm -ql keepalived查看其配置文件的位置,
打开vim /etc/keepalived/keepalived.conf删掉里面的全部默认的配置,输入如下命令:一定要注意大括号对应

! Configuration File for keepalived

global_defs {    --邮件服务没搭建可忽视
     root@localhost    
}
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS    --LVS为主机名
}

vrrp_instance apache {    --apache名字可随意改
    state MASTER    --MASTER等级
    interface ens33    --网卡名称要对应自己的
    virtual_router_id 51    --可不改,要改的话跟BACKUP_LVS同一数字
    priority 100    --优先级100,backup这里要比100小就行,比如backup写90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.111    --指定VIP地址,不需要手动去增加一个
    }
}

virtual_server 192.168.11.111 80 {    --对应上面的VIP地址,端口80,这里是搭建web服务器高可用
    delay_loop 6
    lb_algo rr    --轮询模式rr
    lb_kind DR    --LVS-DR模式
    nat_mask 255.255.255.0
   # persistence_timeout 50
    protocol TCP    --TCP协议

    real_server 192.168.11.21 80 {    --指定rs1的IP地址
        weight 1    --权重1
    TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        connect_port 80    -定时检查80端口
        }
    }
    real_server 192.168.11.22 80 {       --指定rs2的IP地址
    weight 1    --权重1
    TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80         

        }

    }   
}
BACKUP_LVS操作跟上面的差不多:把master上的配置文件复制过去scp keepalived.conf 192.168.11.20:/etc/keepalived/,
修改三处地方:router_id RS2    --backup的主机名
            state BACKUP    --状态为BACKUP
             interface ens33    --对应好backuplvs网卡名称

RS1,2操作:安装好web服务器,路由转发关掉
vim /etc/sysctl.conf添加如下命令,是为了俩台节点服务器的lo口配置为lvs服务器的VIP地址后一直arp广播,就是得到请求后不响应
net.ipv4.conf.ens33.arp_ignore = 1
net.ipv4.conf.ens33.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
关掉路由转发功能后
这里就弄个临时网卡lo:1再配置IP
ifconfig lo:1 192.168.11.111 netmask 255.255.255.255 up
以上就搞定了,接下来测试,在masterlvs用ip a查看VIP地址,关掉服务systemctl stop keepalived后发现VIP漂移到backuplvs服务器了,重新启动
master的keepalived后发现VIP又漂移到master了,这里是因为刚才在配置文件设置的优先级大小问题,继续测试,RS1关掉httpd后,发现请求的网页继续
能响应,但是回复请求的是RS2,启动RS1的httpd后,RS1和RS2分别轮询请求,这里就实现lvs高可用和RS高可用,不会发生单点故障,但是问题来了,
有一台backup的服务器资源没用到,浪费了,因为只有另一台keepalived故障VIP才会跳到backup,这时候keepalived互为主从。

keepalived互为主从操作:在配置文件/etc/keepalived/keepalived.conf添加上配置:
下面可以看到多了vrrp_instance apache2{},virtual_server 192.168.11.112 80{}
LVS1的keepalived.conf如下:

! Configuration File for keepalived

vrrp_instance apache1 {
    state MASTER
    interface ens33
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.111
    }
}

vrrp_instance apache2 {
      state BACKUP
      interface ens33
      virtual_router_id 52
      priority 99
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
          192.168.11.112
      }
  }

virtual_server 192.168.11.111 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
   # persistence_timeout 50
    protocol TCP

    real_server 192.168.11.21 80 {
        weight 1
    TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.11.22 80 {
    weight 1
    TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80         

        }

    }   
}

virtual_server 192.168.11.112 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
   # persistence_timeout 50
    protocol TCP

    real_server 192.168.11.21 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
        real_server 192.168.11.22 80 {
        weight 1
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80

                }

        }
}

LVS2的keepalived.conf如下:
! Configuration File for keepalived

global_defs {
     root@localhost
}
   notification_email_from root@localhost
   smtp_server localhost
   smtp_connect_timeout 30
   router_id LVS
}

vrrp_instance apache1 {
    state BACKUP
    interface ens33
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.11.111
    }
}

vrrp_instance apache2 {
      state MASTER
      interface ens33
      virtual_router_id 52
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 1111
      }
      virtual_ipaddress {
          192.168.11.112
      }
  }

virtual_server 192.168.11.111 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
   # persistence_timeout 50
    protocol TCP

    real_server 192.168.11.21 80 {
        weight 1
    TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
        connect_port 80
        }
    }
    real_server 192.168.11.22 80 {
    weight 1
    TCP_CHECK {
        connect_timeout 3
        nb_get_retry 3
        delay_before_retry 3
        connect_port 80         

        }

    }   
}

virtual_server 192.168.11.112 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.0
   # persistence_timeout 50
    protocol TCP

    real_server 192.168.11.21 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
            connect_port 80
        }
    }
        real_server 192.168.11.22 80 {
        weight 1
        TCP_CHECK {
                connect_timeout 3
                nb_get_retry 3
                delay_before_retry 3
                connect_port 80

                }

        }
}

弄完配置后复制到另一台keepalived服务器scp keepalived.conf 192.168.11.20:/etc/keepalived/
修改一下,注意看vrrp_instance apache1{},virtual_server 192.168.11.111 80{}
vrrp_instance apache2{},virtual_server 192.168.11.112 80{}

现在有了两个VIP,所以得在两台RS上再配置一个lo:2网卡
ifconfig lo:2 192.168.11.112 broadcast 192.168.11.112 netmask 255.255.255.255 up
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容