系统环境为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