Nginx七层的负载均衡使用keepalived实现高可用

目录

一、环境准备

二、两台nginx服务器作为代理服务器,配置nginx的负载均衡

三、Keepalived实现调度器

[Proxy-master 与 Proxy-slave机器同时操作安装](#Proxy-master 与 Proxy-slave机器同时操作安装)

备份配置文件

编辑主Proxy-master的配置文件

[编辑从 Proxy-slaver的配置文件](#编辑从 Proxy-slaver的配置文件)

[四、 启动KeepAlived(主备均启动)](#四、 启动KeepAlived(主备均启动))

五、测试


一、环境准备

主机清单

主机名 ip 系统 用途
Proxy-master 10.12.153.49 centos7 主负载
Proxy-slave 10.12.153.108 centos7 主备
Real-server1 10.12.153.113 Centos7 web1
Real-server2 10.12.153.115 centos7 Web2

1、关闭防火墙和selinux

2、更改主机名

3、域名解析

4、四台机器分别安装nginx,并启动

配置安装nginx_安装配置nginx-CSDN博客

详细过程可参考之前的文章

这里我们选择的是ngixn1.20.1版本

二、两台nginx服务器作为代理服务器,配置nginx的负载均衡

两台机器的配置完全一样

复制代码
vim /etc/nginx/nginx.conf

user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log notice;

pid /var/run/nginx.pid;

events {

worker_connections 1024;

}

http {

include /etc/nginx/mime.types;

default_type application/octet-stream;

log_format main 'remote_addr - remote_user $time_local "$request" '

'status body_bytes_sent "$http_referer" '

'"http_user_agent" "http_x_forwarded_for"';

access_log /var/log/nginx/access.log main;

sendfile on;

#tcp_nopush on;

keepalive_timeout 65;

#gzip on;

include /etc/nginx/conf.d/*.conf;

upstream backend {

server 10.12.153.113:80 weight=1 max_fails=3 fail_timeout=20s;

server 10.12.153.115:80 weight=1 max_fails=3 fail_timeout=20s;

}

server {

listen 80;

server_name localhost;

location / {

proxy_pass http://backend;

proxy_set_header Host host:proxy_port;

proxy_set_header X-Forwarded-For $remote_addr;

}

}

}

保存退出后

查看ngnix配置文件是否语法出错

复制代码
nginx -t

重新加载配置文件

复制代码
nginx -s reload

三、Keepalived实现调度器

注:主/备调度器均能够实现正常调度

  1. 主/备调度器安装软件

Proxy-master 与 Proxy-slave机器同时操作安装

复制代码
yum install -y keepalived

备份配置文件

复制代码
cp /etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf.bak

编辑主Proxy-master的配置文件

! Configuration File for keepalived

global_defs {

router_id directory1

}

vrrp_instance VI_1 {

state MASTER #定义主还是备

interface ens33 #VIP绑定接口

virtual_router_id 80 #整个集群的调度器一致

priority 100 #back改为50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.12.153.109/24 # keepalived提供的对外开放的vip

}

}

编辑从 Proxy-slaver的配置文件

Configuration File for keepalived

! Configuration File for keepalived

global_defs {

router_id directory2 #注意这里的id区别

}

vrrp_instance VI_1 {

state BACKUP #设置为backup

interface ens33

nopreempt #设置到back上面,不抢占资源

virtual_router_id 80

priority 50 #辅助改为50

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

10.12.153.109/24

}

}

四、 启动KeepAlived(主备均启动)

复制代码
systemctl enable keepalived

systemctl start keepalived

到此:

可以解决心跳故障keepalived

不能解决Nginx服务故障

五、测试

页面访问测试

我们正常访问为方便识别Real-server1和Real-server2页面是这样的

现在我们通过访问Keepalived我们定义的对外开放的vip的ip来看看

再来测试一下高可用

查看Proxy-master的ip

这时候 Proxy-slaver是没有这个vip的ip的处于备用状态

我们通过关闭Proxy-master服务器的keepalived服务查看vip的ip会不会漂移到 Proxy-slaver服务器

这样就算master宕机,通过高可用备成为新的主,我们对于Real-server1和Real-server2的访问也是不受影响的!!

希望能够帮助到大家!!!

相关推荐
光电笑映2 分钟前
进程间通信:深入 System V IPC:共享内存、消息队列与信号量
linux·运维·服务器·c++
RisunJan3 分钟前
Linux命令-patch (为开放源代码软件安装补丁程序)
linux·服务器·算法
向日葵.19 分钟前
linux & qnx & git 命令 2
linux·运维·git
睡不醒男孩03082319 分钟前
第四篇:数据库国产化与信创替代的守护者:基于CLup的异构数据库一站式运维平台构建
运维·数据库·金融·clup·中启乘数
Jonm20 分钟前
exsi系统使用storcli重组raid阵列(不停机)
运维·esxi·raid
极客先躯20 分钟前
高级java每日一道面试题-2026年02月04日-实战篇[Docker]-如何在容器之间共享数据?
java·运维·网络·docker·容器·自动化·高级面试题
程序猿小野21 分钟前
在阿里云服务器上安装Docker部署后台项目
阿里云·docker·云计算
Android系统攻城狮34 分钟前
Linux Pulseaudio深度解析之pa_context_set_sink_mute_by_index用流程与实战(四十七)
linux·运维·服务器·音频进阶·pulseaudio进阶
木白CPP40 分钟前
aarch64-linux-gnu* (gcc,ld,objcopy,objdump)工具总结
linux·运维·gnu
A.说学逗唱的Coke41 分钟前
【运维专题】playbooks保姆级使用指南
运维·开发语言·python