首页 > 编程知识 正文

lvs和keepalived区别,keepalived配置文件

时间:2023-05-03 07:57:41 阅读:129398 作者:1285

一、配置文件为全局配置、VRRP配置、 LVS部署一个个vrrp虚拟路由器lvsconfigurationvirtual server,划分为全局配置全局定义配置虚拟配置虚拟服务器(s ) : ipvs集群的vs和rs二、全球配置global_defs{notification_}一般公司也有acassen @ firewall.loc failover @ firewall.loc sysadmin @ 不安装notification _ email _ from Alexandre.cassen @ firewall.loc SMTP _ server 192.168.200.1 SMTP _ connect _ time oon 如果接收到的消息和前一条消息是同一路由器,则它跳过对消息中源地址vrrp_strict #的检查,严格遵守vrrp协议,允许状态:1、VIP地址2 IPv6地址vrrp_garp_interval 0 #ARP消息发送延迟vrrp_gna_interval 0 #消息发送延迟#vrrp_mcast_group4 224.0.0.18 # 具有的默认值: 224.0.0.18范围: 224.0.0.0到239.255.255.255 # vrrp _ iptables # iptables input避免生成链规则,以及sip anput

要安装global _ defs { router _ id server1. lck.local vrrp _ skip _ check _ adv _ addr # vrrp _ iptables # yum,请执行此操作此参数vrrp _ strict vrrp _ garp _ interval0vrrp _ GNA _ interval0}三、vrrp配置vrrp_instance VI_1 { #虚拟路由器名称为一个密钥state MASTER #当前节点在此虚拟路由器上的初始状态和状态为MASTER或BACKUP,通常配置BACKUP。 此值无法确定身份。 最终,它通过比较优先级接口eth0#绑定到当前虚拟路由器使用的物理接口。 例如,ens32 eth0、bond0、br0 virtual_router_id 51 #各虚拟路由器的唯一标识符、范围:0-255、同一虚拟路由器的组的vrid是该虚拟路由器中的priool _ router _ id 范围:1-254,对于每个keepalived主机节点,此值不同的advert_int 1 #vrrp通知间隔是默认的1s验证机制auth_type PASS #AH 或PASS auth_pass 1111 #预共享密钥同一虚拟路由器的多个keepalived节点必须相同} virtual _ IP地址{ #虚拟IP 10.0.0.100 #指定VIP 注意:请不要指定/prefix。 默认情况下,在/32 10.0.0.101/24 dev eth1 #中指定VIP的网卡10.0.0.102/24 deve TH2 label eth 23:1 #中指定VIP的网卡lip

#第一个keepalived服务器vrrp _ instance router1{ statemasterinterfaceeth0virtual _ router _ id 55 priority 100 advert _ int1au int1au1au thentid virtual _ IP地址{ 10.0.0.100/24 deveth0label eth 03360010.0.0.101/24 deveth0label eth 0333334

_instance router2 { state BACKUP interface eth0 virtual_router_id 60 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 12345678 } virtual_ipaddress { 10.0.0.102/24 dev eth0 label eth0:2 10.0.0.103/24 dev eth0 label eth0:3 }} #第二台keepalived服务器vrrp_instance router1 { state BACKUP interface eth0 virtual_router_id 55 priority 80 advert_int 1 authentication { auth_type PASS auth_pass 12345678 } virtual_ipaddress { 10.0.0.100/24 dev eth0 label eth0:0 10.0.0.101/24 dev eth0 label eth0:1 }}vrrp_instance router2 { state MASTER interface eth0 virtual_router_id 60 priority 100 advert_int 1 authentication { auth_type PASS auth_pass 12345678 } virtual_ipaddress { 10.0.0.102/24 dev eth0 label eth0:2 10.0.0.103/24 dev eth0 label eth0:3 }}

如果要在主机上ping VIP,是ping不通的,因为会在防火墙生成一条规则(不允许任何主机访问本主机),如下图所示

解决方式:可以在全局配置加上"vrrp_iptables",防火墙就不会生成该规则,便可以ping通。此方式是为了达到实验效果,生产环境不适合开启。

下图是,当一个VRRP优先级高的keepalived服务器上线时,会抢占VRRP优先级低的VIP。下图是RRP优先级低的keepalived服务器的日志信息。

四、LVS配置

查看配置帮助

man keepalived.conf virtual_server 10.0.0.100 80 { #定义虚拟主机IP地址及其端口 delay_loop 6 #检查后端服务器的时间间隔 lb_algo wrr #定义调度方法,可选rr|wrr|lc|wlc|lblc|sh|dh lb_kind DR #集群的类型,注意要大写,可选NAT|DR|TUN #persistence_timeout 20 #持久连接时长,LVS在多少时间内没有与后端服务进行数据传输,就会断开 protocol TCP #指定服务协议,可选TCP|UDP|SCTP sorry_server 10.0.0.101 80 #所有RS故障时,备用服务器地址(报错服务器) real_server 10.0.0.11 80 { #RS的IP和PORT weight 1 #RS权重 notify_up <STRING>|<QUOTED-STRING> #RS上线通知脚本 notify_down <STRING>|<QUOTED-STRING> #RS下线通知脚本 HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK { #定义当前主机的健康状态 检测方法 ... } }} 4.1 应用层检测:HTTP_GET、SSL_GET(Nginx、Tomcat) HTTP_GET|SSL_GET { url { path <URL_PATH> #定义要监控的URL status_code <INT> #判断上述检测机制为健康状态的响应码,一般为 200 } connect_timeout <INTEGER> #客户端请求的超时时长, 相当于haproxy的timeout server,多久连接不上就报错 nb_get_retry <INT> #重试次数 delay_before_retry <INT> #重试之前的延迟时长 connect_ip <IP ADDRESS> #向当前RS哪个IP地址发起健康状态检测请求 connect_port <PORT> #向当前RS的哪个PORT发起健康状态检测请求 xwddsdto <IP ADDRESS> #向当前RS发出健康状态检测请求时使用的源地址 xwddsd_port <PORT> #向当前RS发出健康状态检测请求时使用的源端口}

配置举例

virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.11 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } } real_server 10.0.0.12 80 { weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 1 nb_get_retry 3 delay_before_retry 1 } }} 4.2 传输层检测:TCP_CHECK(Redis、MySQL) TCP_CHECK { connect_timeout <INTEGER> #客户端请求的超时时长, 相当于haproxy的timeout server,多久连接不上就报错 nb_get_retry <INT> #重试次数 delay_before_retry <INT> #重试之前的延迟时长 connect_ip <IP ADDRESS> #向当前RS哪个IP地址发起健康状态检测请求,多网卡情况下 connect_port <PORT> #向当前RS的哪个PORT发起健康状态检测请求 xwddsdto <IP ADDRESS> #向当前RS发出健康状态检测请求时使用的源地址,多网卡情况下 xwddsd_port <PORT> #向当前RS发出健康状态检测请求时使用的源端口}

配置举例

virtual_server 10.0.0.100 80 { delay_loop 6 lb_algo wrr lb_kind DR persistence_timeout 120 protocol TCP sorry_server 10.0.0.101 80 real_server 10.0.0.11 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server 10.0.0.12 80 { weight 1 TCP_CHECK { connect_timeout 5 nb_get_retry 3 delay_before_retry 3 connect_port 80 } }} 五、使用ipvsadm查看keepalived配置的LVS规则 ipvsadm -Ln 六、VRRP Script配置

当Keepalived配合Nginx或HAProxy的时候,我们需要检测Nginx或HAProxy的存活;我们可以利用VRRP Script进行判断,当master的Nginx或HAProxy进程不存在时,优先级降到比backup低,将VIP切换到backup;当master的Nginx或HAProxy进程恢复时,优先级升到初始值,重新抢占VIP。

所以可以利用VRRP Script,来避免反向代理服务失效带来的转发失败。

定义脚本

vrrp_script <SCRIPT_NAME> { #定义一个检测脚本,在global_defs之外配置 script <STRING>|<QUOTED-STRING> #shell命令或脚本路径 interval <INTEGER> #间隔时间,单位为秒,默认1秒 timeout <INTEGER> #超时时间 weight <INTEGER:-254..254> #此值为负数,表示fall((脚本返回值为非0)时,会将此值与本节点权重相加可以降低本节点权重,如果是正数,表示 rise (脚本返回值为0)成功后,会将此值与本节点权重相加可以提高本节点权重,通常使用负值较多 fall <INTEGER> #脚本几次失败转换为失败,建议设为2以上 rise <INTEGER> #脚本连续监测成功后,把服务器从失败标记为成功的次数 user USERNAME [GROUPNAME] #执行监测脚本的用户或组 init_fail #设置默认标记为失败状态,监测成功之后再转换为成功状态}

调用脚本

vrrp_instance VI_1 { … track_script { script_name }}

生产配置

yum -y install psmisc -yvim /etc/keepalived/chk_nginx.sh#!/xwdds/bash/usr/xwdds/killall -0 nginxchmod a+x /etc/keepalived/chk_nginx.sh vrrp_script chk_nginx { script "/etc/keepalived/chk_nginx.sh " interval 1 weight -30 fall 3 rise 5 timeout 2}vrrp_instance VI_1 { … track_script { chk_nginx }}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。