dfdfs 发表于 2017-11-8 10:37:13

基于LVS实现Keepalived的高可用

LVS可实现real server负载均衡。即使后端服务器有一台挂掉服务也可正常提供。在这种状况下,万一负载均衡器挂掉呢?不仅是负载均衡器,网络中有不少的关键设备同一时刻只能由单台计算机提供。就像CPU,同一时刻只能处理同一个问题。解决方式是CUP分片,这样CUP切换多任务,看起来就像计算机同步处理了很多进程。(多核暂且不论)如果网络中的关键节点失效,替代节点能够马上接管其职责,这样服务的可用性就会大大提高。在用户看起,这样的服务并没有中断。这便是高可用集群。高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。这里阿拉就来介绍基于LVS集群,使用Keepalived实现高可用。
Keepalived是用配置文件实现高可用。安装keepalived后修改主配置文件/etc/keepalived/keepalived.conf然后启动服务即可。因为操作简单,出现错误也只因配置文件设置不合理。另外错误信息能在日志中清晰看到,排错可以参考。keepalived只要real server OK。ipvsadm的规则无需添加,负载均衡器绑定VIP也用配置文件实现。可以说是非常方便的呢。为了试验效果,要把ipvsadm清空,VIP也解除绑定哦。两个命令而已:systemctl restart network || service network restartipvsadm -C下面我们以这么几个实验入手,将配置文件呈现于你。
0.实现keepalived的DR模式1.脚本实现LVS后端real server宕机时,切换keepalived服务器的VIP
2.实现keepalived的NAT模式3.实现keepalived的双主模型,要求,实现Nginx和php-fpm两台服务器中的服务互为主从。
LVS的NAT模式和DR模式请参考:http://amelie.blog.51cto.com/12850951/1979742
0.实现keepalived的DR模式负载均衡IP:172.17.7.17VIP:172.17.7.77real server1:172.17.6.6real server2:172.17.6.16MASTER配置如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# cat /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
   root@localhost
   }
   notification_email_from root@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id KEEPALIVED_LVS
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 79
    priority 100
    advert_int 1
    authentication {
      auth_type PASS
      auth_pass magedu
    }
    virtual_ipaddress {
      172.17.7.77
    }
}

virtual_server 172.17.7.77 80 {
    delay_loop 6
    lb_algo rr
    lb_kind DR
    nat_mask 255.255.255.255
    persistence_timeout 600
    protocol TCP   
   
    real_server 172.17.6.6 80 {
      weight 2
      HTTP_GET {
            url {
            path /
            }
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }

   real_server 172.17.6.16 80 {
      weight 1
      HTTP_GET {
            url {
               path /
            }
            connect_port 80
            connect_timeout 3
            nb_get_retry 3
            delay_before_retry 3
      }
    }
}




BACKUP的不同之处只在两处:
1
state BACKUP





1
    priority 98




快用systemctl reatsrt keepalived试试效果吧。
1.脚本实现LVS后端real server宕机时,切换keepalived服务器的VIP
编译安装数据库mariadb阿拉的实验历史如下:
页: [1]
查看完整版本: 基于LVS实现Keepalived的高可用