LVS+Keepalived群集

1、LVS高可用概念
lvs作为负载均衡器,所有请求都先到达lvs,可见lvs处于非常重要的位置,如果lvs服务器宕机后端web服务将无法提供服务,影响严重。
为了屏蔽负载均衡服务器的宕机,需要建立一个备份机。主服务器和备份机上都运行高可用(High Availability)监控程序,通过传送诸如“I am alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供负载均衡服务;当备份管理器又从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主服务器就开始再次提供负载均衡服务。

2、keepalived+lvs实现主备
keepalived是集群管理中保证集群高可用的一个服务软件,用来防止单点故障。
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当backup收不到VRRP包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和VRRP。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。VRRP模块是来实现VRRP协议的。
3、LVS的负载调度算法
轮询(Round Robin)
将收到的访问请求按照顺序轮流分配给群集中的各节点(真实服务器),均等地对待每一台服务器,而不管服务器实际的连接数和系统负载
加权轮询(Weighted Round Robin)
根据真实服务器的处理能力轮流分配收到的访问请求,调度器可以自动查询各节点的负载情况,并动态调整其权重
保证处理能力强的服务器承担更多的访问流量
最少连接(Least Connections)
根据真实服务器已建立的连接数进行分配,将收到的访问请求优先分配给连接数最少的节点
加权最少连接(Weighted Least Connections)
在服务器节点的性能差异较大的情况下,可以为真实服务器自动调整权重
权重较高的节点将承担更大比例的活动连接负载
三、实验:
在这里插入图片描述
漂移地址(VIP):20.0.0.10
主调度器:20.0.0.41
辅调度器:20.0.0.42
WEB服务器1:20.0.0.43
WEB服务器2:20.0.0.44
存储服务器:20.0.0.45
主调度服务器(20.0.0.41):
关闭防火墙和核心防护
●调整/proc响应参数

[root@localhost network-scripts]# vi /etc/sysctl.conf 
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0

[root@localhost network-scripts]# sysctl -p     //使其生效
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.ens33.send_redirects = 0  

●清除负载分配策略

[root@localhost /]# ipvsadm -C

●调整keepalived参数

[root@localhost ~]# yum -y install keepalived ipvsadm
[root@localhost ~]# cd /etc/keepalived/
[root@localhost keepalived]# cp keepalived.conf keepalived.conf.bak
[root@localhost keepalived]# vi keepalived.conf
global_defs {
   router_id HA_TEST_R1                  //本路由器的服务器名称  HA_TEST_R1
}
vrrp_instance VI_1 {                     //定义VRRP热备实列
   state MASTER                          //热备状态,master表示主服务器
   interface ens33                       //表示承载VIP地址的物理接口
   virtual_router_id 1                   //虚拟路由器的ID号,每个热备组保持一致
   priority 100                          //优先级,优先级越大优先级越高
   advert_int 1                        	 //通告间隔秒数(心跳频率)
   authentication {                      //认证信息,每个热备组保持一致
      auth_type PASS                     //认证类型
      auth_pass 123456                   //认证密码
   }
   virtual_ipaddress {                   //漂移地址(VIP),可以是多个
      20.0.0.10
   }
}

virtual_server 20.0.0.10 80 {				 //虚拟服务器地址(VIP)、端口
    delay_loop 15                       	 //健康检查的时间间隔(秒)
    lb_algo rr                         		 //轮询调度算法
    lb_kind DR                         		 //直接路由(DR)群集工作模式
    persistence 60                       	 //连接保持时间(秒),若启用请去掉!号
    protocol TCP                         	 //应用服务采用的是TCP协议

    real_server 20.0.0.43 80 {      		 //第一个WEB站点的地址,端口
        weight 1                       	     //节点的权重
        TCP_CHECK {                      	 //健康检查方式
	    connect_port 80                      //检查端口目标
	    connect_timeout 3                    //连接超时(秒)
	    nb_get_retry 3                       //重试次数
	    delay_before_retry 4                 //重试间隔(秒)
	}
    }
    real_server 20.0.0.44 80 {				 //第二个WEB站点的地址,端口
        weight 1
        TCP_CHECK {
	    connect_port 80
	    connect_timeout 3
	    nb_get_retry 3
	    delay_before_retry 4
	}
    }
}  
[root@localhost keepalived]# systemctl start keepalived                  ####启动keepalived
[root@localhost keepalived]# systemctl enable keepalived                 ####开机启动keepalived
[root@localhost keepalived]# ip addr show dev ens33                      ####查看主控制IP地址和漂移地址

辅调度器(20.0.0.42)和主调度器一样配置
存储服务器(20.0.0.45):

[root@localhost ~]# yum -y install nfs-utils
[root@localhost ~]# yum -y install rpcbind
[root@localhost ~]# systemctl start nfs
[root@localhost ~]# systemctl start rpcbind
[root@localhost ~]# vi /etc/exports
/opt/51xit 20.0.0.0/24 (rw,sync)
/opt/52xit 20.0.0.0/24 (rw,sync)
[root@localhost ~]# systemctl restart nfs
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable nfs
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# mkdir /opt/51xit /opt/52xit
[root@localhost ~]# echo "this is 51xit" >/opt/51xit/index.html
[root@localhost ~]# echo "this is 52xit" >/opt/52xit/index.html

配置web1节点服务器:
●配置虚拟IP地址

[root@localhost ~]# cd /etc/sysconfig/network-scripts/
[root@localhost network-scripts]# cp ifcfg-lo ifcfg-lo:0
[root@localhost network-scripts]# vi ifcfg-lo:0
DEVICE=lo:0
IPADDR=20.0.0.10
NETMASK=255.255.255.255
ONBOOT=yes
[root@localhost network-scripts]# ifup lo:0
[root@localhost network-scripts]# vi /etc/rc.local 
/sbin/route add -host 20.0.0.10 dev lo:0
[root@localhost network-scripts]# route add -host 20.0.0.10 dev lo:0

●调整/proc响应参数

[root@localhost network-scripts]# vi /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
[root@localhost network-scripts]# sysctl -p

安装httpd 挂载测试页

[root@localhost ~]# showmount -e 20.0.0.45  
Export list for 20.0.0.45:
/opt/51xit  (everyone)
/opt/52xit (everyone)

[root@localhost ~]# yum -y install httpd
[root@localhost ~]# mount 20.0.0.45:/opt/51xit /var/www/html/
[root@localhost ~]# vi /etc/fstab 
20.0.0.45:/opt/51xit/ /var/www/html/        nfs     rw,tcp,intr     0 1        
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# systemctl enable httpd

web2配置方法与web1一致

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值