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的访问也是不受影响的!!

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

相关推荐
yaoxin52112333 分钟前
第十二章 I 开头的术语
运维·服务器
ProgramHan35 分钟前
1992-2025年中国计算机发展状况:服务器、电脑端与移动端的演进
运维·服务器·电脑
佛州小李哥4 小时前
通过亚马逊云科技Bedrock打造自定义AI智能体Agent(上)
人工智能·科技·ai·语言模型·云计算·aws·亚马逊云科技
马立杰4 小时前
H3CNE-33-BGP
运维·网络·h3cne
Linux运维老纪4 小时前
DNS缓存详解(DNS Cache Detailed Explanation)
计算机网络·缓存·云原生·容器·kubernetes·云计算·运维开发
云空5 小时前
《DeepSeek 网页/API 性能异常(DeepSeek Web/API Degraded Performance):网络安全日志》
运维·人工智能·web安全·网络安全·开源·网络攻击模型·安全威胁分析
没有名字的小羊6 小时前
Cyber Security 101-Build Your Cyber Security Career-Security Principles(安全原则)
运维·网络·安全
m0_465215796 小时前
TCP & UDP Service Model
服务器·网络·tcp/ip
千夜啊6 小时前
Nginx 运维开发高频面试题详解
运维·nginx·运维开发
存储服务专家StorageExpert7 小时前
答疑解惑:如何监控EMC unity存储系统磁盘重构rebuild进度
运维·unity·存储维护·emc存储