实验环境

两台CentOS-7.5虚拟机

web1:10.0.11.203

web2:10.0.11.204

VIP :10.0.11.210

web类型:nginx

客户端:自用笔记本(win10)

nginx状态检测脚本:ck_nginx.sh

实验一、使用keepalived简单实现web集群的高可用功能

1、准备两台web服务器

1)web1网卡情况

[root@CentOS ~]#

[root@CentOS ~]# ip a

2)web2网卡情况

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# ip a

3)安装nginx

web1端:

[root@CentOS ~]#

[root@CentOS ~]# yum install nginx

[root@CentOS ~]# rpm -qa nginx

nginx-1.16.1-1.el7.x86_64

[root@CentOS ~]#

[root@CentOS ~]#

[root@CentOS ~]# > /usr/share/nginx/html/index.html #清空默认网页

[root@CentOS ~]# echo web1 > /usr/share/nginx/html/index.html #让网页显示web1

[root@CentOS ~]# cat /usr/share/nginx/html/index.html

web1

[root@CentOS ~]#

[root@CentOS ~]# systemctl start nginx #启动nginx

[root@CentOS ~]# systemctl enable nginx #设置nginx开机自启动

C:\Users\Administrator>curl 10.0.11.203

web2端:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# yum install nginx

[root@CentOS-2 ~]# rpm -qa nginx

nginx-1.16.1-1.el7.x86_64

[root@CentOS-2 ~]#

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# > /usr/share/nginx/html/index.html

[root@CentOS-2 ~]# echo web2 > /usr/share/nginx/html/index.html

[root@CentOS-2 ~]# cat /usr/share/nginx/html/index.html

web2

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# systemctl start nginx

[root@CentOS-2 ~]# systemctl enable nginx

C:\Users\Administrator>curl 10.0.11.204

4)安装keepalived

说明:两台web服务器都需要安装keepalived服务

web1端:

[root@CentOS ~]#

[root@CentOS ~]# yum install keepalived

[root@CentOS ~]# rpm -qa keepalived

keepalived-1.3.5-16.el7.x86_64

[root@CentOS ~]#

web2端:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# yum install keepalived

[root@CentOS-2 ~]# rpm -qa keepalived

keepalived-1.3.5-16.el7.x86_64

[root@CentOS-2 ~]#

5)配置两台keepalived并启动

web1端:

[root@CentOS ~]#

[root@CentOS ~]# > /etc/keepalived/keepalived.conf #清空原来的配置

[root@CentOS ~]# vim /etc/keepalived/keepalived.conf #编辑配置文件,自定义keepalived配置文件

[root@CentOS ~]# cat /etc/keepalived/keepalived.conf

[root@CentOS ~]#

[root@CentOS ~]# systemctl start keepalived #启动

[root@CentOS ~]# systemctl enable keepalived #设置开机启动

web2端:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# > /etc/keepalived/keepalived.conf

[root@CentOS-2 ~]# vim /etc/keepalived/keepalived.conf

[root@CentOS-2 ~]# cat /etc/keepalived/keepalived.conf

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# systemctl start keepalived #启动

[root@CentOS-2 ~]# systemctl enable keepalived #设置开机启动

3、测试访问

方法:用客户端通过VIP测试访问web

C:\Users\Administrator>curl 10.0.11.210 #个人笔记本通过VIP测试访问web

拔掉web1服务器的网线,用客户端通过VIP测试访问web:

C:\Users\Administrator>curl 10.0.11.210

再次将web1服务器的网线接好,用客户端通过VIP测试访问web:

C:\Users\Administrator>curl 10.0.11.210

4、实验一结论:

1)利用keepalived成功实现了web服务器集群的高可用

2)虽然可以实现在服务器发生异常高故障的情况下web的高可用,但是遗憾的是此时无法实现针对web服务异常故障所引发的主备高可用切换;因为keepalived无法感知nginx服务的运行状态和健康状态。

实验二、使用keepalived结合nginx监控检测脚本实现更加灵活的高可用集群功能

实验环境:基于实验一的环境,以实验一的环境为基础进行

与实验一的唯一区别:需要准备nginx的健康状态检测脚本

1、编写nginx的健康检测脚本

web1端执行:

[root@CentOS ~]#

[root@CentOS ~]# vim /etc/keepalived/ck_nginx.sh #编写keepalived检测nginx健康状态的脚本

#!/bin/bash

#检查ngin进程是否存在

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}"="0" ]; then

#尝试启动一次ngnx,停止5秒后再次检测

systemctl start nginx

sleep 5

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}"="0" ]; then

#如果启动没成功,就杀掉keepave触发主备切换

systemctl stop nginx

fi

fi

[root@CentOS ~]#

[root@CentOS ~]# cat /etc/keepalived/ck_nginx.sh #查看脚本内容

[root@CentOS ~]#

[root@CentOS ~]# chmod +x /etc/keepalived/ck_nginx.sh #授予脚本可执行权限

[root@CentOS ~]#

web2端执行:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# vim /etc/keepalived/ck_nginx.sh

#!/bin/bash

#检查ngin进程是否存在

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}"="0" ]; then

#尝试启动一次ngnx,停止5秒后再次检测

systemctl start nginx

sleep 5

counter=$(ps -C nginx --no-heading|wc -l)

if [ "${counter}"="0" ]; then

#如果启动没成功,就杀掉keepave触发主备切换

systemctl stop nginx

fi

fi

[root@CentOS-2 ~]#

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# cat /etc/keepalived/ck_nginx.sh

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# chmod +x /etc/keepalived/ck_nginx.sh

[root@CentOS-2 ~]#

2、编辑修改nginx的配置文件

web1端:

[root@CentOS ~]#

[root@CentOS ~]# vim /etc/keepalived/keepalived.conf #自定义配置文件

! Configuration File for keepalived

vrrp_script chk_nginx {

script "/etc/keepalived/ck_nginx.sh"

interval 2

weight -5

fail 3

}

vrrp_instance VI_1 {

state MASTER

interface ens32

mcast_src_ip 10.0.11.203

virtual_router_id 55

priority 100

advert_int 1 authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

10.0.11.210/24

}

track_script {

chk_nginx

}

}

[root@CentOS ~]#

[root@CentOS ~]# systemctl restart keepalived #重启keepalived使配置生效

[root@CentOS ~]#

web2端:

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# vim /etc/keepalived/keepalived.conf #自定义配置文件

! Configuration File for keepalived

vrrp_script chk_nginx {

script "/etc/keepalived/ck_nginx.sh"

interval 2

weight -5

fail 3

}

vrrp_instance VI_1 {

state MASTER

interface ens32

mcast_src_ip 10.0.11.204

virtual_router_id 55

priority 95

advert_int 1 authentication {

auth_type PASS

auth_pass 123456

}

virtual_ipaddress {

10.0.11.210/24

}

track_script {

chk_nginx

}

}

[root@CentOS-2 ~]#

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# systemctl restart keepalived #重启keepalived使配置生效

测试keepalived功能:

由于脚本内容里边,nginx服务在停止以后会立马自启动,所以我们模拟服务器异常关闭导致nginx服务没有办法实现自启动

[root@CentOS ~]#

[root@CentOS ~]# init 0 #关闭web1服务器

[root@CentOS-2 ~]#

[root@CentOS-2 ~]# ping 10.0.11.203 #用web2去pingweb1,发现web1已经被关闭

此时使用客户端去测试验证keepalived功能:

C:\Users\Administrator>curl 10.0.11.210 #用客户端通过VIP去访问web服务器

3、实验二结论

使用keepalived服务结合nginx健康状态检测脚本成功实现了对web服务器集群的高可用

nginx两台文件服务器集群,keepalived结合nginx状态检测脚本实现对web服务器集群的高可用...相关推荐

  1. Web服务器集群搭建

    Web服务器集群搭建 1.需求分析 1.1.整体需求 搭建一个高可用的网站服务器集群,能承受高并发请求,能抵御一般的网络攻击,任何一台服务器的退服不影响整个集群的运作,并且能对各服务器的运行情况作出实 ...

  2. opnet对服务器的性能分析,一种Web服务器集群的动态反馈算法

    摘要:介绍了Web服务器集群技术和负载均衡,针对静态的加权轮询算法和动态加权最小连接数算法的不足,提出一种基于动态反馈的加权最小连接数算法,该算法根据服务器的实时负载动态地改变权值的大小,再根据最小连 ...

  3. Linux WEB服务器集群在电子商务中的应用

    随着Internet 和电子商务的飞速发展,人们对电子商务网络服务器访问需求急剧增加,网络服务器的负载越来越大,采用服务器集群[1]已成为提高网络服务性能的有效途径.Web 服务器集群就是基于集群体系 ...

  4. ipvsadm命令及lvs-nat类型web服务器集群

    1.管理集群服务 (1)创建或修改 ipvsadm -A|E -t|u|f service-address [-s scheduler] -A 添加 -E 修改 -t 承载的应用层协议为基于TCP协议 ...

  5. 利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡

    利用LVS(Linux Virtual Server)系统实现Web服务器集群的负载均衡 LVS系统结构与特点: 1. Linux Virtual Server:简称LVS.是基于Linux服务器集群 ...

  6. [转]使用简单的 5 个步骤设置 Web 服务器集群

    文章来源:http://www.ibm.com/developerworks/cn/linux/l-linux-ha/index.html 使用简单的 5 个步骤设置 Web 服务器集群 使用 Lin ...

  7. 推荐两款支持在linux下运行ASP.NET网站的国产免费WEB服务器软件

    推荐两款支持在linux下运行ASP.NET网站的国产免费WEB服务器软件 1.kangle kangle web server是一款跨平台(windows/linux/bsd).功能强大.安全稳定. ...

  8. Nginx+Tomcat构筑Web服务器集群

    代理服务 代理服务可简单的分为正向代理和反向代理: 正向代理: 用于代理内部网络对Internet的连接请求(如VPN/NAT),客户端指定代理服务器,并将本来要直接发送给目标Web服务器的HTTP请 ...

  9. Keepalived + LVS-DR搭建高可用Web服务器集群

    导航: Keepalived概述 LVS概述 编译安装keepalived 配置主调度器 双机热备 一.Keepalived概述 keepalived是一个类似于layer3, 4 & 5交换 ...

最新文章

  1. [转载] 七龙珠第一部——第035话 北方女孩
  2. Python 命令pip install pygame安装报错
  3. ITK:按标量乘以图像
  4. TensorFlow(八)激活函数
  5. f分布表完整图_【教育统计答疑】如何理解正态分布、均值分布、^2分布、t分布和F分布...
  6. ubuntu下nagios监控远程主机
  7. Go(4 [Map])
  8. 闭包Closures
  9. ArcMap中无法读取NetCDF数据
  10. Jade模板引擎教程
  11. 【数据结构实验一】线性表
  12. 计算机上怎么在表格输入分秒,“excel表格怎么输入角度“excel 表格中怎么输入分秒的符号...
  13. 期刊论文发表的作者顺序有什么讲究吗
  14. SQL 压力测试实战
  15. 开源Modbus 协议库---XTinyModbus
  16. 计蒜客2018 蓝桥杯省赛 B 组模拟赛(一)-H题封印之门
  17. 金融时间序列分析:8. MA模型实例(Python)
  18. C语言编写程序,从键盘输入三角形的三条边,判断它们是否能构成等腰或直角三角形。
  19. QA问答系统总体介绍
  20. java图片裁剪类似qq头像_Android实现类似换QQ头像功能(图片裁剪)

热门文章

  1. centos安装mysql wsl_wsl安装/卸载mysql
  2. JDBC PreparedStatement
  3. Two Bases CodeForces - 602A (BigInteger c++long long也可以)
  4. 2017年给自己定个小目标!
  5. Java单例模式实现(线程安全)
  6. Android JNI programming demo with Eclipse
  7. 【初级04】JVM线程模型
  8. matplotlib快速画图
  9. Win11右键菜单切回经典模式
  10. Android音频焦点AudioFocus使用