keepalived高可用
来源:互联网 发布:淘宝网小众女鞋店 编辑:程序博客网 时间:2024/06/04 18:14
keepalived高可用:
架构图:
上图画的不对称好难看,将就下吧
根据上边一路走来,已经是搭好了从nginx主到服务器的这条线的,那么同理,使用nginx备机192.168.50.135上再搭建nginx,也是代理192.168.137和139两台服务器。搞了一次之后也就简单了
在192.168.50.135上安装nginx,配置nginx配置即可,不再赘述,nginx备机配置如下:
配置和上边的是一样的
........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
rpm –Uvh --nodeps ./openssl-
1.0
.1e-
30
.el6_6.
4
.x86_64.rpm
安装keepalived:
rpm -Uvh --nodeps ./keepalived-
1.2
.
7
-
3
.el6.x86_64.rpm
安装完毕后再/etc/keepalived/目录下有个文件 keepalived.conf即是本台服务器keepalived的核心配置文件了:
重点:keepalived配置,配置文件上边部分按照下面的配置就行了,配置文件后面的内容可以不用管,还没有去研究其他部分
先配置主机192.168.50.133的keepalived,按下边进行配置
! 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的值一致
! 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启动关闭命令:
service keepalived start
service keepalived stop
启动两台nginx,启动主机keepalived,启动备机keepalived服务。
这时,nginx主机在提供服务,备机是闲着的,虚拟ip是192.168.50.88,在主机和备机上使用命令
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启动要加在开机启动中。
- lvs + keepalived 高可用
- Keepalived+mysqlAB高可用
- rabbitmq+keepalived高可用
- keepalived 高可用集群
- keepalived高可用
- KeepAlived高可用Nginx
- keepalived高可用使用说明
- lvs+keepalived高可用
- keepalived高可用原理
- keepalived实现高可用
- keepalived高可用
- redis + keepalived 实现高可用
- nginx+keepalived 高可用方案
- nginx+keepalived实现高可用
- keepalived高可用集群介绍
- Redis 高可用方案Keepalived
- keepalived高可用简单搭建。
- Keepalived+Nginx高可用集群
- c# 判断一个字符串列表中是否已经包括指定字符
- AngularJS route与table表单
- DQL数据库查询语言
- Selenium学习二——自动登陆163邮箱并发送邮件
- 自定义ViewGroup显示历史搜索
- keepalived高可用
- HDU 3715 Go Deeper(二分+2-SAT总结)
- 交叉编译Linux arm
- 面试题39:二叉树的深度
- Merge Two Sorted Lists--LeetCode
- Linux
- ssm上传图片
- 进化算法(二)句子配对
- XStream转换时忽略未知字段