NGINX负载均衡及LVS-DR负载均衡集群

目录

  • LVS-DR原理
  • 搭建过程
  • nginx 负载均衡

LVS-DR原理

原理
1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间
2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链
3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群
服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP
地址及端口,并将新的数据包发往POSTROUTING链
4. POSTROUTING链接收数据包后发现目标IP地址刚好是自己的后端服务器,那么此时通过选路,将
数据包最终发送给后端的服务器

组成:
LVS架设的服务器集群系统有三个部分组成:最前端的负载均衡层,用Load Balancer表示,中间的服务器群组层,用Server Array表示,最底端的数据共享存储层,用Shared Storage表示。

搭建过程

192.168.190.200 作为调度器director
192.168.190.201 为web服务器1
192.168.190.202 为web服务器2
192.168.190.128 为客户端
1,安装工具ipvsadm

yum install ipvsadm

2,配置LVS虚拟IP(VIP)

ifconfig ens33:200 192.168.190.200 netmask 255.255.255.0 up

3,手工执行配置添加LVS服务并增加两台RS

ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 192.168.190.200:80 -s wrr -p 20
ipvsadm -a -t 192.168.190.200:80 -r 192.168.190.201:80 -g -w 1
ipvsadm -a -t 192.168.190.200:80 -r 192.168.190.202:80 -g -w 1ipvsadm-save > /etc/sysconfig/ipvsadm

各个参数含义

            -A  添加虚拟服务器-t  设置群集地址(VIP,Virtual IP)-s  指定负载调度算法-a  添加真实服务器-d  删除真实服务器-r  指定真实服务器(Real Server)的地址-m  使用NAT模式;-g、-i分别对应DR、TUN模式-w  为节点服务器设置权重,默认为1

4, 查看配置信息

[root@localhost ~]# ipvsadm -L
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost.localdomain:http wrr persistent 20-> 192.168.190.201:http         Route   1      0          0         -> 192.168.190.202:http         Route   1      0          0 

5,手工在RS端绑定VIP

每台real server端执行201上的操作
ifconfig lo:200 192.168.190.200 netmask 255.255.255.255 up
route add -host 192.168.190.200 dev lo
202上的操作
ifconfig lo:200 192.168.190.200 netmask 255.255.255.255 up
route add -host 192.168.190.200 dev lo

6,手工在RS端抑制ARP响应

每台real server端执行
调整内核参数,关闭arp响应

echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore 
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce

测试结果:需要等待一段时间再刷新就会变成201

在这里插入图片描述

nginx 负载均衡

准备机器:

负载均衡器:192.168.190.132
web1服务器: 192.168.190.128
web2服务器: 192.168.190.134
所有的机器需要安装NGINX服务

步骤:
1,在负载均衡器上

打开配置文件写入内容

vim /etc/nginx/nginx.conf
在http 区块里面新增以下内容
upstream pool1 {       # 负载均衡池,里面记录的是要转发到的服务器server 192.168.190.128:80 weight=1;     # 主机及权重值server 192.168.190.134:80 weight=1;}server {listen 80;   # 监听端口server_name www.fuzaijunheng.com;location / {proxy_pass http://pool1;  # 当访问到www.fuzaijunheng.com 时将会转发到 负载均衡池}}

2,在web1服务器上

打开配置文件写入如下:

vim /etc/nginx/nginx.conf
在http 区块里面新增以下内容:server {listen       80;server_name  192.168.190.128;location / {root    /usr/share/nginx/html1;    # 访问的目录index   index.html;   # 需要寻找的类型}然后创建目录写入数据
mkdir /usr/share/nginx/html1
echo web1 > /usr/share/nginx/html1/index.html

3,在web2服务器上

打开配置文件写入如下:

vim /etc/nginx/nginx.conf
在http 区块里面新增以下内容:server {listen       80;server_name  192.168.190.134;location / {root    /usr/share/nginx/html1;    # 访问的目录index   index.html;   # 需要寻找的类型}然后创建目录写入数据
mkdir /usr/share/nginx/html1
echo web2 > /usr/share/nginx/html1/index.html

最后,重启3台机器
4,域名写入解析文件

echo 192.168.190.132 www.fuzaijunheng.com >> /etc/hosts

5,在负载均衡器上测试

[root@localhost ~]# for((i=0;i<6;i++)); do curl www.fuzaijunheng.com; done
web1
web2
web1
web2
web1
web2

以上就测试成功了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/68872.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

grafana 的 ws websocket 连接不上的解决方式

使用了多层的代理方式&#xff0c;一层没有此问题 错误 WebSocket connection to ‘wss://ip地址/grafana01/api/live/ws’ failed: 日志报错 msg“Request Completed” methodGET path/api/live/ws status403 解决方式 # allowed_origins is a comma-separated list of o…

基于Java+SpringMVC+Mybaties+layui+Vue+elememt基于协同过滤的电影推荐系统的设计与实现

一.项目介绍 基于协调过滤的电影推荐系统的设计与实现 本系统分为普通用户以及管理员两类 普通用户&#xff1a; 登录系统查看最新推荐电影、收藏、评论、查看电影信息、 对电影进行评分、浏览电影资讯信息、查看个人信息以及浏览收藏…

二.net core 自动化发布到docker (Jenkins安装之后向导)

目录 ​​​​​​​​​​​​​​ 参考资料&#xff1a;https://www.jenkins.io/doc/book/installing/docker/#setup-wizard Post-installation setup wizard.(安装后安装向导) 基于上一篇文章安装&#xff0c;在安装并运行Jenkins&#xff08;不包括使用Jenkins Opera…

同步、异步、协程

目录 同步异步https 异步请求&#xff1a; 协程1.为什么会要协程?2.异步的运行流程是什么3.协程的原语操作4.协程的定义?5.调度器的定义?6.调度的策略?7. api封装, hook8.多核的模式?9.协程的性能?10.要有哪些案例?nty_servernty_ mysql_client.cnty_ mysql oper.cnty_ …

网络编程555

上传代码 #include <stdio.h>//客户端 #include <string.h> #include <stdlib.h> #include<sys/types.h> #include<sys/socket.h> #include<arpa/inet.h> #include<head.h> #define PORT 69 #define IP "192.168.124.57"…

【C++面向对象】--- 继承 的奥秘(下篇)

个人主页&#xff1a;平行线也会相交&#x1f4aa; 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 平行线也会相交 原创 收录于专栏【C之路】&#x1f48c; 本专栏旨在记录C的学习路线&#xff0c;望对大家有所帮助&#x1f647;‍ 希望我们一起努力、成长&…

SpringCloud中 Sentinel 限流的使用

引入依赖 <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId> </dependency>手动编写限流规则&#xff0c;缺点是不够灵活&#xff0c;如果需要改变限流规则需要修改源码…

【Linux】【驱动】杂项设备驱动

【Linux】【驱动】杂项设备驱动 Linux三大设备驱动1. 我们这节课要讲的杂项设备驱动是属于我们这三大设备驱动里面的哪个呢?2.杂项设备除了比字符设备代码简单&#xff0c;还有别的区别吗?3.主设备号和次设备号是什么? 挂载驱动 杂项设备驱动是字符设备驱动的一种&#xff0…

时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)

时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测) 目录 时序预测 | Python实现LSTM长短期记忆网络时间序列预测(电力负荷预测)效果一览基本描述模型结构程序设计参考资料效果一览

C语言暑假刷题冲刺篇——day1

目录 一、选择题 二、编程题 &#x1f388;个人主页&#xff1a;库库的里昂 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏✨收录专栏&#xff1a;C语言每日一练 ✨其他专栏&#xff1a;代码小游戏C语言初阶&#x1f91d;希望作者的文章能对你…

EthGlobal 巴黎站 Chainlink 获奖项目介绍

在 Web3 中&#xff0c;每一周都至关重要。项目的发布、版本的发布以及协议的更新以惊人的速度推出。开发者必须保持学习&#xff0c;随时了解最新的工具&#xff0c;并将所有他们所学的东西&#xff08;无论是旧的还是新的&#xff09;联系起来&#xff0c;以构建推动 Web3 技…

ide internal errors【bug】

ide internal errors【bug】 前言版权ide internal errors错误产生相关资源解决1解决2 设置虚拟内存最后 前言 2023-8-15 12:36:59 以下内容源自《【bug】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客主页是h…