前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >keepalived结合lvs实现双机热备

keepalived结合lvs实现双机热备

作者头像
dogfei
发布2020-07-31 10:14:31
4620
发布2020-07-31 10:14:31
举报
文章被收录于专栏:devops探索devops探索devops探索

系统环境为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配置参考

```

$ 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

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 大体过程如下
  • keepalived配置参考
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档