怎么通过lvs+keepalived+ppache2 实现在ubuntu server 14.10下三个独立网关的集群

怎么通过lvs+keepalived+ppache2 实现在ubuntu server 14.10下三个独立网关的集群,第1张

实验环境:

LVS和keepalived介绍:

1keepalived的设计目标是构建高可用的LVS负载均衡群集,可以调用ipvsadm工具来创建虚拟服务器,管理服务器池,而不仅仅用来做双机热备。

使用keepalived构建LVS群集更加简便易用,主要优势体现在:

对LVS负载调度器实现热备切换,提高可用性;

对服务器池中的节点进行健康检查,自动移除失效节点,恢复后再重新加入。

2在基于LVS+Keepalived实现的LVS群集结构中,至少包括两台热备的负载调度器,两台以上的节点服务器,本例将以DR模式的LVS群集为基础,增加一台从负载调度器,使用Keepalived来实现主、从调度器的热备,从而构建建有负载均衡、高可用两种能力的LVS网站群集平台。

3通过LVS+Keepalived构建的LVS集群,LVS负载均衡用户请求到后端tomcat服务器,Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

Keepalived简介

什么是Keepalived:keepalived可以实现服务的高可用或热备,用来防止单点故障的问题;而Keepalived的核心VRRP协议,VRRP协议主要实现了在路由器或三层交换机处的冗余;Keepalived就是使用VRRP协议来实现高可用的;下面一起来看一下Keepalived的原理图:

LVS+Keepalived高可用负载均衡集群架构实验

Keepalived启动后会有三个进程:

父进程:内存管理,子进程管理

子进程:VRRP子进程

子进程:healthchecker子进程

由上图可知:

两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,healthchecker子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让它删除通告,并且去掉虚拟IP,转换为BACKUP状态;

实验架构图:

LVS+Keepalived高可用负载均衡集群架构实验

1 <BR>

实验过程:

HA高可用集群构建前提:

1proxy和proxy2节点时间必须同步;

建议使用ntp协议进行;

参考博客:http://sohudrgonblog51ctocom/3088108/1598314

2、节点之间必须要通过主机名互相通信;

建议使用hosts文件;

通信中使用的名字必须与其节点为上“uname -n”命令展示出的名字保持一致;

[root@proxy ~]# cat /etc/hosts

127001 localhost localhostlocaldomain localhost4 localhost4localdomain4

::1 localhost localhostlocaldomain localhost6 localhost6localdomain6

1721601 servermagelinuxcom server

172163152 proxystu31com proxy

172163153 proxy2stu31com proxy2

172163150 tom1stu31com tom1

172163151 tom2stu31com tom2

3、节点之间彼此root用户能基于ssh密钥方式进行通信;

节点proxy:

# ssh-keygen -t rsa -P ""

# ssh-copy-id -i ssh/id_rsapub proxy2

节点proxy2:

# ssh-keygen -t rsa -P ""

# ssh-copy-id -i ssh/id_rsapub proxy

测试ssh无密钥通信:

123 [root@proxy ~]# date ; ssh proxy2 date

Sat Jan 17 15:29:26 CST 2015

Sat Jan 17 15:29:26 CST 2015

一配置安装LVS+keepalived

1在Master与Backup服务器上分别安装Ipvsadm、Keepalived软件包、这里使用的是yum安装方式

# yum install -y keepalived ipvsadm

注释:这里安装Ipvsadm工具主要是为了查看lvs规则使用,不安装ipvsadm工具也能成功配置规则,但不方便;

2修改keepalived配置文件

keepalived的文件路径/etc/keepalived/keepalivedconf

修改Master节点proxy的主配置文件

[root@proxy ~]# vim /etc/keepalived/keepalivedconf

! Configuration File for keepalived

global_defs {

notification_email { #设置报警通知邮件地址,可以设置多个

root@localhost

}

notification_email_from admin@stu31com #设置邮件的发送地址

smtp_server 127001 #设置smtp server的地址,该地址必须是存在的

smtp_connect_timeout 30 #设置连接smtp server的超时时间

router_id LVS_DEVEL #运行Keepalived服务器的标识,发邮件时显示在邮件标题中的信息

}

vrrp_instance VI_1 { #定义VRRP实例,实例名自定义

state MASTER #指定Keepalived的角色,MASTER为主服务器,BACKUP为备用服务器

interface eth0 #指定HA监测的接口

virtual_router_id 51 #虚拟路由标识,这个标识是一个数字(1-255),在一个VRRP实例中主备服务器ID必须一样

priority 100 #优先级,数字越大优先级越高,在一个实例中主服务器优先级要高于备服务器

advert_int 1 #设置主备之间同步检查的时间间隔单位秒

authentication { #设置验证类型和密码

auth_type PASS #验证类型有两种{PASS|HA}

auth_pass Oracle #设置验证密码,在一个实例中主备密码保持一样

}

virtual_ipaddress { #定义虚拟IP地址,可以有多个,每行一个

1721631188

}

}

virtual_server 1721631188 { #设置虚拟服务器,需要指定虚拟IP与服务端口,用空格分隔

delay_loop 6 #设置健康状态检查时间,单位为秒

lb_algo rr #设置负载高度算法,rr为轮询

lb_kind DR #设置LVS实现负载均衡的机制,可以为{NAT|TUN|DR}三种

nat_mask 25525500 #设置掩码

persistence_timeout 50 #会话保持时间,单位为秒;这个选项对于动态网页是非常有用的,为集群系统中session共享提供了一个很好的解决方案

protocol TCP #指定转发协议类型可以设置{TCP|UDP}两种

real_server 172163150 80 { #后端服务器节点,需要指定Real_server的IP与端口,用空格分隔

weight 1 #配置服务节点的权重,数字越大,权重越高

HTTP_GET { #设置检测Realserver的方式为http协议

url {

path /

status_code 200 #设定返回状态码为200表示Realserver是存活的

}

connect_timeout 3 #设置响应超时时间

nb_get_retry 3 #设置超时重试次数

delay_before_retry 3 #设置超时后重试间隔

}

}

real_server 172163151 80 {

weight 1

HTTP_GET {

url {

path /

status_code 200

}

connect_timeout 3

nb_get_retry 3

delay_before_retry 3

}

}

}

3将Master服务器proxy节点上的主配置文件拷贝到Backup服务器proxy2节点稍作修改

# scp /etc/keepalived/keepalivedconf proxy2:/etc/keepalived/

######修改如下两项

[root@proxy2 ~]# vim /etc/keepalived/keepalivedconf

state BACKUP

priority 99

4启动两台服务器上的Keepalived服务并设置为开机自启动

# chkconfig --add keepalived ; ssh proxy2 "chkconfig --add keepalived"

# chkconfig keepalived on ; ssh proxy2 "chkconfig keepalived on"

# chkconfig --list keepalived; ssh proxy2 "chkconfig --list keepalived"

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

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

启动服务:

# service keepalived start; ssh proxy2 "service keepalived start"

5观察各节点的服务启动后的日志:

MASTER节点的日志;

[root@proxy keepalived]# tail -f /var/log/messages

Jan 17 15:57:42 proxy Keepalived[15019]: Starting Keepalived v1213 (10/15,2014)

Jan 17 15:57:42 proxy Keepalived[15021]: Starting Healthcheck child process, pid=15024

Jan 17 15:57:42 proxy Keepalived[15021]: Starting VRRP child process, pid=15025

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Netlink reflector reports IP 172163152 added

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Netlink reflector reports IP fe80::a00:27ff:fe3b:2360 added

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Registering Kernel netlink reflector

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Registering Kernel netlink command channel

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Registering gratuitous ARP shared channel

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Netlink reflector reports IP 172163152 added

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Netlink reflector reports IP fe80::a00:27ff:fe3b:2360 added

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Registering Kernel netlink reflector

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Registering Kernel netlink command channel

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Opening file '/etc/keepalived/keepalivedconf'

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Configuration is using : 63202 Bytes

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: Using LinkWatch kernel netlink reflector

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Opening file '/etc/keepalived/keepalivedconf'

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Configuration is using : 16989 Bytes

Jan 17 15:57:42 proxy Keepalived_vrrp[15025]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Using LinkWatch kernel netlink reflector

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Activating healthchecker for service [172163150]:8080

Jan 17 15:57:42 proxy Keepalived_healthcheckers[15024]: Activating healthchecker for service [172163151]:8080

Jan 17 15:57:43 proxy Keepalived_vrrp[15025]: VRRP_Instance(VI_1) Transition to MASTER STATE

Jan 17 15:57:44 proxy Keepalived_vrrp[15025]: VRRP_Instance(VI_1) Entering MASTER STATE

Jan 17 15:57:44 proxy Keepalived_vrrp[15025]: VRRP_Instance(VI_1) setting protocol VIPs

Jan 17 15:57:44 proxy Keepalived_healthcheckers[15024]: Netlink reflector reports IP 1721631188 added

Jan 17 15:57:44 proxy Keepalived_vrrp[15025]: VRRP_Instance(VI_1) Sending gratuitous ARPs on eth0 for 1721631188

BACKUP节点的日志:

[root@proxy2 keepalived]# tail -f /var/log/messages

Jan 17 15:57:42 proxy2 Keepalived[15005]: Starting Keepalived v1213 (10/15,2014)

Jan 17 15:57:42 proxy2 Keepalived[15007]: Starting Healthcheck child process, pid=15009

Jan 17 15:57:42 proxy2 Keepalived[15007]: Starting VRRP child process, pid=15010

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Netlink reflector reports IP 172163153 added

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Netlink reflector reports IP 172163153 added

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Netlink reflector reports IP fe80::a00:27ff:fe6e:bd28 added

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Registering Kernel netlink reflector

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Registering Kernel netlink command channel

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Registering gratuitous ARP shared channel

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Netlink reflector reports IP fe80::a00:27ff:fe6e:bd28 added

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Registering Kernel netlink reflector

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Registering Kernel netlink command channel

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Opening file '/etc/keepalived/keepalivedconf'

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Opening file '/etc/keepalived/keepalivedconf'

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Configuration is using : 16991 Bytes

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Configuration is using : 63204 Bytes

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: Using LinkWatch kernel netlink reflector

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: VRRP_Instance(VI_1) Entering BACKUP STATE

Jan 17 15:57:42 proxy2 Keepalived_vrrp[15010]: VRRP sockpool: [ifindex(2), proto(112), unicast(0), fd(10,11)]

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Using LinkWatch kernel netlink reflector

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Activating healthchecker for service [172163150]:8080

Jan 17 15:57:42 proxy2 Keepalived_healthcheckers[15009]: Activating healthchecker for service [172163151]:8080

6开启Master节点与Backup节点服务器的路由转发功能

#sed -i 's/netipv4ip_forward = 0/netipv4ip_forward = 1/g' /etc/sysctlconf

软件负载均衡一般通过两种方式来实现:基于操作系统的软负载实现和基于第三方应用的软负载实现。LVS就是基于Linux操作系统实现的一种软负载,HAProxy就是开源的并且基于第三应用实现的软负载。

HAProxy相比LVS的使用要简单很多,功能方面也很丰富。当 前,HAProxy支持两种主要的代理模式:"tcp"也即4层(大多用于邮件服务器、内部协议通信服务器等),和7层(HTTP)。在4层模式 下,HAProxy仅在客户端和服务器之间转发双向流量。7层模式下,HAProxy会分析协议,并且能通过允许、拒绝、交换、增加、修改或者删除请求 (request)或者回应(response)里指定内容来控制协议,这种操作要基于特定规则。

我现在用HAProxy主要在于它有以下优点,这里我总结下:

一、免费开源,稳定性也是非常好,这个可通过我做的一些小项目可以看出来,单Haproxy也跑得不错,稳定性可以与LVS相媲美;

二、根据官方文档,HAProxy可以跑满10Gbps-New benchmark of HAProxy at 10 Gbps using Myricom's 10GbE NICs (Myri-10G PCI-Express),这个作为软件级负载均衡,也是比较惊人的;

三、HAProxy可以作为MySQL、邮件或其它的非web的负载均衡,我们常用于它作为MySQL(读)负载均衡;

四、自带强大的监控服务器状态的页面,实际环境中我们结合Nagios进行邮件或短信报警,这个也是我非常喜欢它的原因之一;

五、HAProxy支持虚拟主机。

===================================================================================

在做反向代理服务器的负载均衡时,我们通常会使用nginx的均衡配置。其实,haproxy的负载均衡也是属于这一类的。那么关于这方面的配置过程我们现在来进行一下讲解。首先,对haproxy进行一个简单的介绍,之后就是安装和配置环节了。

HAProxy介绍

反向代理服务器,支持双机热备支持虚拟主机,但其配置简单,拥有非常不错的服务器健康检查功能,当其代理的后端服务器出现故障, HAProxy会自动将该服务器摘除,故障恢复后再自动将该服务器加入。新的13引入了frontend,backend;frontend根据任意 HTTP请求头内容做规则匹配,然后把请求定向到相关的backend

http://blogliutscom/post/223/ (搭建四层负载均衡器)

http://rfyimcoolblog51ctocom/1030776/413187 (搭建七层负载均衡器)

===================================================================================

keepalived简介  

http://wwwkeepalivedorg

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。

类似的HA工具还有heatbeat、drbd等,heatbeat、drbd配置都较为复杂。

NAT模式需要配置端口转发,否则无法从主机连接虚拟机的服务。

在VirtualBox/VmWare中设置。

以VirtualBox为例,选中欲设置的虚拟机,点击设置调出“设置对话框”如下:

VirtualBox的虚拟机设置界面

选中网络条目,点开高级,单击“端口转发”,界面如下:

    新增一条规则如下:

新增的ssh端口转发规则

其中,主机IP需要去控制面板的网络适配器界面查找,我这里是192168561,如图:

在控制面板中,依次进入控制面板,网络和 Internet,网络连接,打开VirtualBox那个网卡,查看详细信息获得IP地址,这个IP地址是虚拟机和本机组成一个网络时,本机的IP地址,从这个地址设置端口转发即可。

VirtualBox 网卡的IP

VMWare设置相似,因为没有安装,所以没有截图。

设置好了之后,从本机终端运行,ssh 用户名@192168561,即可远程到虚拟机,截图如下:

登录成功界面

另外注意,ICMP协议是没有端口的,从虚拟机ping外网以及回应的ping包由VirtualBox/VmWare负责转发,不需要设定端口映射,所以你可以直接ping通百度

"linuxmount无法以读写方式重新挂载"的原因可能有多种。其中一种可能的原因是文件系统被挂载为只读模式,导致无法以读写方式重新挂载。这可能是由于文件系统发生了错误或损坏,或者由于某些安全性考虑而将其设置为只读模式。

拓展:当文件系统发生错误或损坏时,系统会自动将其挂载为只读模式,以保护数据的完整性。这样可以防止进一步的写入操作导致更多的损坏。在这种情况下,首先需要检查文件系统的健康状态,并尝试修复错误。可以使用诸如fsck(文件系统检查)等工具来检查和修复文件系统。

另外,有些情况下,系统管理员可能会有意将文件系统设置为只读模式,以防止意外的写入操作。这可以提高系统的安全性,尤其是在一些关键的系统或服务器上。如果是出于安全性考虑而设置为只读模式,那么需要管理员的权限才能重新以读写方式挂载文件系统。

总之,无法以读写方式重新挂载的原因可能是文件系统的错误或损坏,或者是由于安全性设置而导致的。在解决该问题时,需要检查文件系统的健康状态,并根据具体情况采取适当的修复措施或获得管理员权限。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 怎么通过lvs+keepalived+ppache2 实现在ubuntu server 14.10下三个独立网关的集群

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情