本文使用的是DR模型,其它模式有D-NET,TUN模式。
DR模型的优点:
DR模型基于四层负载,速度快,不和客户端经过握手协议,只是偷窥了一下握手包,
过程是偷偷修改了arp,改动非常小效率高,此时获取RS(真正的后台服务器)的mac地址,基于下一条机制,数据包就能传输到RS服务器上,而RS服务器上又有VIP地址,RS服务器直接可以将数据直接传给客户端,有点像IP伪装。
D-NET模型的缺点:
D-NET模式对宽带要求比较高,中间需要不停的修改目标IP所以算力大。
没有keepalive的配置过程:
LVS:
node01: ifconfig eth0:8 192.168.150.100/24
node02--node03:
(1)修改内核:
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo 1> /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
(2)设置隐藏的VIP:
ifconfig lo:3 192.168.150.100 netmask 255.255.255.255 (此处一定要注意掩码不能是255.255.255.0)
RS中的服务:
node02--node03:
yum install httpd -y
service httpd start
vi /var/www/html/index.xml
from 192.168.1.150.1x
LVS服务配置:
node01:
yum install ipvsadm
ipvsadm -A -t 192.168.150.100:80 -s rr
ipvsadm -a -t 192.168.150.100:80 -r 192.168.1.12 -g -w 1
ipvsadm -a -t 192.168.150.100:80 -r 192.168.1.13 -g -w 1
ipvsadm -ln
验证:
浏览器访问 192.168.150.100 看到负载 变化
node01:
netstat -antp 结果看不到socket连接
ipvsadm -lnc 查看偷窥记录
node02--node03:
netstat -antp 看到所有的socket连接
------------------------------------------------------------------------------------------------------
有keepalive 的配置过程:
主机node01 ---node04
node01:
ipvsadm -C //卸载掉ipvsadm
ifconfig eth0:8 down // 清清除eth:8 网卡
node01---node04:
yum install keepalived -y ipvsadm
配置:
/etc/keepalived/keepalived.conf
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak //拷贝
vrrp:虚拟路由冗余协议
vi keepalived.conf
node01:
global_defs {
notification_email n { #指定keepalived在发生切换时需要发送email到的对象,一行一个
sysadmin@fire.loc
}
notification_email_from Alexandre.Cassen@firewall.loc #指定发件人
smtp_server localhost #指定smtp服务器地址
smtp_connect_timeout 30 #指定smtp连接超时时间
router_id LVS_DEVEL #运行keepalived机器的一个标识
}
vrrp_instance VI_1{
state MASTER //主机
interface eth0 //哪个网卡
virtual_route_id 51 // 集群部署时使用
priority 100 //权重
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress{
192.168.150.100/24 dev eth0 label eth0:3 //虚拟目标地址
}
}
virtual_server 192.168.150.100 80 { //RS服务器地址
delay_loop 6
lb_algo rr
lb_kind DR
nat_mask 255.255.255.0
persistence_timeout 0 //注意开发环境设置成0,生产环境不能设置成0
protocol TCP
real_server 192.168.150.12 80{
weight 1
HTTP_GET {
url{
path /
status_code 200
}
connect_timeoout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.150.13 80{
weight 1
HTTP_GET {
url{
path /
status_code 200
}
connect_timeoout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
node04:配置同node01一样
keepAlived的作用:
1:代替人改为自动运维,解决了单点故障,实现了HA;
2:监控自身的服务;
3:监控RS的服务健康状况;
4:master通告自己还活着,Backup监听master状态,Master挂了,从一堆backup推举出一个新的master;
5:配置VIP以及ipvs,keepalive有自己的配置文件。