什么是lvs
LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。
详细设置请参阅拙作: LVS 负载均衡 https://blog.csdn.net/gaofei0428/article/details/104438533
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。Keepalived的作用是检测服务器的状态,如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。
keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。
高可用web架构: LVS+keepalived+nginx+apache+php+eaccelerator(+nfs可选 可不选)
Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
前提要配置好 LVS 详细设置请参阅拙作: LVS 负载均衡 https://blog.csdn.net/gaofei0428/article/details/104438533
lvs_sync_daemon_inteface eth0 心跳线接口,DR模式用的和上面的接口一样,也可以用机器上的其他网卡,用来防止脑裂
virtual_router_id 51 虚拟路由的ID号,是虚拟路由MAC的最后一位地址
priority 100 此节点的优先级,主节点的优先级需要比其他节点高
advert_int 1 通告的间隔时间
authentication { 认证配置
auth_type PASS 认证方式
auth_pass 1111 认证密码
}
virtual_ipaddress { 虚拟ip地址,可以有多个地址,每个地址占一行,不需要子网掩码,必须与 lvs 客户端设定的 vip 一致
192.168.1.168
}
}
virtual_server 192.168.1.168 80 { 集群所使用的VIP和端口
delay_loop 6 健康检查间隔,单位为秒
lb_algo wrr lvs调度算法rr|wrr|lc|wlc|lblc|sh|dh
lb_kind DR 负载均衡转发规则。一般包括DR,NAT,TUN 3种
nat_mask 255.255.255.255 VIP掩码
persistence_timeout 50 会话保持时间
protocol TCP 转发协议
real_server 192.168.1.10 80 { 真实服务器,包括IP和端口号
weight 1 默认为1,0为失效
inhibit_on_failure 在服务器健康检查失效时,将其设为0,而不是直接从ipvs中删除
TCP_CHECK { 通过tcpcheck判断RealServer的健康状态
connect_timeout 10 连接超时时间
nb_get_retry 3 重连次数
delay_before_retry 3 重连间隔时间
connect_port 80 健康检查端口的端口
}
}
real_server 192.168.1.11 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr 默认是不跳过检查。检查收到的VRRP通告中的所有地址可能会比较耗时,设置此命令的意思是,如果通告与接收的上一个通告来自相同的master路由器,则不执行检查(跳过检查)。
vrrp_strict 禁止 vrrp 协议强制检查
vrrp_garp_interval 0.001 在一个接口发送的两个免费ARP之间的延迟。可以精确到毫秒级。默认是0.
vrrp_gna_interval 0
}
vrrp_instance DR_1 { 定义第一组虚拟 VIP
state MASTER 一定要大写
interface ens33 注意网卡的名称
virtual_router_id 51 设置组ID,同一组 vrrp_instance 必须一致
lvs_sync_daemon_inteface ens33
priority 100 设置优先级,MASTER 要比 BACKUP 的值大,互为主从时注意另一台的优先级,比如:192.168.2.10 的优先级就要比这个值小,90
advert_int 1 检测时间
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { 第一组 VIP 的地址
192.168.2.168
}
}
vrrp_instance DR_2 { 定义第二组虚拟 VIP
state BACKUP 一定要大写,互为主从时,注意名称和优先级
interface ens33
virtual_router_id 53 注意组 id
lvs_sync_daemon_inteface ens33
priority 100 设置优先级,MASTER 要比 BACKUP 的值大,互为主从时注意另一台的优先级,比如:192.168.2.10 的优先级就要比这个值大,为110
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { 第二组 VIP 的地址
192.168.2.169
}
}
后端真实服务器 rs 设置
virtual_server 192.168.2.168 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.4 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.2.7 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 192.168.2.169 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.4 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.2.7 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
/etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
notification_email {
acassen@firewall.loc
failover@firewall.loc
sysadmin@firewall.loc
}
notification_email_from Alexandre.Cassen@firewall.loc
smtp_server 192.168.200.1
smtp_connect_timeout 30
router_id LVS_DEVEL
vrrp_skip_check_adv_addr
vrrp_strict
vrrp_garp_interval 0.001
vrrp_gna_interval 0
}
vrrp_instance DR_1 {
state BACKUP 第一组 作为 备用
interface ens33
virtual_router_id 51
lvs_sync_daemon_inteface ens33
priority 90 优先级比 MASTER 192.168.2.6 的小
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.168
}
}
vrrp_instance DR_2 {
state MASTER 第二组 要作为 MASTER
interface ens33
virtual_router_id 53
lvs_sync_daemon_inteface ens33
priority 110 优先级要比 192.168.2.6 的大
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.2.169
}
}
其他设置不用动
virtual_server 192.168.2.168 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.4 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.2.7 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
virtual_server 192.168.2.169 80 {
delay_loop 6
lb_algo rr
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.2.4 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
real_server 192.168.2.7 80 {
weight 1
inhibit_on_failure
TCP_CHECK {
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!