LVS-DR集群及NGINX负载均衡

news/2024/7/10 0:02:39 标签: lvs, 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
1、安装ipvsadm工具

yum install ipvsadm -y

 2、配置虚拟ip

ifconfig ens33:200 192.168.190.150 netmask 255.255.255.0 up

3、手动添加两台RS

ipvsadm -C
ipvsadm --set 30 5 60
ipvsadm -A -t 192.168.190.200:80 -s rr -p 20
ipvsadm -a -t 192.168.190.200:80 -r 192.168.190.201:80 -g 
ipvsadm -a -t 192.168.190.200:80 -r 192.168.190.202:80 -g 

ipvsadm-save > /etc/sysconfig/ipvsadm

查看配置信息
[root@node1 ~]# 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 

 4、给两台RS修改配置文件

RS1上执行
ifconfig lo:200 192.168.190.200 netmask 255.255.255.255 up
route add -host 192.168.190.200 dev lo
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
RS2上执行
ifconfig lo:200 192.168.190.200 netmask 255.255.255.255 up
route add -host 192.168.190.200 dev lo
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

NGINX负载均衡

1、准备1台服务主机,两台web服务器

 服务主机

192.168.121.135

web服务器

192.168.121.140

192.168.121.150

在服务主机上修改配置文件

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

 在两台web服务器上,添加一下内容:

在192.168.121.140上
vim /etc/nginx/nginx.conf
在http 区块里面新增以下内容:

server {
    listen       80;
    server_name  192.168.121.140;
    location / {
            root    /usr/share/nginx/html1;    # 访问的目录
            index   index.html;   # 需要寻找的类型
    }
    
然后创建目录写入数据
mkdir /usr/share/nginx/html1
echo web1 > /usr/share/nginx/html1/index.html

在192.168.121.150上
vim /etc/nginx/nginx.conf
在http 区块里面新增以下内容:

server {
    listen       80;
    server_name  192.168.121.150;
    location / {
            root    /usr/share/nginx/html1;    # 访问的目录
            index   index.html;   # 需要寻找的类型
    }
    
然后创建目录写入数据
mkdir /usr/share/nginx/html1
echo web2 > /usr/share/nginx/html1/index.html

在服务主机上添加域名解析文件

echo "192.1668.121.135 www.web.com" >> /etc/hosts

测试:

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


http://www.niftyadmin.cn/n/4935914.html

相关文章

pg使用sql将文本字符串转换成时间格式

使用 PostgreSQL 数据库的 SQL 查询语句将文本字符串转换为时间格式&#xff0c;可以使用 to_timestamp 函数。 假设您的文本字符串时间格式为 “yyyy-MM-dd HH:mm:ss”&#xff0c;您可以使用以下 SQL 查询来转换&#xff1a; SELECT to_timestamp(2023-08-13 19:05:22, YYY…

数据结构-队列的实现(C语言版)

前言 队列是一种特殊的线性表&#xff0c;它只允许在一端对数据进行插入操作&#xff0c;在另一端对数据进行删除操作的特殊线性表&#xff0c;队列具有先进先出的&#xff08;FIFO&#xff09;的 特性&#xff0c;进行插入操作的一端称为队尾&#xff0c;进行删除操作的一端称…

OpenCV基本操作——图像的基础操作

目录 图像的IO操作读取图像显示图像保存图像 绘制几何图形绘制直线绘制圆形绘制矩形向图像中添加文字效果展示 获取并修改图像中的像素点获取图像的属性图像通道的拆分与合并色彩空间的改变 图像的IO操作 读取图像 cv2.imread()import numpy as np import cv2 imgcv2.imread(…

R语言 列表中嵌套列名一致的多个数据框如何整合为一个数据框

在批量建模后容易得到list&#xff0c;list中的每个元素都是单个的tibble 或者 dataframe&#xff0c;如何将这些数据整合为一张表呢&#xff1f; 载入R包 library(broom) library(tidyverse) 模拟数据 models <- txhousing %>% group_by(city) %>% do(modlm(lo…

Vue day02 Computed和Watch

1.事件绑定 可以用 v-on 指令监听DOM 事件&#xff0c;并在触发时运行一些 JavaScript 代码。v-on 还可以接收一个需要调用的方法名称。 <button v-on:click"handler">good</button> methods: { handler: function (event) { if (event) { alert(event.t…

华为OD面试(部分)

笔试与性格测验 一面 问题和算法题都挺简单的 二面 Java内存泄漏 算法题思路不对&#xff0c;没写完只说了下思路&#xff1a;Leetcode516. Longest Palindromic Subsequence hr面&#xff08;资面&#xff09; 最后告诉我hr面挂了。其实这不是最重要的&#xff0c;因为还…

hive高频使用的拼接函数及“避坑”

hive高频使用的拼接函数及“避坑” 说到拼接函数应用场景和使用频次还是非常高&#xff0c;比如一个员工在公司充当多个角色&#xff0c;我们在底层存数的时候往往是多行&#xff0c;但是应用的时候我们通常会只需要一行&#xff0c;角色字段进行拼接&#xff0c;这样join其他…

PHP8的字符串操作1-PHP8知识详解

字符串是php中最重要的数据之一&#xff0c;字符串的操作在PHP编程占有重要的地位。在使用PHP语言开发web项目的过程中&#xff0c;为了实现某些功能&#xff0c;经常需要对某些字符串进行特殊的处理&#xff0c;比如字符串的格式化、字符串的连接与分割、字符串的比较、查找等…