keepalived高可用

keepalived高可用:

架构图:

上图画的不对称好难看,将就下吧

根据上边一路走来,已经是搭好了从nginx主到服务器的这条线的,那么同理,使用nginx备机192.168.50.135上再搭建nginx,也是代理192.168.137和139两台服务器。搞了一次之后也就简单了

在192.168.50.135上安装nginx,配置nginx配置即可,不再赘述,nginx备机配置如下:

配置和上边的是一样的

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
........upstream blank {
         #ip_hash;
         server  192.168 . 50.137 : 8080 ;
         server  192.168 . 50.139 : 8080 ;
}
     
     server {
         listen        80 ;
         server_name  localhost;
 
         #charset koi8-r;
 
         #access_log  logs/host.access.log  main;
 
         location / {
             proxy_pass http: //blank;
             root   html;
             index  index.html index.htm;
         }........

 

那么现在就是相当于有两套nginx了,代理的服务器是一样的,为什么要搞两套?

假设只有一台nginx的话,这个nginx服务器挂了。那怎么办?

所以需要一台备份nginx。

正常情况下,主nginx作为反向代理服务器即可,假设nginx服务器挂了的话,能够立即切换到备份机上,保证用户可以访问,然后运维人员把主nginx服务器故障修好之后,又能够自动切换到主nginx提供服务。通过keepalived来监测两台服务器,正常情况时,将nginx主服务器ip(192.168.50.133)绑定到keepalived定义的一个虚拟ip(我设置为192.168.50.88)上,通过这个虚拟IP可以访问nginx,然后备机(192.168.50.135)啥事不干,就是每隔一小段时间(设置为1秒)keepalived会告诉备机,你不用管,我还活着呢,如果突然主机死了,那么就会超过一秒备机没有收到主机或者的消息,那么备机马上接管主机,keeplived将虚拟ip绑定到备机身上,网站继续提供服务。

突然主机又复活了(运维人员排除故障了),那么备机又将收到主机的活着的消息,于是将管理权交回给主机,虚拟ip又绑到主机上,大概就是这么个过程,个人理解。

 

 先在两台nginx服务器(主备)上都装上keepalived:

 下载:这里使用rpm安装,是区分32,64位的,不要搞错了哦

keepalived-1.2.7-3.el6.x86_64.rpm

openssl-1.0.1e-30.el6_6.4.x86_64.rpm

要求必须是openssl-1.0.1e或以上才行、如果版本已经符合(因为安装nginx时已经安装openssl,使用yum安装应该是符合的)、不用再安装openssl,使用 rpm -q openssl 查看当前openssl版本,我这已经是1.0.1e 48的,所以就不安装了

将两个rpm安装包上传到两台nginx服务器,进入上传到的目录,运行以下命令安装:--nodeps是忽略依赖包,当然最好是把依赖包装上,去掉--nodeps可以看到错误,需要哪些依赖包

如果需要安装openssl

1
rpm –Uvh --nodeps ./openssl- 1.0 .1e- 30 .el6_6. 4 .x86_64.rpm

 安装keepalived:

1
  rpm -Uvh --nodeps ./keepalived- 1.2 . 7 - 3 .el6.x86_64.rpm

安装完毕后再/etc/keepalived/目录下有个文件 keepalived.conf即是本台服务器keepalived的核心配置文件了:

重点:keepalived配置,配置文件上边部分按照下面的配置就行了,配置文件后面的内容可以不用管,还没有去研究其他部分

先配置主机192.168.50.133的keepalived,按下边进行配置

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
! Configuration File  for  keepalived
 
#这是全局配置
global_defs {
    #指定keepalived在发生切换时需要发送email到的对象,一行一个
    notification_email {
      acassen @firewall .loc
      failover @firewall .loc
      sysadmin @firewall .loc
    }
    #指定发件人
    notification_email_from Alexandre.Cassen @firewall .loc
    #指定smtp服务器地址
    #smtp_server  192.168 . 200.1
    #指定smtp连接超时时间
    #smtp_connect_timeout  30
    #运行keepalived机器的一个标识
    router_id LVS_DEVEL
}
 
#主备配置
vrrp_instance VI_1 {
     #标示状态为MASTER 备份机为BACKUP
     state MASTER
     #设置keepalived实例绑定的服务器网卡,一般为eth0,linux使用ifconfig命令可查看当前服务器网卡标识名
     interface  eth0
     #同一实例下(即同一组主备机下)virtual_router_id必须相同
     virtual_router_id  51
     #MASTER权重要高于BACKUP,MASTER为 100 则BACKUP最大为 99
     priority  100
     #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒,设置为 1
     advert_int  1
     #设置认证
     authentication {
         #主从服务器验证方式,PASS为明文密码验证
         auth_type PASS
         #密码
         auth_pass  1111
     }
     #设置虚拟IP,与我们的主备机在同一网段下,最后一位随便给就是拉,可以设置多个,换行即可
     virtual_ipaddress {
         192.168 . 50.88
     }
}

 

备机192.168.50.135的keepalived配置:

备机配置注意的地方:需要修改state为BACKUP , priority比MASTER低,virtual_router_id和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
! Configuration File  for  keepalived
 
#这是全局配置
global_defs {
    #指定keepalived在发生切换时需要发送email到的对象,一行一个
    notification_email {
      acassen @firewall .loc
      failover @firewall .loc
      sysadmin @firewall .loc
    }
    #指定发件人
    notification_email_from Alexandre.Cassen @firewall .loc
    #指定smtp服务器地址
    #smtp_server  192.168 . 200.1
    #指定smtp连接超时时间
    #smtp_connect_timeout  30
    #运行keepalived机器的一个标识
    router_id LVS_DEVEL
}
 
#主备配置
vrrp_instance VI_1 {
     #备机为BACKUP
     state BACKUP
     #备机网卡标识,一般都是eth0,先查询一下
     interface  eth0
     #virtual_router_id必须与主机相同
     virtual_router_id  51
     #权重,备机必须比主机小
     priority  99
     #MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒,设置为 1
     advert_int  1
     #认证,与主机一致
     authentication {
         auth_type PASS
         auth_pass  1111
     }
     #虚拟IP,绑定的虚拟ip与主机一致
     virtual_ipaddress {
         192.168 . 50.135
     }
}

 

酱紫,keepalived就配置完成了。

keeplived启动关闭命令:

1
2
service keepalived start
service keepalived stop

 

启动两台nginx,启动主机keepalived,启动备机keepalived服务。

这时,nginx主机在提供服务,备机是闲着的,虚拟ip是192.168.50.88,在主机和备机上使用命令

1
ip addr

 可以发现:

主机:可以看到,192.168.50.133 带有虚拟ip192.168.50.88,在浏览器中输入192.168.50.88,即可访问到主nginx192.168.50.133.然后转发到tomcat服务器上

 

浏览器访问虚拟ip:192.168.50.88,效果如下

 

 

 

 备机:ip addr命令执行:可以看到,备机nginx没有绑定虚拟ip

 

 以上是初始状态下的情况,也是正常服务的情况。

 

现在测试高可用,假设主机nginx服务器挂了,模拟为关闭nginx主机或者将keepalived服务停止,那么主机上keepalived死了就没办法告诉备机自己活着,而备机超过1秒没有接收到主机给自己的消息,马上接管虚拟ip,同时在配置文件中配置切换主备机时发送邮件,此时开发团队收到邮件即知道主机挂了,马上去排除主机的故障。

将主机上的keepalived服务停止,service keepalived stop ,然后查看虚拟ip绑定情况,

主机挂了:可以看到虚拟ip就没有绑在主机上

备机情况:虚拟ip已经绑定到备机,此时主机虽然挂了,但是切换到备机上了(发现故障和切换的时间差最大也就是1秒),虚拟ip也绑到备机上了,访问虚拟ip,就会请求备机nginx然后转发到web服务器实现高可用。

 

 

 运维人员收到邮件后就去排除主机故障了,搞定之后(模拟为keepalived服务启动),这时主机告诉备机,我又活了,于是备机将管理权又交给主机(切换为主机nginx提供服务):

主机keepalived服务启动后,即吧主机维护好之后:可以看到,虚拟ip又自动绑到了主机上

 

 

 备机情况,主机活了之后,备机转交管理权,虚拟ip切换到主机上,备机不绑定虚拟ip,貌似启动keepalived服务之后并不能马上切回,应该是起服务需要点时间吧,但是不影响,这段时间还是备机绑定虚拟IP的

 

 这就是keepalived高可用的模拟。

 

注意问题:

主机挂了之后,主机nginx恢复时,一定要将nginx也启动,否则即使虚拟ip切换到了主机上,但是主机nginx没起那也是没法转发的。所以要把nginx启动要加在开机启动中。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值