day14.5

nginx四层负载

什么是四层负载

1.OSI七层模型中,四层是传输层,传输层使用端口的通信方式
2.四层负载均衡,就是在传输层的转发(端口映射)

四层负载应用场景

1.四层+七层来做负载均衡,四层可以保证七层负载的高可用性,如:nginx就无法保证自己的服务高可用,需要依赖lvs或者keepailve
2.tcp协议的负载均衡,有些请求是TCP协议的(MySQL、ssh),或者说这些请求只需要使用四层进行端口的转发就可以了,所以使用四层负载。

nginx四层负载

负载均衡软件

# nginx
1.四层负载(模块名:stream)

2.七层负载(upstream)

# lvs
1.四层负载

# haproxy
1.四层负载
2.七层负载

四层负载均衡配置

环境准备

主机名 wanip lanip 角色 应用
lb01 10.0.0.5 172.16.1.5 七层负载 nginx
lb02 10.0.0.6 172.16.1.6 四层负载 nginx
web01 10.0.0.7 172.16.1.7 web网站 nginx、php
web02 10.0.0.8 172.16.1.8 web网站 nginx、php
db01 10.0.0.51 172.16.1.51 数据库 mariadb

部署四层负载

# 1.添加nginx官方源
[root@lb02 ~]# vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true

# 2.安装nginx
[root@lb02 ~]# yum install -y nginx

# 3.配置四层负载
[root@lb02 ~]# vim /etc/nginx/nginx.conf 
写在http层上面
stream {
    upstream backend {
        server 172.16.1.5:80;
    }
    server {
            listen 90;
            proxy_pass backend;
    }
}

使用stream做端口转发

实现22端口转发

# 1.在10.0.0.6机器上开456端口,映射10.0.0.8的22端口
ssh 10.0.0.6 -p 456

# 2.主配置文件.添加include
[root@lb02 ~]# vim /etc/nginx/nginx.conf 
写在http层上面
stream {
    upstream backend {
        server 172.16.1.5:80;
    }
    server {
            listen 90;
            proxy_pass backend;
    }
}

# 2.实现456映射22端口需求
[root@lb02 stream.d]# vim 456_22.conf

stream {
        upstream web02_ssh {
                server 172.16.1.8:22;
        }
        server {
                listen 456;
                proxy_pass web02_ssh;
        }
        upstream backend {
                server 172.16.1.8:80;
        }
        server {
                listen 90;
                proxy_pass backend;
        }
}

映射数据库端口

# 在四层负载上编写配置文件
[root@lb02 stream.d]# vim 456_22.conf

stream {
        upstream web02_ssh {
                server 172.16.1.8:22;
        }
        server {
                listen 456;
                proxy_pass web02_ssh;
        }
        upstream backend {
                server 172.16.1.8:80;
        }
        server {
                listen 90;
                proxy_pass backend;
        }
}

# 在测试web上下载数据库
[root@web01 ~]# yum install -y mariadb

# 检测
[root@web01 ~]# mysql -uwp_user -p111 -h10.0.0.6 -P3307

posted @   Gabydawei  阅读(42)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
点击右上角即可分享
微信分享提示