LVS+Keepalived 网站服务群集

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
简介:

1. 环境描述:

本实验环境如下表所示,使用keepalived实现主、从调度器的热备,从而构建兼有负载均衡、高可用两种能力的LVS网站群集平台

主机

操作系统

IP地址

主要软件

主调度器

CentOS 6.5 x86_64

  1. 192.168.100.111

keepalived-1.2.2.tar

从调度器

CentOS 6.5 x86_64

  1. 192.168.100.112

keepalived-1.2.2.tar

Web服务器

CentOS 6.5 x86_64

  1. 192.168.100.113


Web服务器

RHEL 6.5 x86_64

  1. 192.168.100.110


用我的真机模拟互联网来测试LVS+Keepalived网站服务群集。

为区别两个调度器把调度器改名称为

在192.168.100.111上编辑配置文件/etc/sysconfig/network

修改下面一行

HOSTNAME=zhang   //主调度器

 

在192.168.100.112上编辑配置文件/etc/sysconfig/network

修改下面一行

HOSTNAME=DDQ-01   //从调度器

 

为区别两个web服务器把服务器改名称为

在192.168.100.110上编辑配置文件/etc/sysconfig/network

修改下面一行

HOSTNAME=server-01

 

在192.168.100.113上编辑配置文件/etc/sysconfig/network

修改下面一行

HOSTNAME=server-02

 

在典型的负载均衡群集中,包括三个层次的组件

第一层,负载调度器:这是访问整个群集系统的唯一入口,对外使用所有服务器共有的群集地址。通常会配置主、备两台调度器实现热备份,当主调度器失效以后平滑替换至备用调度器,确保高可用性。

第二层,服务器池:群集所提供的应用服务(如 HTTP、FTP)由服务器池承担,其中的每个节点具有独立的RIP(Real IP,真实IP)地址,只处理调度器分发过来的客户机请求,当某个节点暂时失效时,负载调度器的容错机制会将其隔离,等待错误排除以后再重新纳入服务器池。

第三层,共享存储:为服务器池中的所有节点提供稳定、一致的文件存取服务,确保整个群集的统一性,在Linux/UNIX环境中,共享存储可以使用NAS设备,或者提供NFS(Network File System,网络文件系统)共享服务的专用服务器。


NFS共享存储服务器的基本配置和访问方法。

在CentOS 6 系统中,需要先安装nfs-utils、rpcbind软件包来提供NFS共享服务,前者用于NFS共享发布和访问,后者用于RPC支持。

yum -y install nfs-utils rpcbind

chkconfig nfs on

chkconfig rpcbind on

设置共享目录

NFS的配置文件为/etc/exports,文件内容默认为空(无任何共享),在配置文件中设置共享资源时,记录格式为“目录位置 客户机地址(权限选项)”。例如,若要将文件夹/opt/wwwroot共享给192.168.100.0/24网段使用,允许读写操作,配置如下所示。

mkdir -p /opt/wwwroot

vi /etc/exports

添加下面一行

/opt/wwwroot 192.168.100.0/24(rw,sync,no_root_squash)

其中客户机地址可以是主机名、IP地址、网段地址、还可以使用*、?通配符;权限中的rw表示允许读写(ro为只读,)sync表示同步写入,no_root_squash表示当客户机以root身份访问时赋予本地root权限(默认是root_squash,将作为nfsnobody用户降权对待)

当需要将同一个目录共享给不同的客户机,且分配不同的权限时,只要以空格分隔指定多个“客户机(权限选项)”即可。例如,将、/var/ftp/public目录共享给两个客户机,并分别给予只读、读写权限,配置如下

vi /etc/exports

/var/ftp/pub 192.168.100.10(ro) 192.168.100.20(rw)

启动NFS服务程序,手动加载NFS共享服务时,应先启动rpcbind,然后再启动nfs

service rpcbind start

service nfs start

netstat -anpt | grep rpcbind

showmount -e   //查看本机发布的NFS共享目录

在客户机中访问NFS共享资源

客户机中也需要安装rpcbind软件包,并启动rpcbind系统服务;另外,为了使用showmount查询工具,建议将nfs-utils软件包也一并安装。

yum -y install rpcbind nfs-utils

chkconfig rpcbind on

service rpcbind start

在客户机上使用“showmount -e NFS服务器地址”查看NFS服务器端共享了哪些目录

手动挂载NFS共享目录

例如,将NFS服务器共享的/opt/wwwroot目录挂载到本地/var/www/html方式如下

mount NFS服务器地址:/opt/wwwroot /var/www/html

为了测试实验结果,各web服务器采用不同网页,NFS共享存储服务就不再搭建了。实际上各web服务器的网站文档都存放在共享存储设备中。


2. 实验步骤:

1.  在主调度器上安装keepalived工具并编辑其配置文件

1)  在编译安装keepalived之前,必需先安装内核开发包kernel-devel,以及openssl-devel、popt-devel等支持库。还需要用到ipvsadm管理工具。

使用xshell远程管理并进行相关配置

[root@zhang~]# yum -y install popt-devel kernel-devel openssl-devel

[root@zhang~]# yum -y install ipvsadm

[root@zhang~]# modprobe ip_vs   //加载ip_vs模块

[root@zhang~]# service ipvsadm start   //开启ipvsadm服务

[root@zhang~]# vi /etc/sysctl.conf    //编辑配置文件,打开路由转发功能

修改下面一行

net.ipv4.ip_forward= 1

[root@zhang~]# sysctl -p    //重新加载刚才的配置文件,使其生效

编译安装keepalived

把keepalived软件包上传到主调度器

                 

wKioL1WkfxCwWbNwAAHakMQgHDY965.jpg

wKiom1WkfTuy4dPcAAO2BStG6UI894.jpg

           

注意:在哪个目录下执行rz操作文件就传送到哪个目录下

[root@zhangopt]# tar xzvf keepalived-1.2.2.tar.gz   //解压keepalived软件包

[root@zhangopt]# cd keepalived-1.2.2

[root@zhangkeepalived-1.2.2]# yum -y install gcc gcc-c++   //安装编译工具

[root@zhangkeepalived-1.2.2]# ./configure --prefix=/--with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/   //对keepalived的参数进行配置

[root@zhangkeepalived-1.2.2]# make && make install   //编译和安装keepalived服务

[root@zhangkeepalived-1.2.2]# chkconfig --add keepalived  //把keepalived添加到系统进行管理

[root@zhangkeepalived-1.2.2]# chkconfig keepalived on

配置主调度器

[root@zhangkeepalived-1.2.2]# vi /etc/keepalived/keepalived.conf

清空配置文件,插入以下文本

! Configuration File for keepalived

global_defs {

   notification_email {

     acassen@firewall.loc

     failover@firewall.loc

     sysadmin@firewall.loc

   }

   notification_email_fromAlexandre.Cassen@firewall.loc

   smtp_server 192.168.200.1

   smtp_connect_timeout 30

   router_id LVS_01    //主调度器名称

}            

 

vrrp_instance VI_1 {

    state MASTER   //主调度器的热备状态

    interface eth0

    virtual_router_id 51

    priority 110   //主调度器的优先级

    advert_int 1

    authentication {    //主、从热备认证信息

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {    //指定群集漂移地址

        192.168.100.188

    }

}

virtual_server 192.168.100.188 80 {    //虚拟服务器地址、端口

        delay_loop 6   //健康检查的间隔时间(秒)

        lb_algo rr    //轮询(rr)调度算法

        lb_kind DR    //直接路由(DR)群集工作模式

        persistence_timeout60    //连接保持时间(秒)

        protocol TCP    //应用服务采用的是TCP协议

real_server 192.168.100.110 80 {    //真实web节点地址、端口

        weight 1     //节点的权重

        TCP_CHECK {    //健康检查方式

        connect_port 80    //检查的目标端口

        connect_timeout3    //连接超时(秒)

        nb_get_retry 3    //重试次数

        delay_before_retry3   //重试间隔(秒)

        }

}

real_server 192.168.100.113 80 {

        weight 1

        TCP_CHECK {

             connect_port 80

             connect_timeout 3

             nb_get_retry 3

            delay_before_retry 3

     }

  }

}

wKiom1WkfX_Cv9GVAAOiH7q3bHo968.jpg

 2.  在从调度器上安装keepalived并编辑其配置文件

A.  使用相同的方式把keepalived软件包上传到从调度器

[root@DDQ-01~]# yum -y install popt-devel kernel-devel openssl-devel

[root@DDQ-01~]# yum -y install ipvsadm

[root@DDQ-01~]# modprobe ip_vs   //加载ip_vs模块

[root@DDQ-01~]# service ipvsadm start   //开启ipvsadm服务

[root@DDQ-01~]# vi /etc/sysctl.conf    //编辑配置文件,打开路由转发功能

修改下面一行

net.ipv4.ip_forward= 1

[root@zhang~]# sysctl -p   //重新加载刚才的配置文件,使其生效

[root@DDQ-01~]#tar xzvf keepalived-1.2.2.tar.gz   //解压keepalived软件包

[root@DDQ-01~]#cd keepalived-1.2.2

[root@DDQ-01keepalived-1.2.2]# ./configure --prefix=/ --with-kernel-dir=/usr/src/kernels/2.6.32-431.el6.x86_64/    //对keepalived的参数进行配置

[root@DDQ-01keepalived-1.2.2]# make && make install   //编译和安装keepalived服务

[root@DDQ-01keepalived-1.2.2]# chkconfig --add keepalived   //把keepalived添加到系统进行管理

[root@DDQ-01keepalived-1.2.2]# chkconfig keepalived on   让keepalived服务在2345级别开启

[root@DDQ-01keepalived-1.2.2]# service iptables stop  //关闭防火墙

B.  配置从调度器

从调度器的配置和主调度器上的配置基本相同,只需要调整router_id、state、priority参数即可,其余内容完全相同。

[root@DDQ-01keepalived-1.2.2]# vi /etc/keepalived/keepalived.conf

清空配置文件内容,添加以下文本

! Configuration File for keepalived

 

global_defs {

  notification_email {

     root@localhost.localdomain      //从调度器的名称

   }

  notification_email_from benet root@localhost.localdomain

  smtp_server 192.168.200.1

  smtp_connect_timeout 30

  router_id LVS_02

}

 

vrrp_instance VI_1 {

    state BACKUP        //从调度器的热备状态

    interface eth0

    virtual_router_id 51 //编号主与从的两边要一样的

    priority 100        //从调度器的优先级

    advert_int 1

    authentication { //主、从热备认证信息

       auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {     //指定群集(虚拟服务器地址),可以指定多个的   

        192.168.100.188

    }

}

 

virtual_server 192.168.100.188 80{ //虚拟服务器地址(VIP)、端口 

     delay_loop 6        //健康检查的间隔时间(秒)

     lb_algo rr          //轮询(rr)调度算法

     lb_kind DR          //直接路由(DR)群集工作模式

     persistence_timeout 60  //连接保持时间(秒),若注释掉加个"!"

     protocol TCP        //应用服务采用的是TCP协议

 

    real_server192.168.100.110 80 { //第一个web节点的地址、端口

       weight 1     //节点的权重

       TCP_CHECK {      //健康检查方式

         connect_port 80 //检查的目标端口

            connect_timeout 3    //连接去超时(秒)

            nb_get_retry 3   //重试次数

            delay_before_retry 3 //重试间隔(秒)

    }

}

    real_server 192.168.100.113 80 { //第二个web节点的地址、端口

       weight 1

        TCP_CHECK {

         connect_port 80

             connect_timeout 3

             nb_get_retry 3

             delay_before_retry 3

     }

 }

}

[root@DDQ-01 keepalived-1.2.2]# servicekeepalived start   //开启keepalived服务

 

 3.  配置web节点服务器

1)  Server-01的配置

[root@server-01~]# yum -y install httpd    //安装web服务器

[root@server-01~]# echo "<h1>this is server-01</h1>" >/var/www/html/index.html    //建立一个网站测试页

DR模式Web服务器配置如下:

[root@server-01~]# vi web.sh   //编辑web服务器配置脚本

添加以下内容

ifconfig lo:0 192.168.100.188 broadcast 192.168.100.188 netmask 255.255.255.255up

route add -host 192.168.100.188 dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p &>/dev/null

[root@server-01~]# sh web.sh

[root@server-01~]# service iptables stop   //关闭防火墙

[root@server-01~]# service httpd start   //开启web服务器

Server-02的配置

[root@server-02~]# yum -y install httpd    //安装web服务器

[root@server-02~]# echo "<h1>this is server-02</h1>" >/var/www/html/index.html    //建立一个网站测试页

DR模式Web服务器配置如下:

[root@server-02~]# vi web.sh   //编辑web服务器配置脚本

添加以下内容

ifconfig lo:0 192.168.100.188 broadcast 192.168.100.188 netmask255.255.255.255 up

route add -host 192.168.100.188 dev lo:0

echo "1" >/proc/sys/net/ipv4/conf/lo/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/lo/arp_announce

echo "1" >/proc/sys/net/ipv4/conf/all/arp_ignore

echo "2" >/proc/sys/net/ipv4/conf/all/arp_announce

sysctl -p &>/dev/null

[root@server-02~]# sh web.sh   //运行脚本

[root@server-02~]# service iptables stop   //关闭防火墙

[root@server-02~]# service httpd start    //开启web服务器


3. 测试LVS+Keepalived高可用群集


1.  在客户机的浏览器中,能够通过LVS+Keepalived群集的漂移地址(192.168.100.188)正常访问web页面内容,则验证群集构建成功。

wKiom1Wkfa3yhJsaAADFNrxooHk101.jpg

wKioL1Wkf4XBzvBEAADraeMgscc600.jpg

对于同一个IP地址一直都是由同一台web服务器为其提供服务,当服务器出现故障时,另一台就会代替其工作,实现了业务的高可用。

使用[root@zhang ~]# tail /var/log/messages可以查看主从切换以及服务器的自动化加入和删除

wKiom1Wkfc_CIcZNAAT8revtf_Q105.jpg

在从调度器上查看结果如下

wKioL1Wkf7-w62ghAAUFQoAWyrc784.jpg

2.  模拟主调度器失效,查看web站点是否仍可以访问?

若可以正常访问则验证调度器实现热备切换

wKioL1Wkf82i3RKbAAHyS-XjH24167.jpg

修改客户机IP地址,验证web服务器访问量的负载均

wKiom1WkfhKSmswoAALJKhzIO0I931.jpg

使用[root@zhang ~]# tail /var/log/messages

wKioL1Wkf_6T79TrAAPOFUNFcOA924.jpg

在从服务器上查看

wKioL1WkgA7icBFDAAUc-jYeLIE567.jpg

3.  模拟一台web服务器故障,再次查看日志信息

wKioL1WkgDOz4aFNAAN4yxfF73A836.jpg

wKiom1Wkfl2yT_YuAAWDXiIGGCc070.jpg

恢复web服务,再次查看日志信息

wKioL1WkgEyTLY-7AAVDhOMRJGg698.jpg

以上测试验证了LVS+Keepalived网站服务群集搭建成功



本文转自Y.weisheng 51CTO博客,原文链接:http://blog.51cto.com/yuan2/1674014,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
6月前
|
负载均衡 前端开发 JavaScript
LVS-DR模式、keepalived、Nginx与Tomcat合作,打造动静分离,高效负载均衡与高可用性
为了采用这样的架构,你需要对LVS-DR、Keepalived、Nginx与Tomcat有一定的理解和掌握,同时也需要投入一些时间去研究和配置,但是一旦你把它运行起来,你将会发现,这一切都是值得的。
261 11
|
11月前
|
负载均衡 算法 Linux
LVS+Keepalived:实现高效软负载均衡的利器
本文介绍了如何使用LVS(Linux Virtual Server)和Keepalived搭建高可用负载均衡集群。LVS通过不同调度算法将请求转发给后端服务器,而Keepalived基于VRRP协议实现服务高可用,避免IP单点故障。具体步骤包括环境准备、安装配置ipvsadm和Keepalived、启动服务及测试。文中还详细解释了配置文件中的关键参数,并提供了故障转移测试方法。最后,文章简要对比了软件、硬件和云负载均衡方案的特点,帮助读者选择合适的负载均衡策略。
1597 4
|
运维 负载均衡 网络协议
LVS+Keepalived 负载均衡
LVS+Keepalived 负载均衡
341 8
LVS+Keepalived 负载均衡
|
域名解析 运维 负载均衡
LVS+Keepalived 负载均衡(二)28-1
【8月更文挑战第28天】LVS+Keepalived 负载均衡 配置 LVS VIP
236 5
|
运维 负载均衡 监控
keepalived+LVS实现高可用性集群
通过结合keepalived和LVS,你可以创建一个高可用性的负载均衡集群,确保服务器的稳定性和性能。这对于托管Web服务、应用服务器等关键服务的服务器集群非常有用。
276 1
|
负载均衡 监控 Linux
CentOS6.5高可用集群LVS+Keepalived(DR模式)
CentOS6.5高可用集群LVS+Keepalived(DR模式)
|
负载均衡 监控 调度
Keepalived+Lvs(dr)调度器主备配置小实验
Keepalived和LVS(Linux Virtual Server)是两个常用的开源软件,通常结合使用以提供高可用性和负载均衡的解决方案。 Keepalived是一种用于实现高可用性的软件,它可以监控服务器的健康状态,并在主服务器出现故障时自动切换到备份服务器。
379 2
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
3501 0
|
9月前
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
1229 5
LVS,软负载均衡
|
负载均衡 网络协议 算法
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤
LVS 负载均衡部署的三种模式 与搭建dr模式具体步骤