Linux 高可用负载均衡集群的部署

高可用负载均衡集群

ipvs

负载均衡常用的有四种模式

DR

NAT

TUN

FULLNET

实验环境:准备四台rhel6.5的虚拟机四台。一台作为调度器server1,两台作为real server(server3,4),heartbeat服务关闭

172.25.50.10 server1.example.com

172.25.50.20 server2.example.com

172.25.50.30 server3.example.com

172.25.50.250 real50.example.com

172.25.50.40 server4.example.com

DR模式:

#ipvsadm -l 命令可以看到当前主机的调度策略

#ipvsamd -L

#iIpvsadm -C 清除当前策略

在server3和server4上都安装并且开启httpd服务,然后都在默认发布目录上写一个不同的测试页面:server3.example.com  server4.example,com

调度器server1上,添加一个172.25.50.100的ip

#   ip addr add 172.25.50.100/24 dev eth0

并且用真机ping 一下这个ip让真机缓存绑定一个MAC地址

在server1上添加策略:

ipvsadm -A -t 172.25.50.100:80 -s rr##rr表示轮询

ipvsadm -a -t 172.25.50.100:80 -r 172.25.50.30:80 -g

ipvsadm -a -t 172.25.50.100:80 -r 172.25.50.40:80 -g

.ipvsadm参数说明:

-C:清除表中所有的记录

-A:在服务器列表中新添加一套新的虚拟服务器记录

-a:在服务器列表中添加一体新的真实主机记录

-t:表示tcp服务

-u:表示udp服务

-r::真实服务器地址

-s:使用调度算法(rr | wrr | )

[[email protected] ~]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.50.100:http rr

-> server3.example.com:http     Route   1      0          0

-> server4.example.com:http     Route   1      0          0

在serevr3和server4上都添加ip:

#  ip addr add 172.25.50.100/32 dev eth0

测试:在浏览器上访问172.25.50.100,重复刷新,可以看到测试页面的变动

[[email protected] kiosk]# curl 172.25.50.100

<h1>serer3.example.com</h1>

[[email protected] kiosk]# curl 172.25.50.100

<h2>server4.example.com</h2>

这样做是有缺陷的。这样是不具备对服务的健康检查

当real server的服务宕机,在调度器上不能看到服务是否正常运行,在浏览器上可以看到网页时好时坏。

Arp

在server3和server4上安装arptables_jf.x86_64 0:0.0.8-23.el6

在server3和server4 上都执行以下策略

arptables -A IN -d 172.25.50.100 -j DROP

arptables -A OUT -s 172.25.50.100 -j mangle --mangle-ip-s 172.25.50.30

/etc/init.d/arptables_jf save

然后关闭server3的httpd服务

然后在调度器上server1上能够发现real serevr 上的服务故障

[[email protected] ha.d]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.50.100:http rr

-> server4.example.com:http     Route   1      0          0

在浏览器上只能看到serevr4的测试页面

[[email protected] kiosk]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] kiosk]# curl 172.25.50.100

<h2>server4.example.com</h2>

######将heartbeat加入负载均衡集群中:#####

[[email protected] ~]# ipvsadm -C  ##清除之前的策略

[[email protected] ~]# ipvsadm -L

[[email protected] ha.d]# rpm -qd ldirectord##查询这个软件的文档

/usr/share/doc/ldirectord-3.9.5/COPYING

/usr/share/doc/ldirectord-3.9.5/ldirectord.cf

/usr/share/man/man8/ldirectord.8.gz

[[email protected] ha.d]# cp /usr/share/doc/ldirectord-3.9.5/ldirectord.cf .

[[email protected] ha.d]# vim ldirectord.cf ##这个文件写着调度策略

25 virtual=172.25.50.100:80##虚拟ip

26         real=172.25.50.30:80 gate##真实主机的ip地址

27         real=172.25.50.40:80 gate

28         fallback=127.0.0.1:80 gate

29         service=http

30         scheduler=rr##策略:轮询

31         #persistent=600

32         #netmask=255.255.255.255

33         protocol=tcp

34         checktype=negotiate

35         checkport=80

36         request="index.html"

37 #       receive="Test Page"##检测真实主机上的测试测试页面是否一致

38 #       virtualhost=www.x.y.z

[[email protected] ha.d]# /etc/init.d/ldirectord start##启动ld

在server3上将httpd服务停了

在真机上:

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

调度器serverv1上:

[[email protected] ha.d]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.50.100:http rr

-> server4.example.com:http     Route   1      0          0

这时将server3上的httpd服务打开

这时负载均衡开始工作:

[[email protected] Desktop]# curl 172.25.50.100

<h2>server4.example.com</h2>

[[email protected] Desktop]# curl 172.25.50.100

<h1>serer3.example.com</h1>

[[email protected] ha.d]# /etc/init.d/ldirectord stop

[[email protected] html]# ip addr del 172.25.50.100/24 dev eth0

[[email protected] html]# /etc/init.d/httpd stop

[[email protected] html]# cd /etc/ha.d/

[[email protected] ha.d]# vim haresources

在最后一行添加:

server1.example.com IPaddr::172.25.50.100/24/eth0 ldirectord httpd

||||

添加虚拟ip启动脚本

[[email protected] ha.d]# scp haresources 172.25.50.20:/etc/ha.d/#发送到server2上

[[email protected] ha.d]# scp ldirectord.cf 172.25.50.20:/etc/ha.d/

[email protected]‘s password:

haresources                                   100% 5972     5.8KB/s   00:00

/etc/init.d/heartbeat restart##在serevr1和server2上都重新启动heartbeat

[[email protected] ha.d]# tail -f /var/log/messages    #用过日志查看服务启动情况

[[email protected] ha.d]# ipvsadm -l

IP Virtual Server version 1.2.1 (size=4096)

Prot LocalAddress:Port Scheduler Flags

-> RemoteAddress:Port           Forward Weight ActiveConn InActConn

TCP  172.25.50.100:http rr

-> server3.example.com:http     Route   1      0          0

-> server4.example.com:http     Route   1      0          0

在真机上测试:

[[email protected] Desktop]# for i in {1..8}; do curl 172.25.50.100; done

<h2>server4.example.com</h2>

<h1>serer3.example.com</h1>

<h2>server4.example.com</h2>

<h1>serer3.example.com</h1>

<h2>server4.example.com</h2>

<h1>serer3.example.com</h1>

<h2>server4.example.com</h2>

<h1>serer3.example.com</h1>

当realserver上任何一个的http服务挂了。另外一个realserver会一直接管httpd服务

当调度器中的server1挂了,server2会接管调度工作,保证系统正常运行

Keepalived+lvs

先关闭sererv1和server2的heartbeart服务

/etc/init.d/heartbeat stop

在server和server上都进行如下操作

tar zxf keepalived-1.2.24.tar.gz #第三方模块,在官网上去找

cd keepalived-1.2.24

yum install openssl-devel -y#编译文件

yum install libnl-devel -y

yum install libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm -y

rpm -ivh libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm

warning: libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

package libnfnetlink-devel-1.0.0-1.el6.x86_64 is already installe

cd keepalived-1.2.24

./configure --prefix=/usr/local/keepalived##编译,并指定安装路径,

make && make install

ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/#指定启动脚本软连接

ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/

ln -s /usr/local/keepalived/etc/keepalived /etc/

ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin

软连接设置后可以在后面的目录中生成一个新的文件,如果设置错了,把生成的新文件删除,再进行软连接设置即可。

编辑集群信息配置文件

[[email protected] etc]# cat /etc/keepalived/keepalived.conf

! Configuration File for keepalived

global_defs {

notification_email {

[email protected]#接收警报的 email 地址,可以添加多个

}

notification_email_from [email protected] #设置邮件的发送地址

smtp_server 192.168.200.1#设置 smtp server 地址

smtp_connect_timeout 30#设置连接 smtp 服务器超时时间

router_id LVS_DEVEL#load balancer 的标识 ID,用于 email 警报

vrrp_skip_check_adv_addr

vrrp_strict

vrrp_garp_interval 0

vrrp_gna_interval 0

}

vrrp_instance VI_1 {

state MASTER设置为主机###备机改为 BACKUP,此状态是由 priority 的值来决定的,当前priority 的值小于备机的值,那么将会失去 MASTER 状态

interface eth0#HA 监测网络接口

virtual_router_id 51##主、备机的 virtual_router_id 必须相同,取值 0-255

priority 100##优先级,备份机改为50,数字大的优先级高,主>备

advert_int 1#主备之间通告间隔秒数

authentication {

auth_type PASS##设置认证类型,pass  或者 AH

auth_pass 1111##设置验证密码

}

virtual_ipaddress {#设置虚拟 IP 地址,可以设置多个虚拟 IP 地址,每行一个

172.25.50.100

}

}

virtual_server 172.25.50.100 80 {#定义虚拟服务器

delay_loop 6#每隔 6 秒查询 realserver 状态

lb_algo rr#每隔 6 秒查询 realserver 状态

lb_kind DR#LVS 是用 DR 模式

#    persistence_timeout 50

protocol TCP#指定转发协议类型,有 tcp 和 udp 两种

real_server 172.25.50.30 80 {#配置服务节点

weight 1配置服务节点的权值,权值大小用数字表示,数字越大,权

值越高,设置权值的大小可以为不同性能的服务器分配不同的负载,可以对性能高的服务器设

置较高的权值,而对性能较低的服务器设置相对较低的权值,这样就合理的利用和分配了系统

资源

TCP_CHECK {#realserve 的状态检测设置部分,单位是秒

connect_timeout 3#3 秒无响应超时

nb_get_retry 3#重复次数

delay_before_retry 3#重试间隔

}

}

real_server 172.25.50.40 80 {

weight 1

TCP_CHECK {

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

注意:红色字体只有 备机  keepalived配置只改动红色部分

将配置文件复制到备机server2上,并进行修改

将server3和server4上的httpd服务开启,并设置vip:

ip addr add 172.25.50.100/32 dev eth0l两台realserver都添加

将server1和server2上的keepalived服务开启。

测试:

1. 高可用测试:停止 master 上的 keepalived 服务,看 backup 是否接管。

2. 负载均衡测试:访问 http://192.168.0.163,看到页面在两个 realserver 上切换表示成功!

你也可以通过 ipvsadm -Lnc 查看详细连接情况!

3. 故障切换测试:任意关闭 realserver 上的 httpd 服务,Keepalived 监控模块是否能及时发现,

然后屏蔽故障节点,同时将服务转移到正常节点来执行

时间: 2024-07-30 13:46:44

Linux 高可用负载均衡集群的部署的相关文章

Linux高可用负载均衡 集群理解

高可用集群HA的实现方式Heartbeat 当然还有其它如Keeplive 负载均衡群集LB的实现方式. (1).硬件LB(比较出名的)F5;BIG-IP系列.Citri;公司的 NetScaler系列.A10 公司的 AX系列 (2).软件LB 四层:LVS(Linux VirtualServer) 注:国人开发的.七层:Nginx,HAProxy 高可用负载均衡 在配置HA时  服务器的VIP不需要在setup中设置子接口,heartbeat会创建 在配置LB时  LB服务器的VIP 需要在

nginx+keepalived的高可用负载均衡集群构建

实验架构图: 实验环境 Nginx和Keepalived原理介绍 参考博客:http://467754239.blog.51cto.com/4878013/1541421 1.nginx Nginx进程基于于Master+Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能.在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发, 从而达到Master进程的存活高可靠性,Slave(worker)进程所有的业务信号都 由主进程发出,Slave(wor

HAProxy高可用负载均衡集群部署

HAProxy高可用负载均衡集群部署 基本信息: 系统平台:VMware WorkStation 系统版本: CentOS Linux release 7.2.1511 (Core) 内核版本: 3.10.0-327.el7.x86_64 集群架构: 前端:HAProxy 1.虚拟FQDN:www.simpletime.net 2.VIP:192.168.39.1:DIP:172.16.39.50 3.调度服务器:Varnish1.Varnish2 4.调度算法:URL_Hash_Consist

使用Nginx1.9.9+Keepalived1.2.x搭建高可用负载均衡集群

一 简介以及原理介绍 (1)Nginx概念介绍: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行.由俄罗斯的程序设计师Igor Sysoev所开发.其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度.京东.新浪.网易.腾讯.淘宝等 (2)Keepalived概念介绍: Keepalived的作用是检测服务器的状态,如果有一台we

LVS+Keepalived搭建MyCAT高可用负载均衡集群

LVS+Keepalived 介绍 LVS LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统.本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一.目前有三种IP负载均衡技术(VS/NAT.VS/TUN和VS/DR),十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq). Keepalvied Keepalived在这里主要用作RealServer的健康状态检查以及Mast

Haproxy+Keepalived搭建Weblogic高可用负载均衡集群

配置环境说明:   KVM虚拟机配置 用途 数量 IP地址 机器名 虚拟IP地址 硬件 内存3G  系统盘20G cpu 4核 Haproxykeepalived 2台 192.168.1.10192.168.1.20 Haserver01Haserver02 192.168.30192.168.40 内存6G  系统盘20G cpu 4核 Weblogic 4台 192.168.1.100192.168.1.150 192.168.1.200 192.168.1.250 Clusters01C

Keepalived+Nginx实现高可用负载均衡集群

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64nginx-1.10.2-1.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64 二 原理及拓扑图 1.vrrp协议在现实的网络环境中,两台需要通信的主机大多数情况下并没有直接的物理连接.对于这样的情况,它们之间路由怎样选择?主机如何

Keepalived+LVS(dr)高可用负载均衡集群的实现

一 环境介绍 1.操作系统CentOS Linux release 7.2.1511 (Core) 2.服务keepalived+lvs双主高可用负载均衡集群及LAMP应用keepalived-1.2.13-7.el7.x86_64ipvsadm-1.27-7.el7.x86_64httpd-2.4.6-45.el7.centos.x86_64mariadb-5.5.52-1.el7.x86_64php-5.4.16-42.el7.x86_64 二 原理及拓扑图 1.vrrp协议vrrp(Vir

DNS+keepalived+lvs实现高可用负载均衡集群

1.目的: 部署两台lvs调度器并利用keepalived实现主主模型,DNS添加两条A记录指向lvs调度器实现轮询,最终实现高可用负载均衡集群效果 2.拓扑规划: 3.配置实践 (1)同步所有机器时间 在每台机器实行ntp同步: [[email protected] ~]# ntpdate 10.1.0.1 26 Oct 20:10:57 ntpdate[5533]: step time server 10.1.0.1 offset -32408.643564 sec (2)先配置RS,在RS