云网牛站
所在位置:首页 > Linux云服务器 > KeepAlived高可用

KeepAlived高可用

2018-05-06 20:48:33作者:kut稿源:开源中国

作为一个架构师,不了解高可用,那真是说不过去。如果一个系统崩溃而没有自动切换备用系统的能力的时候,这真是架构师最大的罪过。

KeepAlived则是实现高可用的神器,有了它,实现高可用的分布式系统易如反掌。有了KeepAlived,实现MySQL读写分离兼高可用就相当容易。

以前我是不知道有这么一货的,总以为前面有台Nginx做反向代理,后面堆APP服务器即可。可是从来没想过如果Nginx也挂了怎么办?Nginx 一般不会挂吧,我总是这么想,如果挂了,那是上天对我的惩罚,我也认了。

这里举个简单的例子,我们要对外公开一个运行于192.168.122.49上的服务器,以提供网站访问。为了实现在192.168.122.49上的高可用,其实实际提供网站服务的是192.168.122.40,如果192.168.122.40挂掉的话,这时192.168.122.41会自动顶上,但是对于外部访问者来说,由始自终都是在访问192.168.122.49,并没有感觉到后台服务崩溃。

 

一、准备

准备两台Linux,这里是Ubuntu Linux 18.04 server:

192.168.122.40 # 主服务

192.168.122.41 # 备份服务

我们在各服务器上安装Nginx,以运行一个网站,不同的服务器显示不同的内容,以验证KeepAlived是否生效。

$ sudo apt install nginx

修改/var/www/html/index.nginx-debian.html文件:

192.168.122.40

<html>

<head>

<title>192.168.122.40</title>

</head>

<body>

192.168.122.40

</body>

</html>

192.168.122.41

<html>

<head>

<title>192.168.122.41</title>

</head>

<body>

192.168.122.41

</body>

</html>

安装KeepAlived:

$ sudo apt install keepalived

 

二、配置

1.我们先配置主服务器,也就是192.168.122.40配置文件/etc/keepalived/keepalived.conf:

# 主节点

vrrp_instance v0 {

#指定该节点为主节点

state MASTER

#绑定虚拟IP的网络接口

interface ens3

#VRRP组名,两个节点设置一样,以指明各个节点同属一VRRP组

virtual_router_id 40

#主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低

priority 50

#组播信息发送间隔,两个节点需一致

advert_int 1

#设置验证信息,两个节点需一致

authentication {

auth_type PASS

auth_pass 1111

}

#指定虚拟IP,两个节点需设置一样

virtual_ipaddress {

192.168.122.49

}

}

# 虚似IP信息,这里是192.168.122.49,端口:80

virtual_server 192.168.122.49 80 {

#设定检查间隔

delay_loop 6

#指定LVS算法

lb_algo rr

#指定LVS模式

lb_kind NAT

nat_mask 255.255.255.0

#持久连接设置,会话保持时间

persitence_timeout 50

#转发协议为TCP

protocol TCP

#后端实际TCP服务配置

real_server 192.168.122.40 80 {

weight 1

}

}

2.配置备份服务器,也就是192.168.122.40配置文件/etc/keepalived/keepalived.conf:

# 主节点

vrrp_instance v1 {

#指定该节点为主节点

state BACKUP

#绑定虚拟IP的网络接口

interface ens3

#VRRP组名,两个节点设置一样,以指明各个节点同属一VRRP组

virtual_router_id 40

#主节点的优先级,数值在1~254,注意从节点必须比主节点的优先级别低

priority 30

#组播信息发送间隔,两个节点需一致

advert_int 1

#设置验证信息,两个节点需一致

authentication {

auth_type PASS

auth_pass 1111

}

#指定虚拟IP,两个节点需设置一样

virtual_ipaddress {

192.168.122.49

}

}

# 虚似IP信息,这里是192.168.122.49,端口:80

virtual_server 192.168.122.49 80 {

#设定检查间隔

delay_loop 6

#指定LVS算法

lb_algo rr

#指定LVS模式

lb_kind NAT

nat_mask 255.255.255.0

#持久连接设置,会话保持时间

persitence_timeout 50

#转发协议为TCP

protocol TCP

#后端实际TCP服务配置

real_server 192.168.122.41 80 {

weight 1

}

}

3.重启动KeepAlived:

$ sudo service keepalived restart

 

三、测试

1.直接访问192.168.122.49,内容是192.168.122.40。

2.关闭192.168.122.40,再访问192.168.122.49,内容是192.168.122.41。

3.启动192.168.122.40,再访问192.168.122.49,内容是`192.168.122.40。

 

四、总结

这种凭空弄出个IP(192.168.122.49)的方式真的很有趣,特别容易做MySQL的高可用。

 

相关主题

编译安装nginx服务器并手动编写自动化运行脚本

精选文章
热门文章