LVS-DR集群及NGINX负载均衡

LVS-DR集群

原理:

  1. 当用户向负载均衡调度器(Director Server)发起请求,调度器将请求发往至内核空间

  2. PREROUTING链首先会接收到用户请求,判断目标IP确定是本机IP,将数据包发往INPUT链

  3. IPVS是工作在INPUT链上的,当用户请求到达INPUT时,IPVS会将用户请求和自己已定义好的集群

服务进行比对,如果用户请求的就是定义的集群服务,那么此时IPVS会强行修改数据包里的目标IP

地址及端口,并将新的数据包发往POSTROUTING链

  1. 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工具

bash 复制代码
yum install ipvsadm -y

2、配置虚拟ip

bash 复制代码
ifconfig ens33:200 192.168.190.150 netmask 255.255.255.0 up

3、手动添加两台RS

bash 复制代码
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修改配置文件

bash 复制代码
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

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

bash 复制代码
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服务器上,添加一下内容:

bash 复制代码
在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

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

bash 复制代码
echo "192.1668.121.135 www.web.com" >> /etc/hosts

测试:

bash 复制代码
[root@node1 ~]# for((i=0;i<6;i++)); do curl www.web.com; done
web1
web2
web1
web2
web1
web2
相关推荐
lKWO OMET1 天前
查看 nginx 是否已经启动
运维·数据库·nginx
ywlovecjy1 天前
【Nginx 】Nginx 部署前端 vue 项目
前端·vue.js·nginx
hutengyi1 天前
四、nginx的优化和location匹配规则
运维·nginx
eEKI DAND1 天前
一个比 Nginx 还简单的 Web 服务器
服务器·前端·nginx
Watermelo6172 天前
理解 JavaScript 中的“ / ”:路径、资源与目录、nginx配置、请求、转义的那些事
前端·javascript·vue.js·chrome·nginx·正则表达式·seo
Cyber4K2 天前
【Nginx专项】高级进阶架构篇-Location、Rewrite及HTTPS
服务器·nginx·架构·https
博风2 天前
nginx:前后端分离常用配置
nginx
Gofarlic_oms12 天前
制定企业Citrix虚拟化软件资产管理政策框架
运维·服务器·开发语言·matlab·负载均衡
随风,奔跑2 天前
SpringCloudAlibaba(二)
java·spring·ribbon·负载均衡
七七powerful2 天前
Nginx 日志切割完全指南:从原理到生产实战
运维·nginx