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. 算法型稳定币USDN是如何保持稳定的?

    数据显示,2019年稳定币市场总市值25亿美元,在整个加密货币市场占比 1.3%.可别小瞧了看似微小的1.3%这个数据,它其实是一个庞大的市场.稳定币不仅仅是货币的电子化,它还是一种可编程的加密货币, ...

  2. BGV劝早买内存

    12月3日,BGV全球首发,上线AOFEX交易所(A网),全球区块链爱好者震惊.很多人争相抢挖BGV,希望能够及早获取BGV带来的红利.有趣的是,随着BGV抢挖人数的增多,NGK内存也迎来了暴涨,在1 ...

  3. DBA 的效率加速器——CloudQuery v1.3.0 上线!

    好久不见! 自 CloudQuery v1.2.1 发布至今,已有月余,在此期间我们收到了很多朋友对 CloudQuery 的反馈和建议,很多朋友表达了对 v1.3.0 的期待,非常感谢. Cloud ...

  4. 采用lua脚本获取mysql、redis数据以及jwt的校验

    一.安装配置Openresty 1,安装 wget https://openresty.org/download/ngx_openresty-1.9.7.1.tar.gz # 下载 tar xzvf ...

  5. Linux没有ens33解决方案

    一.前言 运行环境:window10+VMware14+Centos7 博主最近遇到一个比较郁闷的问题,在虚拟机上操作Linux系统查看IP的时候,发现没有ens33或者eth0了,试了很多办法都没有 ...

  6. 看完我的笔记不懂也会懂----ECMAscript 567

    目录 ECMAscript 567 严格模式 字符串扩展 数值的扩展 Object对象方法扩展 数组的扩展 数组方法的扩展 bind.call.apply用法详解 let const 变量的解构赋值 ...

  7. vue监听生命周期

    监听生命周期事件 内部监听声明周期函数 data() { return { monitor: null }; }, mounted() { this.monitor = setInterval(() ...

  8. 第01章-Java SE8的流库

    从迭代到流的操作 流表面上看起来和集合很类似,都可以让我们转换和获取数据,但是它们之间存在着显著的差异 流并不存储其元素,这些元素可能存储在底层的集合中,或者是按需生成的 流的操作不会修改其数据源 流 ...

  9. Java程序员必备后台前端框架--Layui【从入门到实战】(二)

    layui使用 导航菜单.选项卡 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] [编程工具:IDEA] 导航菜单 在layui官网中示例中,我们可以找到关于导航的例子: 我们点击查 ...

  10. Flask-SQLAlchemy使用

    Flask-SQLAlchemy 使用起来非常有趣,对于基本应用十分容易使用,并且对于大型项目易于扩展. 官方文档:https://flask-sqlalchemy.palletsprojects.c ...