1、实验环境
4台节点
Keepalived1 + lvs1(Director1):192.168.31.4
Keepalived2 + lvs2(Director2):192.168.31.3
Real server1:192.168.31.2
Real server2:192.168.31.7
IP: 192.168.31.38
2、安装
Lvs + keepalived的2个节点安装:
yum install ipvsadm keepalived -y
Real server + nginx服务的2个节点安装:
yum install -y nginx
3、设置配置脚本
Real server节点2台配置脚本:
vim /opt/lvs_dr_rs.sh
#!/bin/bash vip=192.168.31.38
ifconfig lo: $vip broadcast $vip netmask 255.255.255.255 up
route add -host $vip dev lo:
echo "" >/proc/sys/net/ipv4/conf/lo/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/lo/arp_announce
echo "" >/proc/sys/net/ipv4/conf/all/arp_ignore
echo "" >/proc/sys/net/ipv4/conf/all/arp_announce
sysctl -p >/dev/null 2>&1
复制到另外一台
scp lvs_dr-rs.sh root@192.168.31.3:/opt
执行脚本
bash /opt/lvs_dr_rs.sh
查看
ip a
keepalived节点配置(2节点):
主节点( MASTER )配置文件
vim /etc/keepalived/keepalived.conf
global_defs{
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id
priority
advert_int
authentication {
auth_type PASS
auth_pass
}
virtual_ipaddress {
192.168.31.38
}
} virtual_server 192.168.31.38 {
delay_loop
lb_algo rr
lb_kind DR
persistence_timeout
protocol TCP
real_server 192.168.31.2 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
real_server 192.168.31.7 {
weight
TCP_CHECK {
connect_timeout
nb_get_retry
delay_before_retry
connect_port
}
}
}
从节点( BACKUP )配置文件
拷贝主节点的配置文件keepalived.conf:
scp keepalived.conf root@192.168.31.3:/etc/keepalived
然后修改如下内容:
state MASTER -> state BACKUP
priority -> priority
keepalived的2个节点执行如下命令,开启转发功能:
# echo > /proc/sys/net/ipv4/ip_forward
4、启动nginx
systemctl start nginx
5、启动keepalived
先主后从分别启动keepalive
systemctl start keepalived.service
6、重启日志记录服务
修改vim /etc/sysconfig/keepalived日志保存路径
把KEEPALIVED_OPTIONS="-D" 修改为:KEEPALIVED_OPTIONS="-D -d -S 0"
在vim /etc/rsyslog.conf 末尾添加
local0.* /var/log/keepalived.log
重启日志服务
systemctl restart rsyslog
重启keepalived
systemctl restart keepalived.service
7、排查
- 查看/var/log/keepalived.log日志是否启动成功??
- ipvsadm -ln查看是否正常
- ipvsadm -ln --stats查看是否主才有数据,备没有数据
- curl vip,然后查看ipvsadm -lnc数据是否异常
8、删除
ifconfig lo:0 down
route del 192.168.31.38
LVS DR模式的特性: 、CIP必须能够和VIP通讯,所以通常VIP是外网地址
、DIP和RIP为同一物理网络,否则无法向RS发送ARP广播
、RS上必须配置VIP地址,否则响应报文无法送达客户端,RS上的VIP对外界是不可见的,但RS可以接收目标地址为VIP的网络请求,并在回应数据包时将源地址设置为该VIP地址
、RS上必须做ARP抑制,使RS不响应来自CIP的请求,相当于指定Director来响应CIP的请求
、调度器几乎支持所有的UNIX、LINUX系统,但不支持windows,但是RS可以为windows
、RS的网关不能指向DIP,应该指向出口网关
、DR模式下,不支持端口映射,即Director不能更改请求报文的端口
、DR模式效率很高,但配置麻烦,访问量不是非常大的情况下推荐使用haproxy或者nginx。标准:日访问量2000W PV以下,或者并发请求1W以下的可以考虑使用haproxy或nginx或使用LVS-NAT模式。
、直接对外的访问业务,例如:web服务做RS节点,RS最好使用外网IP,如果不直接对外的业务,例如MySQL、存储系统RS节点,最好使用内网IP
参考:https://www.cnblogs.com/edisonchou/p/4281978.html
https://blog.csdn.net/Ki8Qzvka6Gz4n450m/article/details/79119665