keepalived结合lvs实现双机热备

2020-07-31 10:14:31 浏览数 (1)

系统环境为ubuntu16.04,所有的安装都是采用apt,这里直接跳过安装keepalived,lvs,nginx等

系统架构如下:

说明

使用LVS的DR直接路由模式,两个虚拟IP,分别配置在web两台机器上,一个虚拟IP代理一个web服务器

大体过程如下
  • keepalived和ipvsadm安装与配置
    • sudo apt install keepalived ipvsadm
    • 开启路由转发, net.ipv4.ip_forward = 1
  • Web服务器配置与安装
    • sudo apt install nginx
    • 修改内核参数
    • 配置虚拟IP
  • DNS服务器配置
    • 将解析切到VIP上

注:

没有modprobe解决办法:

sudo apt install module-init-tools

加载lvs相关的模块:

sudo modprobe ip_vs

sudo modprobe ip_vs_wrr

keepalived配置参考

代码语言:javascript复制
```

$ cat /etc/keepalived/keepalived.conf ! Configuration File for keepalived

global_defs {     router_id tcmedia }

vrrp_instance VI_1 {     state MASTER              #备为BACKUP            interface iv-bond0     virtual_router_id 77     priority 100              #备的优先级要低     advert_int 1     authentication {         auth_type PASS         auth_pass 1111     }     virtual_ipaddress {         10.1.1.60         10.1.1.69     } } virtual_server 10.1.1.60 80 {     delay_loop 6     lb_algo lblc     lb_kind DR     nat_mask 255.255.255.0     persistence_timeout 50     protocol TCP     real_server 10.1.1.61 80 {         weight 1         TCP_CHECK {             connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }     } } virtual_server 10.1.1.69 80 {     delay_loop 6     lb_algo lblc     lb_kind DR     nat_mask 255.255.255.0     persistence_timeout 50     protocol TCP     real_server 10.1.1.62 80 {         weight 1         TCP_CHECK {             connect_timeout 3             nb_get_retry 3             delay_before_retry 3         }     } }

### Web端配置 1、配置虚拟IP

$ sudo ifconfig iv-bond0:0 10.1.1.60 broadcast 10.1.1.60 netmask 255.255.255.255 up

这里要确保配置的VIP地址为32位掩码,即255.255.255.255 2、修改内核参数

$ sudo cat »/etc/sysctl.conf<<EOF 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 EOF $ sudo sysctl -p 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

此操作的主要目的是用来抑制ARP相应,确保我们收到的arp信息准确。 3、keepalived端查看配置 因为是lvs结合keepalived,所以不用单独再添加规则,即不用ipvsadm再去管理,但我们可以在启动keepalived之后,通过`sudo ipvsadm -Ln`来查看 4、DNS配置 解析成VIP地址即可 5、测试 不说了 ### 下面是一些排查问题的方法 1、查看日志

sudo journalctl -u keepalived -f

由于ubuntu是使用journalctl来管理日志的,所以日志信息我们可以通过journalctl来查看。 2、判断请求是否转发到后端 这个很简单,只需要查看web端的日志,比如说nginx的日志,或者直接使用tcpdump来抓包查看,可以在lvs端,也可以在web端。

tcpdump -nni any port 80 and host 10.1.1.60

### 其他

ARP协议作用是:ARP通过广播方式将IP地址转为MAC地址。为了提升IP转换MAC地址的效率,系统会进行ARP缓存,减少广播风暴。 当LB01宕机切换到LB02时,ARP缓存表MAC地址并没有及时变更会导致服务器无法上网,所以需要及时更新arp缓存。所以需要调用arping命令进行主动更新。

#查看arp缓存命令 arp -n

#arp ping命令解析MAC地址 arping -c 1 -I eth0 10.1.1.61

0 人点赞