博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高可用和负载均衡学习笔记
阅读量:3958 次
发布时间:2019-05-24

本文共 6754 字,大约阅读时间需要 22 分钟。

负载均衡(LB):load balancer 化整为零

高可用(HA):High Avilibility 互相备份,互相替换 防止单点故障
好处:防止单点故障,保障系统的正常运行
坏处:多搞了服务器,加大投入。

HA 软件:

keepalived :开源免费,深度融合了LVS,可以实现高可用和负载均衡

heartbeat

HAproxy :可以实现高可用和负载均衡
LB 软件:

keepalived

keepalived 是一个用C语言编写的路由软件,主要目标是为Linux系统和基于Linux的基础设施提供负载平衡和高可用性设施。

负载均衡:是用LVS的(IPVS)内核模块提供Layer 4负载均衡。
高可用性:是通过VRRP协议。
VRRP是路由器故障转移的基本块。此外,Keepalied还实现了一组连接到VRRP有限状态机的钩子,提供了低速和高速的协议交互。为了提供最快的网络故障检测。

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

heartbeat是集群管理中保证集群高可用的一个服务软件

keepalived 是基于VRRP协议实现的

VRRP协议:虚拟路由冗余协议,可以认为是实现路由器高可用的一个协议

就是将多个相同功能的路由组成一个路由器组,

然后这个组里面有有个master和多个backup,这个路由器组它对外提供服务的是一个vip,虚拟ip,这个虚拟ip是放在master上面的,

这个master会定时的发送组播给所有的backup,当backup收不到master发送的vrrp包的时候就认为master已经挂掉了,

然后就会根据vrrp的优先级再选出一个backup来当master,从而保证了路由器的一个高可用

keepalived 主要有三个模块:core,check,vrrp

core:核心模块:负责进程的启动及维护,配置文件的加载和解析

check:负责进行健康检查,常见的检查方式:
vrrp模块是用来实现vrrp协议的

keepalived 的配置文件:keepalived.conf

配置域:

global_defs:
内容:邮件的配置,机器的标识
作用:是当发生故障的时候的通知对象以及机器的一些标识
static_ipaddress和static_ipaddress : 配置本节点的ip信息和路由信息
如果自己的机器上已经配置了ip和路由的话,这两个地方就不用再去配置了

vrrp_script

用来在健康检查的,当检查失败的时候,vrrp_script里面有一个权重值,vrrp_instance 里的priority就会减少相应的权重值
vrrp_instance
用来定义对外提供服务的vip及相关属性的
vrrp——rsync_group 它是用来定义vrrp_instance组的,可以使这个组内的成员动作一致
就是比如说有两个vrrp_instance在这个组里面,当其中一个vrrp_instance发生故障切换时,
另一个也会跟着切换,即使他没有发生故障

相关参数:

smtp_alert 表示是否开启邮件通知(用全局区域的邮件设置来发通知)
state 可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER,因此该项其实没有实质用途。
interface 节点固有IP(非VIP)的网卡,用来发VRRP包。
virtual_router_id 取值在0-255之间,用来区分多个instance的VRRP组播。
同一网段中virtual_router_id的值不能重复,否则会出错
可以用这条命令来查看该网络中所存在的vrid:tcpdump -nn -i any net 224.0.0.0/8
priority 用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)。
advert_int 发VRRP包的时间间隔,即多久进行一次master选举(可以认为是健康查检时间间隔)。
virtual_ipaddress vip,不解释了。
virtual_routes 虚拟路由,当IP漂过来之后需要添加的路由信息。

nopreempt 允许一个priority比较低的节点作为master,即使有priority更高的节点启动。

virtual_server_group一般在超大型的LVS中用到,一般LVS用不上这东西

keepalived主从切换

将backup的配置项里的priority选项的值调整的比master高50个点,然后再刷新一下配置文件就可以了
也可以将master的keepalive停止,让keepalived的backup们重新选举

keepalived 仅做HA时的配置

1,keepalived主机,配置文件
2,keepalived的备用机器 配置文件
3,vip,对内提供服务的内网ip地址
4,对外提供服务的公网ip地址

LVS+Keepalived配置

keepalived与LVS结合使用的时候。会用到一个工具ipvsadm
用来查看相关VS的状态

编译安装keepalived

去官网下载压缩包

解压
cd keepalived-xxx
./configure --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --mandir=/usr/share
make && make install

实验

master机器上和backup上做同等操作

1,安装keepalive

[root@master  ~]# yum intall keepalived -y 已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.没有该命令:intall。请使用 /usr/bin/yum --help[root@master  ~]# /usr/bin/yum install keepalived -y已加载插件:fastestmirror, product-id, search-disabled-repos, subscription-managerThis system is not registered with an entitlement server. You can use subscription-manager to register.Determining fastest mirrors * base: mirrors.aliyun.com * extras: mirrors.aliyun.com * updates: mirrors.njupt.edu.cnbase                                                                                                                   | 3.6 kB  00:00:00     extras                                                                                                                 | 2.9 kB  00:00:00     updates                                                                                                                | 2.9 kB  00:00:00     正在解决依赖关系--> 正在检查事务
查看keepalived 的版本
[root@master  ~]# keepalived -vKeepalived v1.3.5 (03/19,2017), git commit v1.3.5-6-g6fa32f2Copyright(C) 2001-2017 Alexandre Cassen, 
Build options: PIPE2 LIBNL3 RTA_ENCAP RTA_EXPIRES RTA_PREF FRA_OIFNAME FRA_SUPPRESS_PREFIXLEN FRA_TUN_ID RTAX_CC_ALGO RTAX_QUICKACK LIBIPTC LIBIPSET_DYNAMIC LVS LIBIPVS_NETLINK VRRP VRRP_AUTH VRRP_VMAC SOCK_NONBLOCK SOCK_CLOEXEC FIB_ROUTING INET6_ADDR_GEN_MODE SNMP_V3_FOR_V2 SNMP SNMP_KEEPALIVED SNMP_CHECKER SNMP_RFC SNMP_RFCV2 SNMP_RFCV3 SO_MARK

先备份(修改配置文件前先备份)

[root@swarm-manager keepalived]# cp keepalived.conf /root

修改配置文件

[root@master ~]# cd /etc/keepalived/[root@master  keepalived]# lskeepalived.conf[root@lb-nginx keepalived]# vim 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 30 router_id LVS_DEVEL vrrp_skip_check_adv_addr #vrrp_strict vrrp_garp_interval 0 vrrp_gna_interval 0}vrrp_instance VI_1 {
state BACKUP interface ens33 virtual_router_id 151 priority 100 advert_int 1 authentication {
auth_type PASS auth_pass 1111 } virtual_ipaddress {
192.168.200.16 }}

启动keepalived

[root@swarm-manager keepalived]# service keepalived start Redirecting to /bin/systemctl start keepalived.service#查看Keepalived 进程是否启动[root@lb-nginx keepalived]# ps aux |grep keepalivedroot      14407  0.0  0.0 122888  1412 ?        Ss   11:37   0:00 /usr/sbin/keepalived -Droot      14408  0.0  0.0 133848  3344 ?        S    11:37   0:00 /usr/sbin/keepalived -Droot      14409  0.0  0.0 133720  2656 ?        S    11:37   0:00 /usr/sbin/keepalived -Droot      14412  0.0  0.0 112728   976 pts/0    S+   11:38   0:00 grep --color=auto keepalived[root@master keepalived]# ip add1: lo: 
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 forever2: ens33:
mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:77:73:fe brd ff:ff:ff:ff:ff:ff inet 192.168.0.33/24 brd 192.168.0.255 scope global noprefixroute ens33 valid_lft forever preferred_lft forever inet 192.168.200.16/32 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.200.17/32 scope global ens33 valid_lft forever preferred_lft forever inet 192.168.200.18/32 scope global ens33 valid_lft forever preferred_lft forever inet6 fe80::20c:29ff:fe77:73fe/64 scope link valid_lft forever preferred_lft forever

keepalived --脑裂现象

什么是脑裂现象?

master和backup上都有vip

为什么会出现脑裂现象?

1, 两边的vrrp通告报文不能正常发送,可能是网络不通畅,或两边都有防火墙
使master发送的证明自己还活着的数据包不能成功发送给backup,两边联系不上了,backup也会生成vip,
2, master和backup的router id不同
3,优先级一样也会出现脑裂

脑裂的影响是什么?

不影响用户使用 ,如果是局域网的用户使用,反而还可以起到一个负载均衡的作用,但缺点是有随机性,不可控,决定权不在管理员的手中了,而是在arp缓存表里存的是哪个复杂载均衡器的mac地址(arp缓存表里一个ip只能对应一个mac),给管理员的管理带来了不便。

keepalived (高可用)和LVS (负载均衡)

LVS :DNAT

NGINX:FULLNAT
master和backup上必须要开启路由功能
并且real server要填写网关
双vip的使用场景:DNAT
nginx不需要使用双vip

转载地址:http://tmlzi.baihongyu.com/

你可能感兴趣的文章
表情包数据挖掘 | Mix群聊
查看>>
如何阅读科研论文
查看>>
理解本真的REST架构风格
查看>>
10款免费且开源的项目管理工具
查看>>
java调用javascript :js引擎rhino
查看>>
asp 中常用的文件处理函数
查看>>
ADO中sqlserver存储过程使用
查看>>
Linux KernelTech版FAQ 1.0
查看>>
ntfs分区iis故障的解决
查看>>
个人创业“六大死穴”
查看>>
最重要的 12个 J2EE 最佳实践
查看>>
通过Java Swing看透MVC设计模式
查看>>
Java 理论与实践: 关于异常的争论
查看>>
编写高效的线程安全类
查看>>
提高Java代码可重用性的三个措施
查看>>
编写跨平台Java程序注意事项
查看>>
富人和穷人的12个经典差异
查看>>
java 注意事项[教学]
查看>>
MetaWeblogAPI测试
查看>>
软件配置管理概念-1,介绍
查看>>