通过keepalived实现多主集群方案

2024-03-03 04:59

本文主要是介绍通过keepalived实现多主集群方案,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、 环境说明:
1、服务器列表:
proxy01:
eth0: 192.168.56.11 eth2: 192.168.156.11

proxy02:
eth0: 192.168.56.12 eth2: 192.168.156.12

proxy03:
eth0: 192.168.56.13 eth2: 192.168.156.13

 

2、拓扑图:

 

二、 实验步骤
1、 在所有节点上操作

# yum install –y keepalived haproxy

2、 proxy01节点配置

[root@proxy01 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVELvrrp_skip_check_adv_addr
#   vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_sync_group VG1 {group {VI_1VI_11}
}vrrp_sync_group VG2 {group {VI_2VI_12}
}vrrp_sync_group VG3 {group {VI_3VI_13}
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51##nopreempt 启用抢占模式priority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmac #启用vmac模式,会创建虚拟机接口,vip绑定到虚拟接口上vmac_xmit_base #发送和接收VRRP包的虚拟MAC地址unicast_src_ip 192.168.56.11unicast_peer {192.168.56.12192.168.56.13}virtual_ipaddress {192.168.56.101}
}vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 52priority 20##nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.11unicast_peer {192.168.56.12192.168.56.13
}virtual_ipaddress {192.168.56.102}
}vrrp_instance VI_3 {state BACKUPinterface eth0virtual_router_id 53priority 30advert_int 1##nopreemptauthentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.11unicast_peer {192.168.56.12192.168.56.13}virtual_ipaddress {192.168.56.103}
}vrrp_instance VI_11 {state BACKUPinterface eth2virtual_router_id 51##nopreemptpriority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.11unicast_peer {192.168.156.12192.168.156.13}virtual_ipaddress {192.168.156.101}
}vrrp_instance VI_12 {state BACKUPinterface eth2virtual_router_id 52priority 20#nopreemptadvert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.11unicast_peer {192.168.156.12192.168.156.13}virtual_ipaddress {192.168.156.102}
}vrrp_instance VI_13 {state BACKUPinterface eth2virtual_router_id 53priority 30advert_int 1#nopreemptauthentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.11unicast_peer {192.168.156.12192.168.156.13}virtual_ipaddress {192.168.156.103}
}

 

  

 

3、 proxy02节点配置

[root@proxy02 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalivedglobal_defs {router_id LVS_DEVELvrrp_skip_check_adv_addr
#   vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_sync_group VG1 {group {VI_1VI_11}
}vrrp_sync_group VG2 {group {VI_2VI_12}
}vrrp_sync_group VG3 {group {VI_3VI_13}
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51#nopreemptpriority 20advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.12unicast_peer {192.168.56.11192.168.56.13}virtual_ipaddress {192.168.56.101}
}vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 52#nopreemptpriority 30advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.12unicast_peer {192.168.56.11192.168.56.13}virtual_ipaddress {192.168.56.102}
}vrrp_instance VI_3 {state BACKUPinterface eth0virtual_router_id 53#nopreemptpriority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.12unicast_peer {192.168.56.11192.168.56.13}virtual_ipaddress {192.168.56.103}
}vrrp_instance VI_11 {state BACKUPinterface eth2virtual_router_id 51#nopreemptpriority 20advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.12unicast_peer {192.168.156.11192.168.156.13}virtual_ipaddress {192.168.156.101}
}vrrp_instance VI_12 {state BACKUPinterface eth2virtual_router_id 52#nopreemptpriority 30advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.12unicast_peer {192.168.156.11192.168.156.13}virtual_ipaddress {192.168.156.102}
}vrrp_instance VI_13 {state BACKUPinterface eth2virtual_router_id 53#nopreemptpriority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.12unicast_peer {192.168.156.11192.168.156.13}virtual_ipaddress {192.168.156.103}
}

 

  

 

4、 proxy03节点配置

[root@proxy03 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalivedglobal_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 30router_id LVS_DEVELvrrp_skip_check_adv_addr
#   vrrp_strictvrrp_garp_interval 0vrrp_gna_interval 0
}vrrp_sync_group VG1 {group {VI_1VI_11}
}vrrp_sync_group VG2 {group {VI_2VI_12}
}vrrp_sync_group VG3 {group {VI_3VI_13}
}vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51#nopreemptpriority 30advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.13unicast_peer {192.168.56.11192.168.56.12}virtual_ipaddress {192.168.56.101}
}vrrp_instance VI_2 {state BACKUPinterface eth0virtual_router_id 52#nopreemptpriority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.13unicast_peer {192.168.56.11192.168.56.12}virtual_ipaddress {192.168.56.102}
}vrrp_instance VI_3 {state BACKUPinterface eth0virtual_router_id 53#nopreemptpriority 20advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.56.13unicast_peer {192.168.56.11192.168.56.12}virtual_ipaddress {192.168.56.103}
}vrrp_instance VI_11 {state BACKUPinterface eth2virtual_router_id 51#nopreemptpriority 30advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.13unicast_peer {192.168.156.11192.168.156.12}virtual_ipaddress {192.168.156.101}
}vrrp_instance VI_12 {state BACKUPinterface eth2virtual_router_id 52#nopreemptpriority 10advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.13unicast_peer {192.168.156.11192.168.156.12}virtual_ipaddress {192.168.156.102}
}vrrp_instance VI_13 {state BACKUPinterface eth2virtual_router_id 53#nopreemptpriority 20advert_int 1authentication {auth_type PASSauth_pass 1111
}use_vmacvmac_xmit_baseunicast_src_ip 192.168.156.13unicast_peer {192.168.156.11192.168.156.12}virtual_ipaddress {192.168.156.103}
}

 

  

 

5、 启动服务

在所有节点操作
# systemctl enable keepalived.service && systemctl start keepalived.service

6、 结果验证

[root@proxy01 ~]# ip add 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:4b:3e:34 brd ff:ff:ff:ff:ff:ffinet 192.168.56.11/24 brd 192.168.56.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe4b:3e34/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:17:a2:bc brd ff:ff:ff:ff:ff:ffinet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic eth1valid_lft 85732sec preferred_lft 85732secinet6 fe80::a00:27ff:fe17:a2bc/64 scope link valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:ff:0e:a8 brd ff:ff:ff:ff:ff:ffinet 192.168.156.11/24 brd 192.168.156.255 scope global eth2valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:feff:ea8/64 scope link valid_lft forever preferred_lft forever
5: vrrp.51@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ff
6: vrrp.52@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ff
7: vrrp.53@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ffinet 192.168.56.103/32 scope global vrrp.53valid_lft forever preferred_lft forever
8: vrrp1.51@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ff
9: vrrp1.52@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ff
10: vrrp1.53@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ffinet 192.168.156.103/32 scope global vrrp1.53valid_lft forever preferred_lft forever[root@proxy02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:ee:7d:7e brd ff:ff:ff:ff:ff:ffinet 192.168.56.12/24 brd 192.168.56.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:feee:7d7e/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:a4:ce:2f brd ff:ff:ff:ff:ff:ffinet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic eth1valid_lft 85717sec preferred_lft 85717secinet6 fe80::a00:27ff:fea4:ce2f/64 scope link valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:6c:16:4d brd ff:ff:ff:ff:ff:ffinet 192.168.156.12/24 brd 192.168.156.255 scope global eth2valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe6c:164d/64 scope link valid_lft forever preferred_lft forever
5: vrrp.51@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ff
6: vrrp.52@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ffinet 192.168.56.102/32 scope global vrrp.52valid_lft forever preferred_lft forever
7: vrrp.53@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ff
8: vrrp1.51@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ff
9: vrrp1.52@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ffinet 192.168.156.102/32 scope global vrrp1.52valid_lft forever preferred_lft forever
10: vrrp1.53@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ff[root@proxy03 ~]# ip add 
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:87:1a:f0 brd ff:ff:ff:ff:ff:ffinet 192.168.56.13/24 brd 192.168.56.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:fe87:1af0/64 scope link valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:6e:be:14 brd ff:ff:ff:ff:ff:ffinet 10.0.3.15/24 brd 10.0.3.255 scope global dynamic eth1valid_lft 85696sec preferred_lft 85696secinet6 fe80::a00:27ff:fe6e:be14/64 scope link valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000link/ether 08:00:27:b0:64:83 brd ff:ff:ff:ff:ff:ffinet 192.168.156.13/24 brd 192.168.156.255 scope global eth2valid_lft forever preferred_lft foreverinet6 fe80::a00:27ff:feb0:6483/64 scope link valid_lft forever preferred_lft forever
5: vrrp.51@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ffinet 192.168.56.101/32 scope global vrrp.51valid_lft forever preferred_lft forever
6: vrrp.52@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ff
7: vrrp.53@eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ff
8: vrrp1.51@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:33 brd ff:ff:ff:ff:ff:ffinet 192.168.156.101/32 scope global vrrp1.51valid_lft forever preferred_lft forever
9: vrrp1.52@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:34 brd ff:ff:ff:ff:ff:ff
10: vrrp1.53@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN qlen 1000link/ether 00:00:5e:00:01:35 brd ff:ff:ff:ff:ff:ff

 

7、 总结
  之前我们用keepalived做集群时一般使用它构建服务器主从,也就是只有一个vip,并且这个vip只是在主节点上,当主节点宕机时,vip漂移到从节点上,从而实现高可用。但随着业务的发展,单个节点随之成为业务的性能瓶颈,及时我们使用的负载均衡再强大,服务器配置再高,也不可能单节点抗住所有流量。而通过这种方案,在keepalived的主从基础上扩展一下,通过配置多个vip,每个keepalived节点互为主从,正常情况下保证所有服务器都能拥有一个vip,然后通过dns负载均衡技术,将业务流量转发到每个vip。从而在一定程度上避免了单服务器的性能瓶颈。

转载于:https://www.cnblogs.com/edenlong/p/10078975.html

这篇关于通过keepalived实现多主集群方案的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/768521

相关文章

防止Linux rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

SpringBoot全局域名替换的实现

《SpringBoot全局域名替换的实现》本文主要介绍了SpringBoot全局域名替换的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录 项目结构⚙️ 配置文件application.yml️ 配置类AppProperties.Ja

Python实现批量CSV转Excel的高性能处理方案

《Python实现批量CSV转Excel的高性能处理方案》在日常办公中,我们经常需要将CSV格式的数据转换为Excel文件,本文将介绍一个基于Python的高性能解决方案,感兴趣的小伙伴可以跟随小编一... 目录一、场景需求二、技术方案三、核心代码四、批量处理方案五、性能优化六、使用示例完整代码七、小结一、

Java实现将HTML文件与字符串转换为图片

《Java实现将HTML文件与字符串转换为图片》在Java开发中,我们经常会遇到将HTML内容转换为图片的需求,本文小编就来和大家详细讲讲如何使用FreeSpire.DocforJava库来实现这一功... 目录前言核心实现:html 转图片完整代码场景 1:转换本地 HTML 文件为图片场景 2:转换 H

C#使用Spire.Doc for .NET实现HTML转Word的高效方案

《C#使用Spire.Docfor.NET实现HTML转Word的高效方案》在Web开发中,HTML内容的生成与处理是高频需求,然而,当用户需要将HTML页面或动态生成的HTML字符串转换为Wor... 目录引言一、html转Word的典型场景与挑战二、用 Spire.Doc 实现 HTML 转 Word1

C#实现一键批量合并PDF文档

《C#实现一键批量合并PDF文档》这篇文章主要为大家详细介绍了如何使用C#实现一键批量合并PDF文档功能,文中的示例代码简洁易懂,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言效果展示功能实现1、添加文件2、文件分组(书签)3、定义页码范围4、自定义显示5、定义页面尺寸6、PDF批量合并7、其他方法

SpringBoot实现不同接口指定上传文件大小的具体步骤

《SpringBoot实现不同接口指定上传文件大小的具体步骤》:本文主要介绍在SpringBoot中通过自定义注解、AOP拦截和配置文件实现不同接口上传文件大小限制的方法,强调需设置全局阈值远大于... 目录一  springboot实现不同接口指定文件大小1.1 思路说明1.2 工程启动说明二 具体实施2

Python实现精确小数计算的完全指南

《Python实现精确小数计算的完全指南》在金融计算、科学实验和工程领域,浮点数精度问题一直是开发者面临的重大挑战,本文将深入解析Python精确小数计算技术体系,感兴趣的小伙伴可以了解一下... 目录引言:小数精度问题的核心挑战一、浮点数精度问题分析1.1 浮点数精度陷阱1.2 浮点数误差来源二、基础解决

Java实现在Word文档中添加文本水印和图片水印的操作指南

《Java实现在Word文档中添加文本水印和图片水印的操作指南》在当今数字时代,文档的自动化处理与安全防护变得尤为重要,无论是为了保护版权、推广品牌,还是为了在文档中加入特定的标识,为Word文档添加... 目录引言Spire.Doc for Java:高效Word文档处理的利器代码实战:使用Java为Wo

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J