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

keepalived+lvs集群,实现高可用

环境准备:两台虚拟机,关闭防火墙,selinux,配置阿里云仓库,配置epel

192.168.88.21 dr1 负载均衡器 master

192.168.88.22 dr2 负载均衡器 backup

192.168.88.23        rs1 web1

192.168.88.24        rs2 web2

实验说明:给主机配置一个虚拟IP192.168.88.100 当访问虚拟IP时,可以访问到nginx服务器下的项目。当主机服务器宕机时,备用机可以代替主机工作。当主机nginx服务挂掉后,实现自动启动nginx服务,保持项目可以随时访问。

一、安装Keepalived

1、在master上安装配置Keepalived  ipvsadm

yum install keepalived  ipvsadm -y

2、在master上修改配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {						
	router_id Director1    #两边不一样。
	}
	
vrrp_instance VI_1 {				
	state MASTER				#另外一台机器是BACKUP	
	interface ens33				#心跳网卡	
	virtual_router_id 51			#虚拟路由编号,主备要一致
	priority 150				#优先级	
	advert_int 1				#检查间隔,单位秒	
	authentication {
		auth_type PASS
		auth_pass 1111
		}
	virtual_ipaddress {
		192.168.88.100/24       dev      ens33   	#VIP和工作接口
		}
	}
	
virtual_server 192.168.88.100 80 {		#LVS 配置,VIP,就是keepalived配置的对外地址
	delay_loop 3				#服务论询的时间间隔,#每隔3秒检查一次real_server状态
	lb_algo rr				#LVS 调度算法
	lb_kind DR	 			#LVS 集群模式
	protocol TCP
	real_server 192.168.88.23 80 {
		weight 1                    #权重
		TCP_CHECK {
			connect_timeout 3       #健康检查方式,连接超时时间
			}
		}
	real_server 192.168.88.24 80 {
		weight 1
		TCP_CHECK {
			connect_timeout 3    #设定连接超时时间为3秒 超过视为掉线
			}
		}
}

3、在backup上安装配置Keepalived  ipvsadm

yum install keepalived   ipvsadm -y

4、在backup上修改配置文件

vim /etc/keepalived/keepalived.conf
! Configuration File for keepalived
global_defs {
        router_id Director2
        }

vrrp_instance VI_1 {
        state BACKUP                            #另外一台机器是BACKUP
        interface ens33                         #心跳网卡
        virtual_router_id 51
        priority 90                            #优先级
        advert_int 1                            #检查间隔,单位秒
        authentication {
                auth_type PASS
                auth_pass 1111
                }
        virtual_ipaddress {
                192.168.88.100/24 dev ens33       #VIP和工作端口
                }
        }

virtual_server 192.168.88.100 80 {                #LVS 配置,VIP
        delay_loop 3                            #服务论询的时间间隔
        lb_algo rr                              #LVS 调度算法
        lb_kind DR                              #LVS 集群模式
        protocol TCP
        real_server 192.168.88.23 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        }
                }
        real_server 192.168.88.24 80 {
                weight 1
                TCP_CHECK {
                        connect_timeout 3
                        }
                }
}

5、master和backup上启动服务

systemctl enable keepalived
 systemctl start keepalived

二、web1和web2配置

1、192.168.88.23(web1)和24(web2)安装nginx,并且设置开机自启

yum install -y nginx
systemctl start nginx
systemctl enable nginx

2、copy网卡配置文件,配置虚拟地址

cp /etc/sysconfig/network-scripts/{ifcfg-lo,ifcfg-lo:0}
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
IPADDR=192.168.88.100   #对外提供服务的地址
NETMASK=255.255.255.255
ONBOOT=yes
systemctl restart network

3、、配置路由

route add 192.168.88.100 dev lo

4、配置ARP

 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

三、测试: 观察lvs路由条目

1、master上 查询 # ipvsadm -Ln

ipvsadm -Ln

2、观察vip地址在哪台机器上

ip a

3、修改nginx默认项目文件,便于区分访问到那个服务器

web1

echo nginx111 > /usr/share/nginx/html/index.html

web2

echo nginx222 > /usr/share/nginx/html/index.html

4、客户端浏览器访问vip

5、关闭master上的keepalived服务,再次访问vip

systemctl stop keepalived.service 

6、关闭web1站点服务,再次访问VIP

systemctl stop nginx


http://www.kler.cn/a/320131.html

相关文章:

  • 【Compose multiplatform教程】05 IOS环境编译
  • STC的51单片机LED点灯基于KEIL
  • TCP 连接状态标识 | SYN, FIN, ACK, PSH, RST, URG
  • 【Linux】常见指令(一)
  • Sprint Boot教程之五十八:动态启动/停止 Kafka 监听器
  • ImageSharp图形库学习
  • 初识Jenkins持续集成系统
  • 《ElementUI/Plus 踩坑》el-table + sortablejs 拖拽顺序错乱(Vue2/3适用)
  • SSH 远程连接到 Linux 服务器上的 SQLite
  • 数据结构——广义表
  • uni-app+vue3微信小程序怎么获取 this.getTabBar()
  • 计算机网络(九) —— Tcp协议详解
  • Redisson分布式锁的概念和使用
  • Github 2024-09-25 C开源项目日报 Top9
  • Visual Studio Code的常用快捷键
  • 微服务3:微服务间接口远程调用(同步通信方式)
  • Git从了解到操作
  • layer弹层组件全面使用说明
  • 重修设计模式-概览
  • Springboot使用内置对象HttpServletRequest、HttpServletResponse
  • mysql查询某个库下所有表的数据量
  • 【深度学习】03-神经网络 5 (完结篇) 一文讲解 pytroch手机价格神经网络分类与准确率优化案例
  • 【nrm】npm 注册表管理器
  • react中diff的选择性子树渲染
  • Redis 键值对数据库学习
  • Recorder录音插件使用日记