keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

news/2024/5/13 11:03:06/文章来源:https://blog.csdn.net/weixin_33994444/article/details/92241682
说明:这次做了一个需要8台虚拟机的项目 其架构如下图

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

一、简介

keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived是自动完成,不需人工干涉。
Layer3,4,5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:
Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。
Layer4:如果理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。
Layer5:Layer5对指定的URL执行HTTP GET。然后使用MD5算法对HTTP GET结果进行求和。如果这个总数与预期值不符,那么测试是错误的,服务器将从服务器池中移除。该模块对同一服务实施多URL获取检查。如果您使用承载多个应用程序服务器的服务器,则此功能很有用。此功能使您能够检查应用程序服务器是否正常工作。MD5摘要是使用genhash实用程序(包含在keepalived软件包中)生成的。

Nginx作为负载均衡服务:Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务,也可以支持作为 HTTP代理服务对外进行服务。Nginx采用C进行编写,是一款高性能的反向代理服务器。

二、环境说明

虚拟机数量:四台
操作系统:全部是centos7.3
keepalived版本:keepalived-2.0.7
nginx版本:nginx-1.14.0

主机名称安装软件公网ip私网ip
keepalived_web_mkeepalived+nginx172.18.74.93192.168.255.51
keepalived_web_skeepalived+nginx172.18.74.80192.168.255.54
web1apache172.18.74.92192.168.255.50
web2apache172.18.74 .102192.168.255.53

三、环境安装
首先关闭所有机器的防火前和selinux,配置好之后我们开启,然后添加策略。

systemctl stop firewalld
setenforce 0

1 安装nginx
首先下载并解压需要的包

wget http://www.zlib.net/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.41/pcre-8.41.tar.gz
tar -zxvf pcre-8.41.tar.gz
wget https://www.openssl.org/source/openssl-1.0.2o.tar.gz
tar -zxvf openssl-1.0.2o.tar.gz
wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
tar -zxvf ngx_cache_purge-2.3.tar.gz
wget http://nginx.org/download/nginx-1.14.0.tar.gz
tar -zxvf nginx-1.14.0.tar.gz

进入nginx目录

cd nginx-1.14.0

配置安装选项

/configure --add-module=../ngx_cache_purge-2.3 --prefix=/usr/local/nginx --with-http_ssl_module --with-stream --with-pcre=../pcre-8.41 --with-zlib=../zlib-1.2.11 --with-openssl=../openssl-1.0.2o

编译并安装

make&&make install
先备份一份nginx配置文件

cd /usr/local/nginx/conf
cp nginx.conf ./nginx.conf.bak

修改nginx.conf的配置

vim nginx

修改红框里的内容

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

保存退出然后重新加载nginx

nginx -s reload

2 下载并安装keepalived

yum install wget make gcc gcc-c++ openssl-devel
wget http://www.keepalived.org/software/keepalived-2.0.7.tar.gz
tar zxvf keepalived-2.0.7.tar.gz
cd keepalived-2.0.7
./configure --prefix=/data/keepalived

如果报以下警告:
WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.
不用担心,我们只需要用到VRRP功能,不需要用IPVS功能,所以请确保以下三项是yes就行了。
keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

编译并安装

make&&make install

2、将keepalived 以服务方式启动

创建/etc/keepalived目录并把keepalived的配置文件拷贝/etc/keepalived目录下并加入到开机启动。

mkdir /etc/keepalived
cp /data/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/ \
systemctl enable keepalived

3、 修改keepalived配置文件

! Configuration File for keepalived
global_defs {
notification_email {
lxc@lxc.com #这里是说keepalived有故障时给谁发送邮件
}
notification_email_from Alexandre.Cassen@firewall.loc #这里是当keepalived有问题时邮件的发送方,用不到一般
smtp_server 127.0.0.1 #邮件服务器的地址
smtp_connect_timeout 30
router_id keepalived01 #路由的id 一般写主机名
vrrp_skip_check_adv_addr
#vrrp_strict
vrrp_garp_interval 0
vrrp_gna_interval 0
}

vrrp_script chk_nginx {
script "/etc/keepalived/nginx_check.sh" # 检查nginx状态的脚本
interval 2
weight 3
}
vrrp_instance VI_1 {
state MASTER #注意这里主上写MASTER
interface ens192 //公网网卡
virtual_router_id 51 //主从服务器的这个id要一致
priority 100 #优先级越高,vip就在谁那
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
172.18.74.100 #虚拟ip,有多个vip可在下面继续增加
}
track_script { ## 将 track_script 块加入 instance 配置块
chk_nginx
}
}

备主机里的keepalived配置除了与上面注释里不同的其他一样

4、添加检查nginx状态的脚本

#!/bin/bash
A=ps -C nginx --no-header |wc -l
if [ $A -eq 0 ];then
/usr/local/nginx/sbin
sleep 3
if [ ps -C nginx --no-header |wc -l -eq 0 ];then
systemctl stop keepalived
fi
fi

**这里的ps -C nginx --no-header |wc -l是被反引号引起来的
重启keepalived

systemctl restart keepalived

输入命令ip a查看是否有vip

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

然后关闭master的keepalived

systemctl stop keepalived

查看backup上是否有vip
keepalived+nginx+apache+mysql实现高可用、负载均衡的网站
有说明配置成功
没有说明keepalived.conf存在问题
5 安装apache服务器

在两台web服务器上安装apache服务

yum install -y httpd

编辑默认页面

cd /var/www/html/
vim index.html

<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>产品添加-JD产品管理系统</title>
</head>
<body>
<h3>JD产品管理</h3>
<form action="deal.php" method="post" enctype="multipart/form-data">
图书名称:<input type='text' name='title' />
<hr />
销售价格:<input type="text" name='price' />
<hr />
市场价格:<input type="text" name='market_price' />
<hr />
<input type="submit" name="submit" value="添加" />
<input type="reset" name="reset" value="重置" />
</form>
</body>
</html>

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

同样在web2里安装apache并修改index.html
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html;charset=UTF-8" />
<title>产品添加-JD产品管理系统</title>
</head>
<body>
<h3>web2_JD产品管理</h3>
<form action="deal.php" method="post" enctype="multipart/form-data">
图书名称:<input type='text' name='title' />
<hr />
销售价格:<input type="text" name='price' />
<hr />
市场价格:<input type="text" name='market_price' />
<hr />
<input type="submit" name="submit" value="添加" />
<input type="reset" name="reset" value="重置" />
</form>
</body>
</html>

keepalived+nginx+apache+mysql实现高可用、负载均衡的网站

然后开启两台web服务器上的apache

systemctl start httpd

通过浏览器访问vip
可以看到web1的页面,再次刷新会出现web2的页面
因为在nginx的配置为你教案中设置的web1和web2的权重为100:80
所以每访问180次会出现100次web1,80次web2

下一篇我们讲《keepalived+nginx+mysql的高可用负载均衡配置》。

转载于:https://blog.51cto.com/13670314/2361344

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_844984.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cors_test(批量测试网站是否存在CORS劫持)

该脚本用于批量测试是否存在CORS劫持&#xff0c;只有当Access-Control-Allow-Origin为baidu.com时才存在&#xff0c;否则需要在Access-Control-Allow-Origin域下才可劫持。 环境&#xff1a;Python3 使用&#xff1a;python3 cors_test.py url.txt 漏洞存在的会放入当前目录下…

分享12个非常好的免费矢量资源网站(转)

http://www.cnblogs.com/lhb25/archive/2011/04/08/2003802.html 在工作中&#xff0c;Web设计师经常需要到网上查找一些免费资源以更快更好的完成设计任务。这些资源都是到用时方恨少啊&#xff0c;所以今天本文与大家分享12个非常好的免费矢量资源网站&#xff0c;大家可收藏…

[转载]HTTP Caching 优化网站

HTTP Caching 用好了&#xff0c;可以极大的减小服务器负载和减少网络带宽。十分有必要深入了解下 http 的 caching 协议。 先来看下请求/响应过程&#xff1a; http 请求/响应 1、用 Last-Modified 头 在第一次请求的响应头返回 Last-Modified 内容&#xff0c;时间格式如&…

在一个电商网站里面如何修改商品状态大致思路

在一个电商网站里面想要修改商品的状态&#xff0c;需要做以下的步骤&#xff1a; 1.在相关JSP页面中执行$.get方法&#xff0c;把三个参数传进去&#xff0c;一个是地址&#xff0c;一个是id&#xff0c;最后一个是回调方法&#xff0c;写完后再去Controller页面&#xff0c;这…

电商网站需要了解的SPU,SKU之间的关系,以及需要编写商品品类,商品参数组,商品参数表之间的关系和业务逻辑

什么是SPU&#xff1f;什么是SKU&#xff1f; 我们做电商网站有两个概念&#xff0c;特别要清楚&#xff0c;就是商品规格参数里面的SPU和SKU。为什么要熟悉这两个呢&#xff1f;因为商品的种类繁多&#xff0c;我们要去储存商品信息的话&#xff0c;就需要用商品数据结构方法…

多个项目如何往不同的git网站提交代码

背景:工作和自用的git地址可能是不一样的&#xff0c;这样我们需要配置一下&#xff0c;以达到不同项目往不同git网址的仓库提交代码的能力 1、生成密钥 首先要做的就是取配置两个不同的sshkey(生成两种不同的密钥文件) ##工作用的git账号邮箱地址 $ ssh-keygen -t rsa -C x…

网站视频下载及按帧转为jpg

网站视频下载及按帧转为jpg 1、准备切割视频 切割 clc; clear; %读取视频 video_file‘D:\1.mp4’; objVideoReader(video_file); frame_numobj.NumberOfFrames;%一共有多少帧 % 分离图片 for i1:15%读取前15帧 imgstrcat(‘D:\picture’,num2str(i)); imgstrcat(img,’.jpg’…

如何优雅的制作表白网站和罗盘时钟

如何优雅的制作表白网站和罗盘时钟前言 GitHub 是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持 Git 作为唯一的版本库格式进行托管&#xff0c;故名 GitHub。 GitHub 于 2008 年 4 月 10 日正式上线&#xff0c;除了 Git 代码仓库托管及基本的 Web 管理界面以…

lol服务器维护是拳头,问拳头-英雄联盟官方网站-腾讯游戏

欢迎来到问拳头专栏。在此我们将针对各位所提出的问题进行解答。本周我们将聊到Reddit&#xff0c;4K以及召唤师技能。大家将在下方看到三个现成问题和回复&#xff0c;并且每周都会有全新的问题得到我们的答复。大家可以随意在评论当中联系我们。每位解答问题的Rioter都会尽其…

mtk有关的不错网站

http://blog.sina.com.cn/mtkshanghai MTK http://blog.sina.com.cn/shanghaimtk

【实战案例】——实战渗透某不法网站

作者名&#xff1a;Demo不是emo 主页面链接&#xff1a;主页传送门 创作初心&#xff1a;舞台再大&#xff0c;你不上台&#xff0c;永远是观众&#xff0c;没人会关心你努不努力&#xff0c;摔的痛不痛&#xff0c;他们只会看你最后站在什么位置&#xff0c;然后羡慕或鄙夷座…

什么是域名?什么网站名?什么是URL

域名 通常有一串字符和后缀组成&#xff0c;常见的后缀有&#xff0c;com&#xff0c;net&#xff0c;cn&#xff0c;相对于ip或者别名地址来说&#xff0c;域名更好记&#xff0c;机器世界根据IP地址来定位主机&#xff0c;访问网页等资源 但是记住域名是不包括www滴&#x…

从单机至亿级流量大型网站系统架构的演进过程介绍

阶段一、单机构建网站 网站的初期&#xff0c;经常会在单机上跑所有的程序和软件。此时使用一个容器&#xff0c;如tomcat、jetty、jboos&#xff0c;然后直接使用JSP/servlet技术&#xff0c;或者使用一些开源的框架如mavenspringstructhibernate、mavenspringspringmvcmybat…

使用selenium爬取某出试卷的网站

from selenium import webdriver import pymongo import json import time import re # 使用终极武器了.# 修改头文件&#xff0c;防止被识别为爬虫 from selenium.webdriver.common.desired_capabilities import DesiredCapabilitiesclass Zujuan(object):def __init__(self):…

使用python3登陆12306网站

一、一些用到的技术1.1解析验证码&#xff08;联众-收费&#xff0c;两分钱一个&#xff09;验证码识别设计机器学习&#xff0c;没有耗费时间去实现&#xff0c;所以采用了第三方&#xff08;联众&#xff09;的在线打码&#xff0c;注册充值便可使用&#xff0c;识别率挺高的…

如何突破网站对selenium的屏蔽

使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案&#xff0c;它通吃各种数据加载方式&#xff0c;能够绕过客户JS加密&#xff0c;绕过爬虫检测&#xff0c;绕过签名机制。它的应用&#xff0c;使得许多网站的反采集策略形同虚设。由于selenium不会在HTTP请…

免费图床网站推荐

免费图床网站推荐 聚合图床-推荐使用 官网地址&#xff1a;https://www.superbed.cn 简介&#xff1a;将图片分发到多处备份&#xff0c;借助其本身的CDN加速功能&#xff0c;节省服务器流量&#xff0c;并且不用担心图片被删除&#xff0c;即便其中某几个图床上的图片被删除…

新手上路--分享20个无版权的高清图库素材网站

今天这组网站比较有特色&#xff0c;有专门分享美食图片的&#xff0c;有专门分享复古图片的&#xff0c;各领风骚&#xff0c;质量都是一顶一的棒。下面就是20个无版权的高清无码图库站&#xff0c;记得收藏啊。Compfight Compfight 是一个图片搜索引擎&#xff0c;帮你快速找…

12佳精美的国外 Flash 网站模板下载(附源文件)

本文收集了12佳精美的国外Flash网站模板&#xff0c;附带源文件下载。Flash网站页面美观&#xff0c;互动性强&#xff0c;可以声形并茂&#xff0c;实现普通的HTML网站不能制造出的质感和动作&#xff0c;特别是动态的视觉特果&#xff0c;能给人以震撼视听的效应。下面这些免…

JiaThis社区分享按钮的使用,提升网站访问流量

JiaThis社区分享按钮的使用&#xff0c;提升网站访问流量 分享按钮样式&#xff1a; 在你页面上所需要的位置加上代码&#xff1a; <!-- JiaThis Button BEGIN --> <span class"jiathis_style"><span class"jiathis_txt">分享到&#…