lvs-dr模式+keepalived

一,keepalived概述

        Keepalived 是一个基于VRRP协议来实现的LVS服务高可用方案,可以解决静态路由出现的单点故障问题。

        在一个LVS服务集群中通常有主服务器(MASTER)和备份服务器(BACKUP)两种角色的服务器,但是对外表现为一个虚拟IP,主服务器会发送VRRP通告信息给备份服务器,当备份服务器收不到VRRP消息的时候,即主服务器异常的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证了高可用性。

二,Keepalived体系主要模块及其作用

        core:是keepalived的核心,负责主进程的启动,维护及全局配置文件的加载和解析。

        vrrp:用来实现vrrp协议。

                Vrrp通信原理:           

                        Vrrp:虚拟路由冗余协议,作用是解决静态路由的单点故障。

                        Vrrp通过选举机制来将路由交给某台vrrp路由器处理。

                        Vrrp用多播的方式(多播地址224.0.0.18)实现高可用之间的通信,工作时主节点法宝,备节点接包,当备节点接收不到主节点发的数据包的时候,就会接管主节点的资源,备节点可以有多个,根据优先级来进行选举,但一般的keepalived系统运维工作的时候会又多个荣誉路由。

                        Vrrp使用加密协议加密数据,但是keepalived官方目前还是推荐用明文的方式认证类型和密码。

        check:负责健康检查,常见方式有端口检查及url检查。

三,Keepalived工作原理

        Keepalive服务器之间通过vrrp进行通信,vrrp是通过竞选来通过主备,主优先级高于备,因此工作时主优先获得所有资源,备节点处于等待状态。当主挂了的时候,备节点会接管主节点的资源,就顶替主节点对外提供服务。在keepalived服务之间,只有作为主的服务器会一直发送vrrp广播包,告诉备正常工作,此时备不会去抢占主,当主不可用的时候,即备监听不到主发送的广播包时候,备就会启动相关服务去接管资源,保证业务的连续性,接管速度最快小于1s。

四:配置

lvs-dr模式+keepalived_第1张图片

 1,配置负载均衡器(192.168.10.14,192.168.10.15)

安装lvs与keepalived
yum -y install ipvsadm keepalived
modprobe ip_vs
cat /proc/net/ip_vs

配置keeplived
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf


在global_defs中修改以下:
smtp_server 127.0.0.1  #邮件服务指向本地
router_id LVS_01       #指定路由器名称,需主备不同
#vrrp_strict           #注释掉,取消严格遵守vrrp协议功能

在vrrp_instance VI_1中修改以下:
state MASTER           #主为MASTER,备为BACKUP
interface ens33        #设置承载vip的物理接口
virtual_router_id 10   #指定虚拟路由id号,每个组保持一致
#nopreempt             #设置为抢占模式,如果设置非抢占模式,两个节点state必须为bakcup,并加上配置 nopreempt
priority 100           #修改优先级,主比备大即可
advert_int 1           #通告间隔秒数
authentication {				
		auth_type PASS     #认证类型		
        auth_pass abc123   #认证密码
    }
virtual_ipaddress {			
        192.168.10.188     #设置集群vip地址
    }

virtual_server 192.168.10.188 80 {
    delay_loop 6	   #健康检查的间隔时间(秒)
    lb_algo rr         #指定算法
    lb_kind DR         #服务工作模式
    persistence_timeout 50    #连接保持时间
    protocol TCP       #服务采用tcp连接

指定第一个web节点的物理ip地址和虚拟地址
real_server 192.168.10.16 80 {
    weight 1           #设置权重
    TCP_CHECK {
        connect_port 80    #检查目标的端口
        connect_timeout 3  #连接超时
        nb_get_retry 3     #重试次数
        delay_before_retry 3    #重试间隔
    }
}

指定第二个web节点的物理ip地址和虚拟地址
real_server 192.168.10.17 80 {
    weight 1
    TCP_CHECK {
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 3
	}
}

配置vip
vim /etc/sysconfig/network-scripts/ifcfg-ens33:0
DEVICE=ens33:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255

重启网卡
systemctl restart network
ifup  ens33:0
systemctl start keepalived
ip addr

添加ipvsadm规则并启动
ipvsadm-save > /etc/sysconfig/ipvsadm
systemctl start ipvsadm
ipvsadm -C
ipvsadm -A -t 192.168.10.188:80 -s rr
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.16:80 -g
ipvsadm -a -t 192.168.10.188:80 -r 192.168.10.17:80 -g
ipvsadm -ln

调整proc参数,关闭linux内核重定向
vim /etc/sysctl.conf
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0
sysctl -p

2,配置节点服务器

yum -y install httpd
systemctl start httpd

给网页写入内容(两台看着写)
echo 'this is web!' > /var/www/html/index.html

设置vip
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.10.188
NETMASK=255.255.255.255

启动网卡
systemctl restart network
ifup lo:0
ifconfig lo:0
route add -host 192.168.10.188 dev lo:0

设置广播响应的参数
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
sysctl -p

测试:访问虚拟地址

你可能感兴趣的:(lvs,服务器,网络)