1. Keepalived安装配置

1.1 官网下载tar包

https://www.keepalived.org/

1.2 上传到指定目录安装

./configure --prefix=/usr/local/keepalived --sysconf=/etc

*** WARNING - this build will not support IPVS with IPv6. Please install libnl/libnl-3 dev libraries to support IPv6 with IPVS.

如果出现上述提示,则执行下面命令安装libnl:
yum install -y libnl make && make install

1.3 配置文件

cd /etc/keepalived
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf

配置文件内容如下:

! Configuration File for keepalived
#全局配置
global_defs {
# 负载均衡标识,在局域网内应该是唯一的。一般为主机名。
router_id 主机名称
} vrrp_script chk_http_port {
# 检测心跳执行的脚本
script "/usr/local/src/nginx_check.sh"
# 检测脚本执行间隔,单位:秒
interval 4
weight 2
} #定义实例
vrrp_instance VI_1 {
# 指定keepalived的角色,MASTER为主,BACKUP为备
state MASTER
# 当前进行vrrp通讯的网络接口卡(当前centos的网卡)
interface ens33
# 指定VRRP实例ID(虚拟路由编号),范围是0-255,主从要一致
virtual_router_id 202
# 优先级,数值越大,获取处理请求的优先级越高, 优先级高的将成为MASTER。
priority 100
# 指定发送VRRP通告的间隔,默认为1s(vrrp组播周期秒数)
advert_int 1
# 设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
authentication {
# 指定认证方式。PASS简单密码认证(推荐),AH:IPSEC认证(不推荐)。
auth_type PASS
# 指定认证所使用的密码。最多8位。
auth_pass 2020
}
# 调用检测脚本
track_script {
chk_http_port
}
# 定义虚拟ip(VIP),可多设,每行一个
virtual_ipaddress {
192.168.199.143
}
}

1.4 配置nginx检测脚本文件

cd /usr/local/src
vim nginx_check.sh

脚本内容:

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

1.5 keepalived 启动/重启/停止/查看状态

systemctl start/restart/stop/status keepalived

注:启动keepalived会执行nginx检测脚本,此时如果nginx未启动则会同时启动nginx。

1.6 查看日志

tail -f /var/log/messages

1.7 浏览器访问虚拟IP地址

192.168.199.143

2. nginx负载均衡配置

worker_processes  1;

events {
worker_connections 1024;
} http {
include mime.types;
default_type application/octet-stream; sendfile on;
keepalive_timeout 65; upstream minio-server {
# weight:默认为1。weight越大,负载的权重就越大。
# backup:其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。
# max_fails:允许请求失败的次数默认为1,当超过最大次数时,返回 proxy_next_upstream 模块定义的错误。
# fail_timeout:Nginx基于连接探测,如果发现后端异常,在单位周期为fail_timeout设置的时间中达到max_fails次数,这个周期次数内,如果后端同一个节点不可用,那么把节点标记为不可用,并等待下一个周期(同样时常为fail_timeout)再一次去请求,判断是否连接是否成功。
server 192.168.199.140:9000 weight=2 max_fails=3 fail_timeout=10s;
server 192.168.199.141:9000 max_fails=3 fail_timeout=30s;
}
server {
listen 80;
server_name 192.168.199.143; charset utf-8; location / {
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-For $remote_addr;
# 传输文件缓存大小及单次请求大小
client_body_buffer_size 10M;
client_max_body_size 1G;
# 宕机检测,如果设置时间内无响应,则直接切换到其它服务
proxy_connect_timeout 4;
proxy_send_timeout 4;
proxy_read_timeout 4; proxy_pass http://minio-server;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
}

此配置下 nginx + keepalived 在多台服务器上搭建,可以实现高可用负载均衡。

keepalived安装及组合nginx配置负载实现高可用的更多相关文章

  1. Keepalived+Nginx实现负载均衡高可用

    一.负载均衡高可用 Nginx作为负载均衡器,所有请求都到了Nginx,可见Nginx处于非常重点的位置,如果Nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了避免负载均衡服务器的宕机 ...

  2. 全面掌握Nginx配置+快速搭建高可用架构 一 Centos7 安装Nginx

    Nginx官网 http://nginx.org/en/linux_packages.html#stable 配置yum 在etc的yum.repos.d目录下新增nginx.repo 将内容copy ...

  3. 全面掌握Nginx配置+快速搭建高可用架构 一 Nginx的访问控制

    语法 示例 allow 127.0.0.1; deny all; 缺点:局限性 如果通过代理就可以绕过访问限制,限制不准确 解决 1. http_x_forwarded_for 2. 结合geo模块作 ...

  4. 全面掌握Nginx配置+快速搭建高可用架构 一 random_index_module 随机主页

    修改default.conf 保存重载Nginx,完成配置 自动随机选择主页 string要替换的内容,replacement表示替换后的内容 示例 效果,只替换了第一个 如果要替换所有的,需要用到s ...

  5. 全面掌握Nginx配置+快速搭建高可用架构 一 开启status页面检测服务状态

    输入命令Nginx -V 打开conf.d/default.conf 配置模块,配置位置在server或者location 配置完成后测试语法正确 nginx -tc /etc/nginx/nginx ...

  6. 全面掌握Nginx配置+快速搭建高可用架构 一 Nginx请求限制

    三次握手细节 语法: key为分配空间的关键字,以及分配空间的大小 示例: 压力测试工具ab

  7. Nginx+keepalived实现负载均衡高可用配置

    1. 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务,影响严重. 为了屏蔽负载均衡服务 ...

  8. Nginx+Keepalived负载均衡高可用

    Nginx+Keepalived负载均衡高可用方案: Nginx 使用平台:unix.linux.windows. 功能: A.www web服务  http 80 b.负载均衡(方向代理proxy) ...

  9. JAVAEE——宜立方商城03:Nginx负载均衡高可用、Keepalived+Nginx实现主备

    1 nginx负载均衡高可用 1.1 什么是负载均衡高可用 nginx作为负载均衡器,所有请求都到了nginx,可见nginx处于非常重点的位置,如果nginx服务器宕机后端web服务将无法提供服务, ...

随机推荐

  1. 010_HTML5

    目录 初识HTML 什么是HTML HTML发展史 HTML5的优势 W3C标准 常见IDE IDEA开发HTML IDEA创建HTML文件,并用浏览器打开 配置浏览器 HTML基础 HTML基本结构 ...

  2. JS输出为[object object]

    问题描述:在控制台打印时应输出对象,但是却输出[object object] 解决办法:先将数据转换为json格式,然后再转换为json对象 JSON.parse(JSON.stringify(use ...

  3. 后端程序员之路 50、Go语言开发环境

    Downloads - The Go Programming Languagehttps://golang.org/dl/ - windows下的开发环境    - 下载go1.8.1.windows ...

  4. 后端程序员之路 10、gbdt(Gradient Boosting Decision Tree)

    1.GbdtModelGNode,含fea_idx.val.left.right.missing(指向left或right之一,本身不分配空间)load,从model文件加载模型,xgboost输出的 ...

  5. JWT原理及常见攻击方式

    JWT的全称是Json Web Token.它遵循JSON格式,将用户信息加密到token里,服务器不保存任何用户信息,只保存密钥信息,通过使用特定加密算法验证token,通过token验证用户身份. ...

  6. cat常用参数

    cat 命令格式 cat [选项] [文件] -A, --show-all:等价于 -vET. -b  --number-nonblank:和 -n 相似,只不过对于空白行不编号. -e:等价于&qu ...

  7. C++入门(3):C++开发环境搭建

    本文首发 | 公众号:lunvey 既然开始学C++,电脑上应该具备它的开发环境. 而C++历史,lunvey老师觉得:初学者有兴趣可以自行了解一下,不是必要的. 大家都在用最新款的苹果手机,好用就行 ...

  8. 剑指 Offer 32 - III. 从上到下打印二叉树 III + 双端队列使用 + 蛇形打印层次遍历序列 + 正倒序输出

    剑指 Offer 32 - III. 从上到下打印二叉树 III Offer_32_3 题目详情 题解分析 本题我想的比较复杂,其实题目的要求只是需要遍历的结果逆序和正序交替,这个其实可以使用Coll ...

  9. Python的web开发

    一.Web开发 Tcp   udp       Cs即客户端.服务器端编程,客户端和服务器端之间需要使用socket,约定协议.版本(协议使用的是tcp或者udp).Tcp协议和udp协议,指定地址和 ...

  10. java中==和equals()方法

    java 程序中测试两个变量是否相等有两种方法: == equals()方法 当使用==判断两个变量是否相等时,如果两个变量是基本类型变量,且都是数值类型(不一定要求数据类型严格相同),则只要两个变量 ...