栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

高可用DR-HA实操

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

高可用DR-HA实操

一、高可用理论

1.问题引入
  • 如果LVS挂掉了(单点故障)怎么办,会出现什么问题?

    所有用户都看不到,业务下线

  • 如果RS挂掉的话,会出现什么问题?

    一部分用户会访问异常,LVS还存有RS的负载记录

2.问题解决
  • 单点故障解决方式:既然是一个宕掉,就用多台(一变多)

    (一)主备(使用较多)

    • 方向性
    • 效率性

    (二)主主

为了方便理解,我们举一个例子

皇帝 - > 皇子们

  1. 方向性

    • 皇子们轮训主动观察监视皇上(备轮询主)
    • 皇上上朝,主动对外发布自己的行动,但这里有一个重试的机制,也就是如果发现皇上3天都没有上朝的话就准备替代皇上(主通告备)
  2. 效率性

    如果皇上3天没上朝了,皇子们认为皇上驾崩了,那么谁来登基呢?

    如果没有加什么条件,皇子们通过争抢的方式来替代的话,会争抢很多轮,抢不下来

    所以我们加了一个权重值,通过权重值来判定谁来替代皇帝

    也就是备用机替代主机是通过推选制而不是争夺制

扩展:

​ 我们常听到主从和主备的概念,这两个相同是同一个东西么?

  1. 主从:有主有从,各司其职,是分布式的,在这里面主还是单点的,所以一般在主从中还会对主服务器进行主备的高可用设置
  2. 主备:有主无备
  • RS挂了怎么确定?

    如果回答ping地址,是不对的.

    原因:访问一下,验证的是底层中的应用层的http协议

    解决方式:发请求,判断返回200 OK

问题:怎么实现主备呢?

  • lvs:内核中有模块:ipvs->增加代码?
  • 第三方实现?
  • 人来监控 然后响应?(最不靠谱)

企业追求自动化,所以把人解耦出去,用程序来进行代替方向性和效率性对应的操作 ->keepalived!

通过keepalived代替自动运维,解决单点故障,实现HA

  1. 监控自己服务
  2. Master通告自己还活着,Backup监听Master状态,Master挂了,一堆Backup推举出新的Master
  3. 配置vip,添加ipvs(keepalived有配置文件)
  4. 对后端server做健康检查

tip:

  • keepalived是一个通用的工具,主要作为HA实现
  • nginx可以作为公司的负载均衡来用,nginx成为了单点故障,也可以用keepalived来解决
二、DR-HA(keepalived)实践

1.详情步骤
基于上次我们做的负载均衡实验,我们进行高可用的实验.
	所以node1,node2,node3为已经负载均衡的机器
keepalived实验:
主机: node01~node04
node01:
后续直接通过keepalived自动配置lvs和网卡,所以我们先清理掉
	ipvsadm -C     清除lvs
	ifconfig eth0:8 down 清除网卡

----------------------------
node01,node04:
	yum install keepalived ipvsadm -y
	配置:
		cd  /etc/keepalived/
		cp keepalived.conf keepalived.conf.bak  备份,防止改错
		vi keepalived.conf 修改配置
			node01:
1.配置vrrp协议(vrrp:虚拟路由冗余协议)
				
				vrrp_instance VI_1 {
					state MASTER         //  node04  BACKUP(主从状态)
					interface eth0
					virtual_router_id 51
					priority 100		 //	 node04	 50(优先级)
					advert_int 1
					authentication {
						auth_type PASS
						auth_pass 1111
					}
					virtual_ipaddress {
						192.168.188.100/24 dev eth0 label  eth0:3
					}
				}
				
2.配置虚拟服务,相当于lvs配置
			
			
			virtual_server 192.168.150.100 80 { //相当于配置A(访问进入)
				delay_loop 6
				lb_algo rr
				lb_kind DR
				nat_mask 255.255.255.0
				persistence_timeout 0          // (因为不同用户访问,会在服务器开辟内存资源,所以为了避免资源浪费,设置规定时间内访问就负载到之前访问的那台服务器上)
				protocol TCP

				real_server 192.168.150.12 80 { //相当于配置A(访问出去)
					weight 1
					HTTP_GET {
						url {
						  path /
						  status_code 200
						}
						connect_timeout 3
						nb_get_retry 3
						delay_before_retry 3
					}   
				}       
				real_server 192.168.150.13 80 {
					weight 1
					HTTP_GET {
						url {
						  path /
						  status_code 200
						}
						connect_timeout 3
						nb_get_retry 3
						delay_before_retry 3
					}
				}
			scp  ./keepalived.conf  root@node04:`pwd`
			
	linux命令:
			3 dd :删除3行
			O:向上新开一行
			tab:切进来
			d G 删除当前到最后的所有
			.,$-1y  赋值当前行到最后的文本
			p 粘贴
			r 替换
			scp  ./keepalived.conf  root@192.168.188.104:`pwd`   远程拷贝
2.扩展
扩展:	
	通过帮助程序man学习
	指令:
		yum install man
	哪里不会写了就把哪儿的文字复制命令上:例如我们不知道virural_ipaddress这里应该咋写,
    	man 5 keepalived.conf 然后再/vitural_ipaddress

问题:所有主备中,主宕了之后又能抢回主?

回答:lvs是,其他的不一定,要参考成本复杂度

  • lvs没有数据同步(因为是数据包转发),所以能直接抢回,但如果不lvs就不一定
  • 在大数据中nameNode还考率数据同步问题,如果又抢回主的话会出现用户请求阻塞,在这段时间来进行数据的同步,会导致业务下线

因为keepalived会对后端server做健康检查(主备),如果RS其中一台挂掉的话,他会在ipvsadm -ln 中剔除掉不健康的,

备机也是一样,这样就不会存在服务器宕机了之后,部分用户请求不到的情况

如果RS又修复好了,那么会有加载上,而这一切的操作对于用户来说是透明的

3.验证HA
  • 验证主备(ipvsadm -lnc)

    1. 删除node1的eth0网卡(可以关机,在这里我们直接把node1网卡删除)

      • 命令 ifconfig eth0 down

      • 结果

        1. 用户访问依旧

        2. node1和node4的lvs(-a,-A)配置均启动

        3. node1的eth0:3剔除,node4的eth0:3启动

        4. 用户访问走node4负载均衡

    2. .恢复node1的eth0网卡

      • 命令 ifconfig eth0 up
      • 结果
        1. 用户访问依旧
        2. node1的eth0:3启动,node4的eth0:3剔除
        3. 用户访问走node1负载均衡
  • 验证RS宕机

    1. 关闭node2的httpd服务

      • 命令 ipvsadm -ln (查看ipvs转发对应服务信息)

      • 结果 剔除了对应的负载均衡的信息

    2. 开启node2的httpd服务

      • 命令 ipvsadm -ln (查看ipvs转发对应服务信息)

      • 结果 恢复了对应的负载均衡的信息

三、总结
keepalived功能:
	1. 监控自己服务
	2. Master通告自己还活着,Backup监听Master状态,Master挂了,一堆Backup推举出新的Master
	3. 配置vip,添加ipvs(keepalived有配置文件)
	4. 对后端server做健康检查
    根据上述功能,我们对/etc/keepalived中的keepalived.conf文件进行配置,并启动
问题:
	
	
	演示:通过杀死httped健康检查的进程(模拟keepalived异常退出)
	
	问题:
		两台主机都配了vip,且没有剔除对应的lvs的转发服务器的设置,从而导致数据包紊乱
				(破坏了原子性,三次握手紊乱,连接建立不起来,数据包丢弃)
		
四、问题引入 1.问题提出

​ keepalived异常退出,出现的问题?

2.问题模拟

​ 通过杀死httped健康检查的进程(模拟keepalived异常退出)

3.演示结果
  1. 两台主机都配了vip
  2. 没有剔除对应的lvs的转发服务器的设置,
  3. 从而导致数据包紊乱(破坏了原子性,三次握手紊乱,连接建立不起来,数据包丢弃)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/641729.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号