keepalived与lvs
1 lvs
Linux服务器集群系统(一) -- LVS项目介绍
LVS(Linux Virtual Server)即Linux虚拟服务器,是一个基于Linux操作系统的虚拟服务器技术,用于实现负载均衡和高可用性。章文嵩,是中国国内最早出现的自由软件项目之一。
2 lvs发展史
在 Linux 2.2 内核时期,LVS 最初是以内核补丁的形式存在的,这意味着它不是直接集成到 Linux 内核中的,而是作为附加的补丁集来实现功能。
集成到 Linux 内核2.4.23 版本:
从 Linux 2.4.23 版本开始,LVS 的核心组件 IPVS (IP Virtual Server) 被正式合并到 Linux 内核中,成为官方内核的一部分。这意味着用户不再需要单独下载和安装补丁集来使用 LVS 功能
3 lvs组由ipvs和ipvsadm组成
LVS 是一个负载均衡框架,它定义了如何使用负载均衡器来分发网络请求的基本规则和架构
ipvs 是 LVS 中实现负载均衡的核心模块,它负责具体的负载均衡任务(虚拟出IP)
ipvsadm:是一个Linux内核中的IP负载均衡工具
4 LVS三种主要的工作模式
NAT TUN(隧道) DR
NAT:上行下行都走lvs,lvs压力爆大 ,但是安全,
TUN:上行走lvs,下行直接去客户端,lvs压力不大,但是内服务器ip直接暴漏给外网,非常不安全
DR:上行走lvs,下行走路由,路由会虚拟一个IP,lvs压力不大,还安全
5 keepalivde +lvs 高可用
准备:俩台干净的虚拟机(至少没用过nginx,keepalivde)
lvs-1 61 lvs-2 62
两台机子
yum -y install keepalived 用到keepalivde
yum install psmisc -y 用killall keepalivde di
lvs-1 vim /etc/keepalived/keepalived.conf
[root@Lvs-1 ~]# vim /etc/keepalived/keepalived.conf! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_27
}vrrp_instance VI_1 {state MASTERinterface ens33virtual_router_id 51priority 100advert_int 1authentication {auth_type PASSauth_pass 1111}#虚拟的IP,网段要和lvs的网段一样virtual_ipaddress {192.168.58.66}
}
#lvs配置
virtual_server 192.168.58.66 49151 {#每个6秒检查realserver是否存活delay_loop 6#lb=loadbalance负载均衡算法,rr轮询lb_algo rr#lvs三种模式NAT|TUN隧道|DRlb_kind DR#一个请求固定到一个服务器上的时间 单位秒persistence_timeout 5#请求方式TPC|UPDprotocol TCP#真实服务器配置,这两是装有tomcat的真实ipreal_server 192.168.58.41 49151 {#权重weight 1#超时时长connect_timeout 3#重试次数nb_get_retry 3#重试时间间隔delay_before_retry 3}real_server 192.168.58.42 49151 {weight 1connect_timeout 3nb_get_retry 3delay_before_retry 3}
}
lvs-2 vim /etc/keepalived/keepalived.conf
[root@Lvs-2 ~]# vim /etc/keepalived/keepalived.conf ! Configuration File for keepalivedglobal_defs {notification_email {acassen@firewall.loc}notification_email_from Alexandre.Cassen@firewall.locsmtp_server 192.168.200.1smtp_connect_timeout 30router_id LVS_28
}vrrp_instance VI_1 {state BACKUPinterface ens33virtual_router_id 51priority 50advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.58.66}
}
virtual_server 192.168.58.66 49151 {#每个6秒检查realserver是否存活delay_loop 6#lb=loadbalance负载均衡算法,rr轮询lb_algo rr #lvs三种模式NAT|TUN隧道|DRlb_kind DR#一个请求固定到一个服务器上的时间 单位秒persistence_timeout 5 #请求方式TPC|UPDprotocol TCP#真实服务器配置real_server 192.168.58.41 80 {#权重 weight 1#超时时长connect_timeout 3#重试次数nb_get_retry 3#重试时间间隔delay_before_retry 3} real_server 192.168.58.42 80 {weight 1connect_timeout 3nb_get_retry 3delay_before_retry 3}
}
两台机子 都有的操作
cat cat /var/log/messages (可能会报这种错),无伤大雅,继续干
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'connect_timeout'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'nb_get_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'delay_before_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'connect_timeout'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'nb_get_retry'
Aug 22 09:02:03 Lvs-1 Keepalived_healthcheckers[3454]: Unknown keyword 'delay_before_retry'
ipvsadm -C
ipvsadm -Ln
service keepalived start
ipvsadm -Ln
在浏览器输入虚拟IP+装有tomcat机子配的端口号(如果配的是80,只用输虚拟IP就行)
192.168.58.66:49151
5.5 给tomcat配置虚拟ip 前后呼应
两台tomcat机子一样的操作 192.168.58.66虚拟ip
cp /etc/sysconfig/network-scripts/ifcfg-lo /etc/sysconfig/network-scripts/ifcfg-lo:1
vim /etc/sysconfig/network-scripts/ifcfg-lo:1
刷新lo网卡:
ifup lo 或者service network restart
查看:
ip a
6测试
在浏览器输入虚拟IP+装有tomcat机子配的端口号后出现项目页面
win+r cmd
黑窗口敲 arp -a 192.168.58.66
这是lvs-1的mac地址
在lvs-1:
killall keppalived
ipvsadm -C 清除所有当前的LVS配置
ipvsadm -Ln 列出当前的LVS配置
再次在黑窗口敲 arp -a 192.168.58.66 发现mac地址变了
变成vs-2的mac地址
这样就成功了