1.VRRP功能(重要):虚拟路由热备协议-----防止单点故障
VIP: 虚拟IP/浮动IP
#无轮询效果,仅热备
2.自动配置LVS(ipvsadm): 无需安装ipvsadm,直接与LVS交互
#还是需要安装ipvsadm: 用于查看配置后结果—ipvsadm -Ln
3.健康检查: 强于ipvsadm
#功能之间相互独立,可以单独使用
注意:
a)每次启动keepalived会自动启动防火墙iptables,并且拒绝所有
b)Keepalived错误日志路径:/var/log/messages
工作原理流程:
1).客户端发送请求给虚拟路由(VIP)192.168.4.15
2).根据两台proxy服务器的优先级判断,将请求转给优先级较高的proxy服务器-------Keepalived
3).proxy服务器根据修改后的配置文件自动生成LVS及相应后端web服务器权重,并以轮询的方式调度web服务器-------LVS
4).后端web服务器收到请求后,处理数据并伪装ip为VIP,即192.168.4.15,直接返回给客户端.
1).配置ip: 客户端×1, LVS(proxy)服务器×2, web服务器×2,各虚拟机IP如下表
2).配置两台web服务器: 安装apache并启动服务(启动80端口)
web1配置:
[root@web1 ~]# yum -y install httpd
[root@web1 ~]# echo "web1" > /var/www/html/index.html
[root@web1 ~]# systemctl restart httpd; systemctl enable httpd
web2配置:将web1中"web1"改为"web2",其余完全相同
3).配置两台web服务器VIP:
web1配置:
a).添加虚拟网卡,设置VIP:
[root@web1 ~]# cd /etc/sysconfig/network-scripts/
[root@web1 ~]# cp ifcfg-lo{,:0} #按ifcfg-lo为模板复制出虚拟网卡ifcfg-lo:0
[root@web1 ~]# vim ifcfg-lo:0 #修改为VIP,用于伪装为调度服务器(proxy),将数据发送回客户端
DEVICE=lo:0
IPADDR=192.168.4.15
NETMASK=255.255.255.255 #必须为32位,即4个255
NETWORK=192.168.4.15
BROADCAST=192.168.4.15
ONBOOT=yes
NAME=lo:0
b).修改内核参数配置文件,防止地址冲突:
作用: 若不进行ip隐藏设置,则一个网络中出现两个相同的ip(web1和proxy),会导致地址冲突
[root@web1 ~]# vim /etc/sysctl.conf
#手动写入如下4行内容
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_announce = 2
#1,2行表示:当有arp广播问谁是192.168.4.15时,本机忽略该ARP广播,不做任何回应
#3,4行表示:本机不要向外宣告自己的lo回环地址是192.168.4.15
c).重启网络服务(有可能无法正常启动,和版本有关)
[root@web1 ~]# systemctl stop NetworkManager #若无法直接重启network则执行前两步,关闭NetworkManager
[root@web1 ~]# systemctl disable NetworkManager #因为网卡由NetworkManager和network共同管理,关闭一个才可以启动
[root@web1 ~]# systemctl restart network
[root@web1 ~]# ifconfig
[root@web1 ~]# systemctl stop firewalld #防火墙
[root@web1 ~]# setenforce 0 #selinux值
web2配置:配置与web1完全相同
1).安装Keepalived和ipvsadm软件:
web1配置:
注:安装ipvsadm原因:LVS在内核中,ipvsadm为工具,用于人机交互,
[root@proxy1 ~]# yum install -y keepalived
[root@proxy1 ~]# systemctl enable keepalived
[root@proxy1 ~]# yum install -y ipvsadm
[root@proxy1 ~]# ipvsadm -C #清除多余LVS规则
web2配置:配置与web1完全相同
2).部署Keepalived实现LVS-DR模式调度器高可用:
web1配置:
[root@proxy1 ~]# vim /etc/keepalived/keepalived.conf
#设置全局定义块,定义邮件收,发件人,设置路由ID
global_defs {
notification_email {
[email protected] #设置报警收件人邮箱
}
notification_email_from ka@localhost #设置发件人
smtp_server 127.0.0.1 #定义邮件服务器
smtp_connect_timeout 30
router_id lvs1 #设置路由ID号(实验需要修改)
}
#虚拟路由配置块,设置虚拟路由主从,网卡接口,VRID,优先级等
vrrp_instance VI_1 {
state MASTER #主服务器为MASTER
interface eth0 #定义网络接口
virtual_router_id 51 #主辅VRID号必须一致
priority 100 #服务器优先级
advert_int 1
authentication {
auth_type pass
auth_pass 1111 #主辅服务器密码必须一致
}
virtual_ipaddress { #配置VIP(实验需要修改)
192.168.4.15
}
}
#虚拟路由配置块,最重要的部分,将keepalived和lvs结合
virtual_server 192.168.4.15 80 { #设置ipvsadm的VIP规则(实验需要修改)
delay_loop 6
lb_algo wrr #设置LVS调度算法为加权轮询算法
lb_kind DR #设置LVS的模式为DR(实验需要修改)
#persistence_timeout 50 #(实验需要注释)
#注意这样的作用是保持连接,开启后,客户端在一定时间内始终访问相同服务器
protocol TCP
real_server 192.168.4.100 80 { #设置后端web服务器真实IP(实验需要修改)
weight 1 #设置权重为1
TCP_CHECK { #对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.4.200 80 { #设置后端web服务器真实IP(实验需要修改)
weight 2 #设置权重为2
TCP_CHECK { #对后台real_server做健康检查(实验需要修改)
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
#其余删掉
重启服务:
注意:在启动keepalived时,软件会自动添加drop防火墙规则,拒绝所有人访问,需要iptables -F
[root@proxy1 ~]# systemctl start keepalived
[root@proxy1 ~]# ipvsadm -Ln #查看LVS规则
[root@proxy1 ~]# ip a s #查看VIP配置
[root@proxy1 ~]# iptables -F #关闭防火墙
proxy2配置:配置与proxy1不同之处:
...
router_id lvs2 #随便起名,不同即可
...
state BACKUP #热备份LVS服务器
priority 80 #优先级,默认100,越大越先启用(VIP漂移)
...
其余完全相同
重启服务:同proxy1
客户端使用curl命令反复连接192.168.4.15,查看访问的页面是否会轮询到不同的后端真实服务器。
######################################################################################