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

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

相关推荐
yzx9910133 小时前
生活在数字世界:一份人人都能看懂的网络安全生存指南
运维·开发语言·网络·人工智能·自动化
橙*^O^*安4 小时前
Go 语言基础:变量与常量
运维·开发语言·后端·golang·kubernetes
阿拉斯加大闸蟹6 小时前
基于RDMA 通信的可负载均衡高性能服务架构
运维·架构·负载均衡
2301_780789666 小时前
渗透测试真的能发现系统漏洞吗
服务器·网络·安全·web安全·网络安全
清风徐来QCQ6 小时前
阿里云centos7-mysql的使用
mysql·阿里云·云计算
不是吧这都有重名6 小时前
为什么ubuntu大文件拷贝会先快后慢?
linux·运维·ubuntu
sunshine-sm7 小时前
CentOS Steam 9安装 Redis
linux·运维·服务器·redis·centos
棒棒的唐8 小时前
armbian平台ubuntu环境下telnet安装及启动,给pantherX2增加一个应急通道
linux·运维·armbian·telnetd
纳切威8 小时前
CentOS 7部署Zabbix5.0
linux·运维·centos·zabbix
sunshine-sm8 小时前
CentOS Steam 9安装 MySQL 8
linux·运维·服务器·数据库·mysql·centos·centos stream