当前位置: 首页 > article >正文

keepalived和lvs高可用集群

keepavlied和lvs高可用集群搭建

主备模式:

在这里插入图片描述

关闭防火墙和selinux

systemctl stop firewalld
setenforce 0

部署master负载调度服务器 zyj86

安装ipvsadm keepalived

yum install -y keepalived ipvsadm

修改主节点配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost #邮件设置
   }
   notification_email_from root@localhost
   #发邮件的地址
   smtp_server 127.0.0.1
   #邮件服务器地址
   smtp_connect_timeout 30
   #邮件服务器连接timeout
   router_id zyjhost86 #每个keepalived主机的唯一标识,建议使用主机名
   vrrp_skip_check_adv_addr
   #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
   #vrrp_strict
   #严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。
   vrrp_garp_interval 0
   #gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟
   vrrp_gna_interval 0 
   #unsolicited NA messages (不请自来)消息发送延迟
}

vrrp_instance VI_1 {
    state MASTER 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 51 
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 100 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 1111 #认证信息
    }
    virtual_ipaddress {
        192.168.3.188 #虚拟ip地址
    }
}

#虚拟地址 端口
virtual_server 192.168.3.188 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}
systemctl enable --now keepalived.service

部署backup负载调度服务器 zyj87

安装ipvsadm keepalived

yum install -y keepalived ipvsadm

修改备用节点配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost #邮件设置
   }
   notification_email_from root@localhost
   #发邮件的地址
   smtp_server 127.0.0.1
   #邮件服务器地址
   smtp_connect_timeout 30
   #邮件服务器连接timeout
   router_id zyjhost87 #每个keepalived主机的唯一标识,建议使用主机名
   vrrp_skip_check_adv_addr
   #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
   #vrrp_strict
   #严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。
   vrrp_garp_interval 0
   #gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟
   vrrp_gna_interval 0 
   #unsolicited NA messages (不请自来)消息发送延迟
}

vrrp_instance VI_1 {
    state BACKUP 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 51 
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 99 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 1111 #认证信息
    }
    virtual_ipaddress {
        192.168.3.188 #虚拟ip地址
    }
}

#虚拟地址 端口
virtual_server 192.168.3.188 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}
systemctl enable --now keepalived.service

keepalived会在ens160网卡上生成一个vip虚拟地址192.168.3.188

[root@zyj86 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:0c:29:29:83:01 brd ff:ff:ff:ff:ff:ff
    altname enp3s0
    inet 192.168.3.86/24 brd 192.168.3.255 scope global noprefixroute ens160
       valid_lft forever preferred_lft forever
    inet 192.168.3.188/32 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe29:8301/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

当主节点(192.168.3.86 zyj86)宕机后vip虚拟地址(192.168.3.188)会飘移到备用节点上即(192.168.3.87 zyj87)主机上。

部署后端服务器zyj88

#配置lo口ip地址
ifconfig lo:1 192.168.3.188/32
echo "ifconfig lo:1 192.168.3.188/32" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
#加入以下配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#刷新配置
sysctl -p

安装web服务器 写入测试页面

yum install httpd -y
echo "zyj88" > /var/www/html/index.html
systemctl enable --now httpd

部署后端服务器zyj89

#配置lo口ip地址
ifconfig lo:1 192.168.3.188/32
echo "ifconfig lo:1 192.168.3.188/32" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
#加入以下配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#刷新配置
sysctl -p

安装web服务器 写入测试页面

yum install httpd -y
echo "zyj89" > /var/www/html/index.html
systemctl enable --now httpd

访问测试:
在这里插入图片描述

互为主备模式:

在这里插入图片描述

关闭防火墙和selinux

systemctl stop firewalld
setenforce 0

部署master/backup负载调度服务器 zyj86

安装ipvsadm keepalived

yum install -y keepalived ipvsadm

修改负载调度服务器 zyj86配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost #邮件设置
   }
   notification_email_from root@localhost
   #发邮件的地址
   smtp_server 127.0.0.1
   #邮件服务器地址
   smtp_connect_timeout 30
   #邮件服务器连接timeout
   router_id zyjhost86 #每个keepalived主机的唯一标识,建议使用主机名
   vrrp_skip_check_adv_addr
   #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
   #vrrp_strict
   #严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。
   vrrp_garp_interval 0
   #gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟
   vrrp_gna_interval 0 
   #unsolicited NA messages (不请自来)消息发送延迟
}

vrrp_instance VI_1 {
    state MASTER 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 51 
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 100 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 1111 #认证信息
    }
    virtual_ipaddress {
        192.168.3.188 #虚拟ip地址
    }
}

#互为主备就再加一组配置
vrrp_instance VI_2 {
    state BACKUP 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 40
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 90 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 2222 #认证信息
    }
    virtual_ipaddress {
        192.168.3.199 #虚拟ip地址
    }
}

#虚拟地址 端口
virtual_server 192.168.3.188 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}

#互为主备就再加一组配置
#虚拟地址 端口
virtual_server 192.168.3.199 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}
systemctl enable --now keepalived.service

部署master/backup负载调度服务器 zyj87

安装ipvsadm keepalived

yum install -y keepalived ipvsadm

修改负载调度服务器 zyj87配置

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived

global_defs {
   notification_email {
     root@localhost #邮件设置
   }
   notification_email_from root@localhost
   #发邮件的地址
   smtp_server 127.0.0.1
   #邮件服务器地址
   smtp_connect_timeout 30
   #邮件服务器连接timeout
   router_id zyjhost86 #每个keepalived主机的唯一标识,建议使用主机名
   vrrp_skip_check_adv_addr
   #对所有通告报文都检查,会比较消耗性能,启用此配置后,如果收到的通告报文和上一个报文是同一个路由器,则跳过检查,默认值为全检查
   #vrrp_strict
   #严格遵守VRRP协议,启用此项后以下状况将无法启动服务:1.无VIP地址 2.配置了单播邻居 3.在VRRP版本2中有IPv6地址,开启动此项并且没有配置vrrp_iptables时会自动开启iptables防火墙规则,默认导致VIP无法访问,建议不加此项配置。
   vrrp_garp_interval 0
   #gratuitous ARP messages 免费ARP报文发送延迟,0表示不延迟
   vrrp_gna_interval 0 
   #unsolicited NA messages (不请自来)消息发送延迟
}

vrrp_instance VI_1 {
    state MASTER 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 51 
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 100 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 1111 #认证信息
    }
    virtual_ipaddress {
        192.168.3.188 #虚拟ip地址
    }
}

#互为主备就再加一组配置
vrrp_instance VI_2 {
    state MASTER 
    #当前节点在此虚拟路由器上的初始状态,状态为MASTER或者BACKUP
    interface ens160
    virtual_router_id 40
    #每个虚拟路由器惟一标识,范围:0-255,每个虚拟路由器此值必须唯一,否则服务无法启动,同属一个虚拟路由器的多个keepalived节点必须相同,务必要确认在同一网络中此值必须唯一
    priority 95 #优先级,master优先级一定要大于backup
    #当前物理节点在此虚拟路由器的优先级,范围:1-254,值越大优先级越高,每个keepalived主机节点此值不同
    advert_int 1 #master和backup之间通告间隔的秒数(心跳频率)
    authentication {
        auth_type PASS #认证信息
        auth_pass 2222 #认证信息
    }
    virtual_ipaddress {
        192.168.3.199 #虚拟ip地址
    }
}

#虚拟地址 端口
virtual_server 192.168.3.188 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}

#互为主备就再加一组配置
#虚拟地址 端口
virtual_server 192.168.3.199 80 {
    delay_loop 6
    #健康间隔时间6秒
    lb_algo rr
    #调度算法轮询
    lb_kind DR
    #lvs模式为DR直连路由模式
    persistence_timeout 50
    #连接保持时间为50 可以修改为0 轮询较快
    protocol TCP
    #采用协议
    
#后端真实服务器节点的ip地址
    real_server 192.168.3.88 80 {
        weight 1
        #节点权重
          TCP_CHECK {
          connect_port 80
          #检查目标端口
          connect_timeout 3
          #连接超时 
          nb_get_retry 3
          #重试次数
          delay_before_retry 3
          #重试间隔时间
        }
        #tcp检测后端服务器节点是否正常
    }

    real_server 192.168.3.89 80 {
        weight 1
          TCP_CHECK {
          connect_port 80
          connect_timeout 3
          nb_get_retry 3
          delay_before_retry 3
        }
    }

}
systemctl enable --now keepalived.service

部署后端服务器zyj88

#配置lo口ip地址
ifconfig lo:1 192.168.3.188/32
ifconfig lo:2 192.168.3.199/32
echo "ifconfig lo:1 192.168.3.188/32" >> /etc/rc.d/rc.local
echo "ifconfig lo:2 192.168.3.199/32" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
#加入以下配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#刷新配置
sysctl -p

安装web服务器 写入测试页面

yum install httpd -y
echo "zyj88" > /var/www/html/index.html
systemctl enable --now httpd

部署后端服务器zyj89

#配置lo口ip地址
ifconfig lo:1 192.168.3.188/32
ifconfig lo:2 192.168.3.199/32
echo "ifconfig lo:1 192.168.3.188/32" >> /etc/rc.d/rc.local
echo "ifconfig lo:2 192.168.3.199/32" >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local

#添加系统只响应目的IP为本地IP的ARP请求
#系统不使用原地址来设置ARP请求的源地址,而是物理mac地址上的IP
vim /etc/sysctl.conf
#加入以下配置
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2

#刷新配置
sysctl -p

安装web服务器 写入测试页面

yum install httpd -y
echo "zyj89" > /var/www/html/index.html
systemctl enable --now httpd

访问测试:

在这里插入图片描述
关闭其中一台调度器再测试

访问测试:
在这里插入图片描述


http://www.kler.cn/news/294920.html

相关文章:

  • 一次关于生产环境服务无故宕机的排查过程
  • 顶刊精析|METI:整合细胞形态与空间转录组学的肿瘤微环境分析框架·24-09-06
  • MySQL面试题大全和详解,含SQL例子
  • EF框架删除数据
  • Hive是什么?
  • 模型压缩之剪枝
  • Openharmony 图片自适应全屏显示
  • C++系统教程002-数据类型(01)
  • pytorch torch.gather函数介绍
  • 运维工程师面试题--Linux加分项
  • Mysql(一) - 数据库操作, 表操作, CRUD
  • CMU 10423 Generative AI:lec3(阅读材料:GPT1论文解读)
  • 申万宏源证券完善金融服务最后一公里闭环,让金融服务“零距离、全天候”
  • 币安/欧易合约对冲APP系统开发
  • 【BuuCTF】BadySQli
  • C语言 | Leetcode C语言题解之第392题判断子序列
  • 小程序端pinia持久化
  • 2工作队列
  • 如何应对日益复杂的网络攻击?Edge SCDN(边缘安全加速)的应用场景探讨
  • 解决yarn安装依赖报错:certificate has expired at TLSSocket.onConnectSecure
  • 探索 MATLAB 中的 rem 函数:余数计算与应用
  • Find 方法、where 子句以及 AsNoTracking 方法各自有不同的用途和性能
  • 为libpng不同架构创建构建目录、编译、安装以及合并库文件的所有步骤。
  • python基础语法四-数据可视化
  • HTTP与HTTPS在软件测试中的解析
  • 使用modelsim小技巧
  • Mysql数据库表结构迁移PostgreSQL
  • springboot组件使用-mybatis组件使用
  • 《云原生安全攻防》-- K8s攻击案例:高权限Service Account接管集群
  • IPv6归属地查询-IPv6归属地接口-IPv6归属地离线库