Keepalived+LVS+Nginx负载均衡之高可用


  一、Keepalived介绍

   Keepalived是分布式部署系统解决系统高可用的软件,结合LVS(Linux Virtual Server)使用,其功能类似于heartbeat,解决单机宕机的问题。

 


 

  二、Keepalived技术原理

   keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。通过VRRP协议结合LVS,对组群服务器监控情况,若master出现宕机情况,则将VIP漂移到backup机上。实现了分布式系统高可用。可以理解为:keepalived是LVS的管理软件,根据监控情况,将宕机服务器从ipvsadm移除掉。

 


 

  三、Keepalived+LVS+Nginx实现系统高可用

  Keepalived+LVS+Nginx负载均衡之高可用_第1张图片

 
服务器 IP地址 说明
虚拟IP 192.168.1.120:80  
主机 192.168.1.104:80  
备机 192.168.1.103:80  
Web站点A 192.168.1.101:8081 不同端口
Web站点B 192.168.1.101:8082 不同端口

 

 

  

 

 

  1、安装ipvsadm,CentOS7自带安装包,通过yum进行安装。实现系统支持LVS

?
1
yum install ipvsadm

  2、安装Keepalived软件,并将keepalived设置开机启动

?
1
yum install Keepalived
?
1
systemctl enable keepalived

  

  3、进行Keepalived.conf配置,如果是MASTER机,将state BACKUP改为state MASTER。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
vim /etc/keepalived/keepalived.conf
#配置的内容
! Configuration File for keepalived
 
global_defs {
    notification_email {
      [email protected] #收到通知的邮件地址
    }
    notification_email_from [email protected]
    smtp_server 127.0.0.1
    smtp_connect_timeout 30
    router_id LVS_DEVEL
}
 
vrrp_script monitor_nginx{
    script "/usr/local/etc/keepalived/script/monitor_nginx.sh"
    interval 1
    weight -15
}
 
vrrp_instance VI_1 {
     state BACKUP
     interface eno16777736
     virtual_router_id 51
     priority 80
     advert_int 1
     authentication {
         auth_type PASS
         auth_pass 1111
     }
     virtual_ipaddress {
         192.168.1.120
     }
     track_script {
         monitor_nginx
     }
}
 
virtual_server 192.168.1.120 80 {
     delay_loop 6
     lb_algo wrr
     lb_kind DR
     persistence_timeout 50
     protocol TCP
 
     real_server 192.168.1.103 80 {
         weight 1
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 80
         }
     }
 
     real_server 192.168.1.104 80 {
         weight 5
         TCP_CHECK {
             connect_timeout 10
             nb_get_retry 3
             delay_before_retry 3
             connect_port 80
         }
     }
}

  4、配置监控shell脚本

?
1
2
3
4
5
6
7
8
9
10
(1)创建:vim /usr/local/etc/keepalived/script/monitor_nginx.sh

(2)SHELL文件内容
#!/bin/bash 
if [ "$(ps -ef | grep " nginx: master process "| grep -v grep )" == "" ]
then 
     systemclt start nginx.service
     sleep 5   
   if [ "$(ps -ef | grep " nginx: master process "| grep -v grep )" == ""
   then  
     killall keepalived 
   fi 
fi

  现在我们对nginx进行配置:

安装Nginx和配置

  1、Nginx介绍

  Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的工程师Igor Sysoev研发,供俄国大型的入口网站Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好。

 

  2、安装部署  

  在CentOS7通过命令行安装Nginx服务器。

  (1)添加Nginx仓储,添加 epel repository

sudo yum install epel-release

  (2)检查是否已安装过nginx 

find -name nginx

  (3)如果有安装则删除

yum remove nginx

  (4)安装nginx

sudo yum install nginx

  (5)启动nginx

sudo systemctl start nginx
sudo systemctl enable nginx #可用

  (6)将nginx 设置为启动系统自动启动nginx

echo "/usr/local/nginx/sbin/nginx" >> /etc/rc.local

  (7)查看本机IP,为了后续配置nginx.conf所用

ifconfig

  (8)修改nginx.conf配置文件

cd /etc/nginx/ #定位到nginx安装目录
vim nginx.conf #通过vim打开nginx.conf配置文件进行配置

  (9)主要配置节点,192.168.119.1:8081 和 192.168.119.1:8082 分别部署在 IIS7的两个ASP.NET MVC 开发的站点(在另一台电脑),设计软件架构解决方案后续介绍。

复制代码
upstream 192.168.119.128{
    server 192.168.119.1:8081;
    server 192.168.119.1:8082;
}


server{
    listen   80;
    server_name  192.168.119.128;
    location /{ proxy_pass http://192.168.119.128;  } }

(10)重启nginx服务

service nginx restart


如下对功能进行验证测试。

 


 

  四、实现测试展示

   1、访问系统情况:通过VIP(192.168.1.120)访问系统页面。因为设置了轮询调度,所以刷新页面访问不同站点。

  Keepalived+LVS+Nginx负载均衡之高可用_第2张图片      Keepalived+LVS+Nginx负载均衡之高可用_第3张图片

 

  2、将 MASTER(192.168.1.104)关机前后,查看相关VLS情况:

  (1)关机前:Keepalived+LVS+Nginx负载均衡之高可用_第4张图片

  (2)关机后:Keepalived+LVS+Nginx负载均衡之高可用_第5张图片

  我们看到将104服务器从 LVS移除掉。此时则将后续请求转发到103服务器。

 

  3、关机后,BACKUP服务器 keepalived日志显示无法连接104,并移除掉

  Keepalived+LVS+Nginx负载均衡之高可用_第6张图片

  5、开机后,将自动检测到服务器正常,并加入LVS中。

  


 

你可能感兴趣的:(架构)