频道栏目
首页 > 系统 > Linux > 正文

lvs/DR模式+keepalived实现负载集群高可用架构

2018-09-29 15:02:07      个评论      
收藏   我要投稿

lvs+keepalived实现负载集群高可用架构

keepalived工作原理和配置说明

keepalived是什么

keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障。

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协议的。

\

VRRP是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台

VRRP是一种路由容错协议,也可以叫做备份路由协议

VRRP(Virtual Router Redundancy Protocol,虚拟路由冗余协议)是一种容错协议

服务环境搭建

实验主机环境介绍:

主机使用版本 : redhat rhe6.5

iptables stop 以及 selinux disablesl

主机ip :172.25.254.79

MASTER: wyx1 :172.25.79.1

Realserver1 :wyx2 : 172.25.79.2 vip 172.25.79.111 (仅对同一WLAN用户开放)

Realserver1 :wyx3: 172.25.79.3 vip 172.25.79.111 (仅对同一WLAN用户开放)

BACKUP : wyx4 :172.25.79.4

wyx1 配置

下载keepalived安装包并进行减压

root@wyx1 /]# tar zxf keepalived-2.0.6.tar.gz

[root@wyx1 /]# cd /keepalived-2.0.6(必须在此目录中,才能进行如下操作)

安装 openssl-devel

[root@wyx1 ~]# yum install -y openssl-devel

\

编译软件

[root@wyx1 keepalived-2.0.6]# ./configure --with-init=SYSV

[root@wyx1 keepalived-2.0.6]# ./configure --with-init=SYSV --prefix=/usr/local/keepalived

[root@foundation79 Desktop]# make&&make install

\

设置权限

[root@wyx1 keepalived-2.0.6]# chmod +x /usr/local/keepalived/etc/rc.d/init.d/keepalived

设置软链接

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/keepalived/ /etc/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived/etc/sysconfig/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/

[root@wyx1 init.d]# ln -s /usr/local/keepalived/sbin/keepalived /sbin/

\

设置开机自启

[root@wyx1 keepalived-2.0.6]# chkconfig keepalived on

[root@wyx1 keepalived-2.0.6]# chkconfig keepalived --list

keepalived 0:off 1:off 2:on 3:on 4:on 5:on 6:off

[root@wyx1 keepalived-2.0.6]# /etc/init.d/keepalived start

Starting keepalived:

查看进程 。开启keepalived 服务后会开启3个进程

[root@wyx1 keepalived-2.0.6]# ps -ef |grep keepalived

root 932 1 0 21:41 00:00:00 keepalived -D 父进程:内存管理,子进程管理等等

root 935 932 0 21:41 00:00:00 keepalived -D 子进程:VRRP子进程

root 936 932 0 21:41 00:00:00 keepalived -D 子进程:healthchecker子进程

配置keepalived 文件

global_defs { ##全局定义

notification_email { ##邮件

root@localhost

}

##notification_email指定keepalived在发生事件(切换),需要发送email到的对象。可以有多个,每行一个

##指定keepalived在发送事件(切换),需要发送email到的对象。可以有多个。在下添加

notification_email_from keepalived@localhost

smtp_server 127.0.0.1 ##指定发送email的smtp服务器

smtp_connect_timeout 30 ##指定时间为30秒

router_id LVS_DEVEL ##负载均衡标示

}

vrrp_instance示例配置

主要定义vrrp_sync_group里面的每个组的漂移 IP等

vrrp_instance VI_1 {

state MASTER ##指定instance的初始化状态,当2台装有keepalived的机子开启时,会发生竞争,master 为主backup为辅

interface eth0 ##绑定的网卡

virtual_router_id 51 ##vrid 标示

priority 100 ##prioity等级为100,master要比backup高最少50

advert_int 1 ##检查间隔,默认1S

authentication { ##设置认证

auth_type PASS ##认证方式为PASS或者AH

auth_pass 1111 ## 认真的密码

}

virtual_ipaddress {

172.25.79.111 ##指定飘逸地址,

}

}

虚拟服务块配置

virtual server IP port

virtual_server 172.25.79.111 80 { ##服务vip以及服务端口

delay_loop 6 ##延时时间

lb_algo rr ##lvs调度算法 为轮询

lb_kind DR ##lvs的集群模式为DR

#persistence_timeout 50 ##会话保持时间

protocol TCP ##所用协议为TCP

real_server 172.25.79.2 80 {

weight 1 ##默认为1,0为失效

TCP_CHECK { ##tcp方式的健康检查

connect_timeout 3

retry 3

delay_before_retry 3

}

}

real_server 172.25.79.3 80 {

weight 1

TCP_CHECK {

connect_timeout 3

retry 3

delay_before_retry 3

}

wyx4与wxy1 类似

只需要改变

vrrp_instance VI_1 {

state BACKUP ##指定instance的初始化状态,当2台装有keepalived的机子开启时,会发生竞争,master 为主backup为辅

interface eth0 ##绑定的网卡

virtual_router_id 51 ##vrid 标示

priority 50 ##prioity等级为100,master要比backup高最少50

advert_int 1 ##检查间隔,默认1S

authentication { ##设置认证

auth_type PASS ##认证方式为PASS或者AH

auth_pass 1111 ## 认真的密码

}

virtual_ipaddress {

172.25.79.111 ##指定飘逸地址,

}

}

WYX2 配置

安装http服务

[root@wyx2 ~]# yum install httpd -y

编辑默认发布目录

[root@wyx2 ~]# cat /var/www/html/index.html

www.wyx.org: wyx2

启动http服务

[root@wyx2 ~]# /etc/init.d/httpd start

Starting httpd: httpd: Could not reliably determine the server's fully qualified domain name, using 172.25.79.2 for ServerName

[ OK ]

添加vip

[root@wyx2 ~]# ip addr add 172.25.79.111/24 dev eth0

[root@wyx2 ~]# ip addr

1: lo: mtu 16436 qdisc noqueue state UNKNOWN

link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

inet 127.0.0.1/8 scope host lo

inet6 ::1/128 scope host

valid_lft forever preferred_lft forever

2: eth0: mtu 1500 qdisc pfifo_fast state UP qlen 1000

link/ether 52:54:00:77:c2:f5 brd ff:ff:ff:ff:ff:ff

inet 172.25.79.2/24 brd 172.25.79.255 scope global eth0

inet 172.25.79.111/24 scope global secondary eth0

inet6 fe80::5054:ff:fe77:c2f5/64 scope link

valid_lft forever preferred_lft forever

对外隐藏vip

[root@wyx2 ~]# arptables -A IN -d 172.25.79.111 -j DROP

[root@wyx2 ~]# arptables -A OUT -s 172.25.79.111 -j mangle --mangle-ip-s 172.25.79.2

保存修改

[root@wyx2 ~]# /etc/init.d/arptables_jf save

wyx 3与wyx2类似

只需要更改http的默认发目录内容

安装http服务

[root@wyx3 ~]# yum install httpd -y

编辑默认发布目录

[root@wyx3 ~]# cat /var/www/html/index.html

www.wyx.org: wyx3

测试

wyx1 MAC: 52:54:00:d7:33:0f

wyx2 MAC: 52:54:00:77:c2:f5

wyx3 MAC: 52:54:00:e6:31:59

wyx4 MAC: 52:54:00:0f:0c:31

负载均衡及健康检测测试

[root@foundation79 Desktop]# for i in {1..10};do curl 172.25.79.111;done

\

当关闭 wyx2 上的http服务时

如下图该服务健康检测到wyx2http已经停止则不输出wyx2,之间输入wyx3的http默认发布目录

\

高可用测试:

主备机器都开启时:

由图得,对比MAC地址发现此时发挥作用的是主机wyx1

\

此时wyx1的ip情况为

vdip已经自动添加

\

备机wyx4

vdip没有添加

\

当主机wxy1的keepalived停止

由图得,对比MAC地址发现此时发挥作用的是备机wyx4

\

查看主机wyx1的ip

刚才的vdip已经不存在

\

查看备机wyx4的ip

发现vdip已经添加

\

总结:lvs+keepalived可以实现对于服务的负载均衡以及健康检查 和 高可用

上一篇:vim配置python轻量IDE
下一篇:Linux实用指令之echo解析
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站